Drupal 404页面漫谈

By admin |

背景

对生产环境运行的站点,随时会有攻击或者恶意访问的问题,不可避免。 但是能抗住访问而不会导致站点崩溃则是需要努力的方向。 针对Drupal站点,如果已经启用了page_cache模块,则会对页面html进行缓存,相关数据存储在cache_page表中。
对正常的url,这样没问题;如果是一个不存在的url,则也会在cache_page中插入记录,如果数据库空间较小,则很容易消耗完数据库的空间;如果数据库设置了主从复制,则也会创建很多额外的binlog,占用额外的空间。

解决方法

在settings.php设置如下:

## 系统默认设置的ttl是3600s,也就是一小时;配合cron可以自动清理并释放空间。
$settings['cache_ttl_4xx'] = 0;

参考代码

drupal 8/drupal 9 redis配置

By admin |

settings.php配置

$settings['redis.connection']['interface'] = 'PhpRedis';
$settings['redis.connection']['host']      = '10.10.10.10';
$settings['redis.connection']['port']      = '6379';
$settings['redis.connection']['password'] = "your-redis-password";
$settings['cache_prefix'] = '1h_prd';
$settings['cache']['default'] = 'cache.backend.redis';
$settings['cache']['bins']['bootstrap']    = 'cache.backend.chainedfast';
$settings['cache']['bins']['discovery']    = 'cache.backend.chainedfast';
$settings['cache']['bins']['config']    

Drupal 8 性能分析之统计运行时间

By admin |
use Drupal\Component\Utility\Timer;
Timer::start('test');
$file = file_get_contents('/var/www/html/web/sites/default/files/2020-11/timg.jpg');
dpm($file);
$base = base64_encode($file);
sleep(1);
$time = Timer::read('test');
dpm($time);
dpm($base);

MacOS Big Sur挂载ntfs,可读写删(命令行方式)

By admin |

背景

之前买了块1T的数据盘,用作windows数据备份,格式化为ntfs。现在想把这块盘挂载到Mac使用,但是挂载之后,只能读,不能写和删。 有些收费软件可以搞定这个事情,但是没去试用。 这里介绍命令行的方式,基于一些免费的开源工具。 该实践是基于Mac Big Sur;网上有很多资料都比较老,在最近的mac上安装会失败。本文步骤亲测实践可行。

阿里云OSS挂载到本地(MacOS)

By admin |
  1. 开通阿里云OSS,创建bucket
  2. 获得bucket的ID,AppID,AppSecret
  3. 安装s3fs(阿里云提供了ossfs,但是不支持mac)
brew install --cask macfuse
brew install gromgit/fuse/s3fs-mac
  1. 创建~/.passwd-s3fs,内容格式如下
[AppID]:[AppSecret]
  1. 创建本地文件夹
mkdir ~/oss
  1. 挂载
s3fs [bucket-id] ~/oss -o url=https://oss-cn-hangzhou.aliyuncs.com -o passwd_file=~/.passwd-s3fs -o use_cache=/tmp

  1. 使用 可以像本地文件一样将文件放入~/oss即可。

Drupal 8/Drupal 9配置文件settings.php进阶

By admin |

Drupal http client使用代理抓取墙外数据

$settings['http_client_config']['proxy']['http'] = 'http://206.189.127.27:8080';
$settings['http_client_config']['proxy']['https'] = 'http://206.189.127.27:8080';
$settings['http_client_config']['verify'] = false;
$settings['http_client_config']['proxy']['no'] = ['127.0.0.1', 'localhost'];

错误显示设置和调试设置

$config['devel.settings']['devel_dumper'] = 'var_dumper';
$config['system.logging']['error_level'] = 'verbose';
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);

proxy

通过frp的socks5代理实现对内网网页的访问

By admin |

场景

假设内网有一台机器A(linux),机器A运行一个Web应用B,应用B只能通过域名形式进行访问,例如test.com。
内网机器A和外网完全隔离,但是可以通过vpn或远程桌面的形式进行访问操作。
现在需要在个人电脑上直接访问test.com可以直接访问Web应用B。

#假设
有一台中间服务器,运行frp server,细节如下:
frp server 域名为frp.test.com, 端口为7700,token为token
frp server 的5000~5020端口堡垒公网可以访问。

个人常用的linux命令以及参数

By admin |

Find

  • 查找深度

find /var/aegir/projects -maxdepth 3 -name .git

git

  • 指定dir或者说,在目录外执行git

git --git-dir config core.fileMode false

xargs

  • 指定参数

find /var/aegir/projects -maxdepth 3 -name .git|xargs -i git --git-dir={} config core.fileMode false

Apache日志杂谈

By admin |

1. LogFormat可以设置多个预设的日志格式,并设置别名。

可以通过启用remoteip模块来配置转发的客户端IP。

2. AccessLog和CustomLog设置访问日志,后者可以配合rotatelogs进行日志切割处理。该指令可以全局以及vhost生效。

已经在vhost设置的日志,全局不会出现。

同一个指令可以执行多次,生成不同的日志文件名以及格式。

3. 不同的apache版本,rotatelogs程序的路径有区别。

相关参考链接:

Apache日志

日志格式说明(官方文档)