drupal 8/drupal 9 redis配置

Submitted by admin on Sat, 10/09/2021 - 13:38

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']       = 'cache.backend.chainedfast';
$settings['cache']['bins']['container']       = 'cache.backend.redis';
$settings['cache']['bins']['data']       = 'cache.backend.redis';
$settings['cache']['bins']['boost']    = 'cache.backend.redis';
$settings['cache']['bins']['default']       = 'cache.backend.redis';
$settings['cache']['bins']['dynamic_page_cache']       = 'cache.backend.redis';
$settings['cache']['bins']['entity']       = 'cache.backend.redis';
$settings['cache']['bins']['menu']       = 'cache.backend.redis';
$settings['cache']['bins']['page']       = 'cache.backend.redis';
$settings['cache']['bins']['render']       = 'cache.backend.redis';
$settings['cache']['bins']['rest']       = 'cache.backend.redis';
$settings['cache']['bins']['signal']       = 'cache.backend.redis';
$settings['cache']['bins']['toolbar']       = 'cache.backend.redis';
$settings['cache']['bins']['ultimate_cron_logger']       = 'cache.backend.redis';

验证:

redis-cli
keys *
keys PREFIX:cache*
get "PREFIX:page:http://www.xxx.org.cn/node/567:html" tags
get "PREFIX:page:http://www.xxx.org.cn/node/567:html" data
del [cache-id]

drupal 8的网站,开启了page cache模块。

cache id: PREFIX:cache:page:http://example.com/[url]

通过执行redis-cli可以登录redis,执行

del [cache id]即可

参考

https://git.drupalcode.org/project/redis/-/blob/8.x-1.x/README.md https://docs.platform.sh/guides/drupal9/redis.html

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

Submitted by admin on Wed, 08/04/2021 - 21:33

背景

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

步骤

  1. 安装相关软件
brew install --cask macfuse
brew install gromgit/fuse/ntfs-3g
  1. 获取相关参数
id  ## 获取当前mac登录用户的id和gid,替换下面的参数
df -h ## 获取外挂盘的盘符,可以根据磁盘大小来推测,我的盘符是/dev/disk2s1
  1. 挂载
cd ~
mkdir disk
sudo ntfs-3g -o uid={uid},gid={gid},dmask=022,fmask=133 -o auto_xattr /dev/disk2s1 ~/disk 

参考资料

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

Submitted by admin on Wed, 08/04/2021 - 12:33
  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进阶

Submitted by admin on Wed, 06/30/2021 - 11:04

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

$settings['reverse_proxy'] = TRUE;
$settings['reverse_proxy_addresses'] = [  $_SERVER['REMOTE_ADDR'],];

跳转

$bad_bots = [
    'YisouSpider',
    'MQQBrowser',
    'Mb2345Browser',
    'LieBaoFast',
    'UCBrowser'
];
foreach ($bad_bots as $bad_bot) {
  if (str_contains($_SERVER['HTTP_USER_AGENT'], $bad_bot)) {
    header('HTTP/1.0 403 Forbidden');
    print $bad_bot . ' Not allowed, bad visit!!';
    exit;
  }
}

强制HTTPS(Drupal 7)

$_SERVER['HTTPS'] = 'on';  
$_SERVER['SERVER_PORT'] = 443;

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

Submitted by admin on Fri, 05/21/2021 - 13:08

场景

假设内网有一台机器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端口堡垒公网可以访问。

思路

内网机器运行socks5代理,同时使得该socks5可以被外网使用;
浏览器配置omegeproxy插件,使得对test.com的访问通过socks5代理进行。

实现步骤

  1. 在公网搭建frp server,参考frps docker,端口5001暴漏公网可访问。
  2. 在内网机器A上下载运行frpc, frpc.ini配置如下
[common]
server_addr = frp.test.com
server_port = 7700
token = token

[plugin_socks5]
type = tcp
remote_port = 5001
plugin = socks5
# plugin_user = admin
# plugin_passwd = admin
  1. 运行
frpc -c frpc.ini
  1. 配置浏览器代理,以chrome的switchyomega为例
    添加新的代理,类型为socks 5,设置全局可用,参考如下
  2. 浏览器访问test.com即可访问。

注意事项

  1. socks5代理无法使用账号密码,因为这是浏览器的限制。

Apache日志杂谈

Submitted by admin on Thu, 04/08/2021 - 17:06

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

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

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

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

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

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

相关参考链接:

Apache日志

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