再次记录一下坑爹的Nextcloud优化过程
接着上一篇NextCloud安装之后,使用效果还是达不到理想状态,访问速度过慢,后台系统界面显示各种大大小小的问题,本篇记录着Nextcloud出现的问题和解决方式。
优化Nextcloud 使其达到完整状态
Nextcloud添加Redis缓存
给Nextcloud添加Redis缓存,能提升不少页面打开速度。
同样基于Docker部署Redis,简单方便,端口默认是容器内6379映射到容器外6379
docker run --name redis -p 6379 -d redis
查看docker容器IP
docker inspect --format='{{.Name}} - {{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' $(docker ps -aq)
可以看到redis容器的IP是172.17.0.6,开始编辑Nextcloud配置文件
- 编辑Nextcloud配置文件
配置文件在一般在/nextcloud/config/config.php
在'memcache.local' => '\OC\Memcache\APCu',
下面新增以下行
'memcache.locking' => '\OC\Memcache\Redis',
'redis' => array(
'host' => '172.17.0.6',
'port' => 6379,
),
图例:
修改结束后重启nextcloud容器即可
- 查看是否成功被缓存
在命令行下进入容器,并执行以下语句
docker exec -it redis bash
# 进入redis-cli
> redis-cli
> keys *
如果有显示一些键值表示成功缓存
定时执行后台任务
默认情况下,没次打开Nextcloud页面之后会加载一个任务,根据官方建议使用系统定时来优化性能
登录后台 - 基本设置 - 勾选Cron
在linux命令行下输入 crontab -e
进入定时任务管理,输入以下命令保存退出
注意:如果你是使用docker容器安装nextcloud的情况下可以使用以下命令,注意修改容器名
*/5 * * * * docker exec --user www-data nextcloud php cron.php
优化图片或视频缩略图加载缓慢或者无法显示的问题
默认情况下,动图或者视频格式的文件无法生成缩略图,或者生成缓慢,需要安装 FFmpeg 来解决问题
如果是使用容器安装nextcloud可以使用以下命令来进入容器,注意修改容器名
docker exec -it nextcloud /bin/sh
# 执行安装 FFmpeg
apk add ffmpeg
# 或
apt install ffmpeg
安装成功后需要修改nextcloud config.php
文件配置,添加以下行数
'enable_previews' => true,
'enabledPreviewProviders' =>
array (
0 => 'OC\\Preview\\PNG',
1 => 'OC\\Preview\\JPEG',
2 => 'OC\\Preview\\GIF',
3 => 'OC\\Preview\\HEIC',
4 => 'OC\\Preview\\BMP',
5 => 'OC\\Preview\\XBitmap',
6 => 'OC\\Preview\\MP3',
7 => 'OC\\Preview\\TXT',
8 => 'OC\\Preview\\MarkDown',
9 => 'OC\\Preview\\Movie',
10 => 'OC\\Preview\\MKV',
11 => 'OC\\Preview\\MP4',
12 => 'OC\\Preview\\AVI',
13 => 'OC\\Preview\\Photoshop',
14 => 'OC\\Preview\\TIFF',
15 => 'OC\\Preview\\SVG',
),
重启Nextcloud服务解决缩略图问题
优化 php-fpm 性能,提高页面加载效率
优化www.conf配置文件,增加更多的进程来处理页面数据。
如果是使用容器安装nextcloud可以使用以下命令来进入容器,注意修改容器名
docker exec -it nextcloud /bin/sh
# 查找 www.conf 位置,一般在/usr/local/etc/php-fpm.d/www.conf
find / -name www.conf
需要修改和添加的字段有:
# pm.max_children = 5
pm.max_children = 128
# pm.start_servers = 2
pm.start_servers = 14
#pm.min_spare_servers = 1
pm.min_spare_servers = 4
# pm.max_spare_servers = 3
pm.max_spare_servers = 24
# 添加以下字段
request_terminate_timeout = 300
数值越大,进程越多,平均每个进程消耗 32M-96M 内存,按需设置
设置成功后重启 nextcloud 服务即可。
解除块大小限制,提升传输速度
在有良好的传输网络下,比如局域网,应当解除块大小限制来提升网络传输效率,默认是102400(10M),设置为0即可关闭块大小限制
如果是使用容器安装nextcloud可以使用以下命令来进入容器,注意修改容器名
docker exec --user www-data nextcloud php occ config:app:set files max_chunk_size --value 0
如果使用本机环境运行的可以使用这条语句
sudo -u www-data php occ config:app:set files max_chunk_size --value 0
504 Gateway Time-out
安装 Nextcloud 显示504超时问题
在 nginx 配置文件钟添加以下语句即可解决
fastcgi_read_timeout 86400;
重启nginx或者重新加载配置文件
nginx -s reload
显示 ”php-imagick模块” 问题
此实例中的 php-imagick 模块不支持 SVG。为了获得更好的兼容性,建议安装它。
如果是使用容器安装nextcloud可以使用以下命令来进入容器,注意修改容器名
docker exec -it nextcloud /bin/sh
# 执行安装 imagemagick
apk add --no-cache imagemagick
# 或
apt install libmagickcore-6.q16-6-extra
安装成功后重启 nextcloud 服务
显示 “您的安装没有设置默认的电话区域” 问题
您的安装没有设置默认的电话区域。这对验证配置设定中没有国家代码的电话号码而言是必需的。要允许没有国家代码的电话号码,请添加带区域相应的 ISO 3166-1 code ↗ 的“默认_电话_区域”到你的配置文件中。
在nextcloud config.php
文件配置,添加以下行数
'default_phone_region' => 'CN',
显示 “Strict-Transport-Security" HTTP 头未设为至少 "15552000" 秒” 问题
Strict-Transport-Security" HTTP 头未设为至少 "15552000" 秒。为了提高安全性,建议启用 HSTS,参考步骤见 安全小贴士 ↗
在 nginx 配置文件钟添加以下语句即可解决
add_header Strict-Transport-Security "max-age=15768000; includeSubDomains; preload;" always;
重启nginx或者重新加载配置文件
nginx -s reload
123 · 2022-12-08 09:46
太棒了
ash · 2022-12-09 09:28
非常详细,感谢分享🙏
lllong33 · 2023-01-10 13:59
大佬是否碰到过如下问题:
IS-02 修改nextcloud任何文件, 就会重新更新元数据, 这个过程很慢; 比如我有2000多个文件, 每次都会同步一次;
真水无香 · 2023-02-28 22:15
博主好,不知道为什么,redis怎么也没有缓存,试了很多方法,结果都是 (empty array)
请博主指教
kevin · 2023-05-10 10:34
redis那里大佬文中用的locking,配置里是distributed