找回密码
 注册
首页 ≡≡网络技术≡≡ PHP语言 Nextcloud配置APCu本地缓存+Redis分布式缓存

PHP Nextcloud配置APCu本地缓存+Redis分布式缓存

灰儿 2023-6-28 12:36:20
Nextcloud由于各种原因,默认安装后,任何页面加载时间都过于缓慢。之前的文章有介绍到使用PHP的APCu模块以提升缓存性能,这里再介绍使用分布式缓存(Memcached、Redis)提高Nextcloud的性能。

Nextcloud支持多个不同类型的缓存后端,所以可以同时启用本地缓存(APCu)和分布式缓存(Memcached、Redis),分布式缓存选择Memcached、Redis其中一种启用即可,无需两者都启用,官方推荐的组合是APCu+Redis。

宝塔面板很方便的可以安装php的Memcached和Redis模块(注意是memcached,非memcache),这里我以APCu+Redis为例讲解安装方法:

一、安装“redis”模块和相关PHP扩展
先在宝塔的应用商店中搜索并安装“redis”模块,然后在PHP中安装“redis, apcu”扩展。

二、配置Nextcloud的config.php文件

安装完毕后,打开/www/wwwroot/你的nextcloud目录/config/config.php,在其尾部添加以下代码
  1.   'memcache.locking' => '\\OC\\Memcache\\Redis',
  2.   'memcache.local' => '\\OC\\Memcache\\APCu',
  3.   'memcache.distributed' => '\\OC\\Memcache\\Redis',
  4.   'redis' => array (
  5.    'host' => '127.0.0.1',
  6.    'port' => 6379,
  7.   ),
复制代码
为了获得更佳的性能,'memcache.locking' => '\OC\Memcache\Redis',  这段建议用上,可将redis用于文件的锁定。

三、开启cron和宝塔计划任务
1.进入nextcloud管理员设置面板,在基本设置->后台任务中,修改定时任务执行方式为cron。
2.进入宝塔面板,在计划任务中配置shell脚本
内容为
  1. sudo -u www php -f /www/wwwroot/你的域名/cron.php
复制代码
如果装有多个版本php服务,需要指定php程序路径,相应脚本如下:
  1. sudo -u www /www/server/php/80/bin/php -f  /www/wwwroot/shjyy.cn/cron.php
复制代码

时间自定,个人为5分钟一次。

在这一步时出了点小问题,运行cron.php计划任务命令时,出现如下提示:
  1. OCP\HintException: [0]: Memcache \OC\Memcache\APCu not available for local cache (Is the matching PHP module installed and enabled?)
复制代码

自nextcloud 21起,需要在php配置下加上 apc.enable_cli=1 ,才能保证apcu缓存正常工作

首先在宝塔面板的终端中输入php --ini,查看输出,我这里为
  1. Configuration File (php.ini) Path: /www/server/php/80/etc
  2. Loaded Configuration File:         /www/server/php/80/etc/php-cli.ini
  3. Scan for additional .ini files in: (none)
  4. Additional .ini files parsed:      (none)
复制代码

发现宝塔安装的php-8.0版本在cli模式下加载的配置文件是php-cli.ini,不是php.ini文件,所以这里要修改php-cli.ini配置文件。

解决方法是打开宝塔中的 /www/server/php/80/etc/php-cli.ini配置文件,查找“apc.enable_cli”设置项,修改为如下代码:
  1. apc.enable_cli = 1
复制代码

01.png

如果是php-7.4及以下版本,配置文件仍然是php.ini文件,直接在PHP管理面板中修改“配置文件”即可。
再重启php,就会发现cron执行没有报错了!



您需要登录后才可以回帖 登录 | 注册
学习中心
站长自定义文字内容,利用碎片时间,随时随地获取优质内容。
Q设计语言 了解更多
Q Design 提供商家设计所需的指导与资源,帮商家快速完成产品设计、降低生产成本。
学习中心
站长自定义文字内容,利用碎片时间,随时随地获取优质内容。
Q设计语言 了解更多
Q Design 提供商家设计所需的指导与资源,帮商家快速完成产品设计、降低生产成本。