Nextcloud 和 Owncloud 可以说是师出同门。最近折腾了好久,终于能流畅的访问nextcloud。这里记录分享一下优化的方案。
当然第一步,肯定能运行,才能进行访问调优。
通过这几天的折腾。主要集中在两方面:
1、环境问题:(Nginx/Apache的配置、php-fpm/php.ini的配置、redis参数问题、opcache等加速器参数问题)
2、nextcloud本身设置问题。
首先:
每台机器的配置设置都不一样,一定要仔细阅读官方文档,根据自己的机器配置,和访问量来设置自己的参数。
官方支持文档:https://docs.nextcloud.com/server/latest/admin_manual/
PHP-FPM Process Calculator: https://spot13.com/pmcalculator/
1、Nginx的配置问题:
我这里使用的https协议。在访问网页时,白屏时间较长。进入后可以正常使用。且流畅度还可以。这样排除php和mysql的配置问题。查看nginx设置,因为使用的默认推荐设置。
这里的ssl_ciphers非常多:
ssl_certificate /usr/local/nginx/conf/ssl/xxxx.crt;
ssl_certificate_key /usr/local/nginx/conf/ssl/xxxx.key;
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers on;
ssl_ciphers “TLS13-AES-256-GCM-SHA384:TLS13-CHACHA20-POLY1305-SHA256:TLS13-AES-128-GCM-SHA256:TLS13-AES-128-CCM-8-SHA256:TLS13-AES-128-CCM-SHA256:EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5”;
ssl_session_cache builtin:1000 shared:SSL:10m;
在网上查询了一下加密套件的设置,还要查看cpu和ssl的参数,本人技术小白,所以直接采用了域名方官方推荐配置,这里修改为:
ssl_ciphers “CDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE”;
重启nginx,白屏等待时间有所缓解。
这里nginx还有一个需要设置的参数:
client_max_body_size 16G; //上传文件的大小;
fastcgi_read_timeout 360s; //fastcgi超时时间
client_body_temp_path /tmp/big_tmp_file; //临时文件夹
如果设置里没有的话,可以根据自己的需要进行设置;
2、php-fpm的配置问题:
这里内容可以百度到,里面涉及php-fpm进程的有这样几个参数:
pm = dynamic //php-fpm的进程数量为动态调整,还有另外一种是static。这里还是推荐动态,保证在访问量低时释放内存
pm.max_children = 17 //静态方式下开启的php-fpm进程数量
pm.start_servers = 4 //动态方式下的起始php-fpm进程数量
pm.min_spare_servers = 4 //动态方式下的最小php-fpm进程数
pm.max_spare_servers = 12 //动态方式下的最大php-fpm进程数量
这里就可以参考这个网站。去根据自己服务器的配置,设置以上参数
https://spot13.com/pmcalculator/
注意:这里的进程数太多会导致内存爆掉,服务器宕机。所以务必要刨除服务器其他服务占用的内存数。理性,保守设置
3、php.ini(opcache加速设置)
opcache模块这里直接参考官方文档进行设置即可:
opcache.enable=1
opcache.memory_consumption=128
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=10000
opcache.revalidate_freq=1
opcache.save_comments=1
php的设置也参考官方的设置:
memory_limit = 512M
此处有一项需要注意的设置:
post_max_size = 16G //这个设置影响到了上传文件的大小。请根据需要设置
4、redis参数设置:
redis的加速作用非常明显、非常推荐使用
连接redis的方式有两种:
端口连接,默认127.0.0.1:6379
Unix socket连接
两种连接方式各有利弊,
端口连接方式遵循防火墙设置,安全性较高。但是速度相对较慢
Unix socket 连接速度相对较快,但是在本地创建sock文件。安全性存在问题
根据自己需要选择。
端口模式默认打开,这里就说一下socket模式的参数
unixsocket /tmp/redis.sock //这里指向socket文件的位置。
unixsocketperm 766 //这里设置socket文件的权限
socket 文件的权限有两种解决办法。
第一种是给读取的权限、还有一种需要将把网站服务器的用户和用户组权限添加至redis
启动redis之后,可以使用netstat -anp | grep redis 查看到redis 的监听端口
或者在/tmp/文件夹内,找到redis.sock文件
5、nextcloud的设置文件:
这里直接使用官方的设置:
‘memcache.local’ => ‘\\OC\\Memcache\\APCu’, //这里需要添加php的apcu加速模块
‘redis’ =>
array (
‘host’ => ‘/tmp/redis.sock’, //这里使用redis对应的连接方式,如果使用端口连接,地址填写’127.0.0.1’端口填写’6379’或者根据自己设置填写
‘port’ => 0,
), //如果redis设置了密码。也可以在此处填写。
‘memcache.locking’ => ‘\\OC\\Memcache\\Redis’, //nextcloud使用Redis事物文件锁定
‘memcache.distributed’ => ‘\\OC\\Memcache\\Redis’, //nextcloud使用Redis分布模式
因为添加了Redis锁定文件,还需要在php.ini 文件中添加以下设置:
redis.session.locking_enabled=1
redis.session.lock_retries=-1
redis.session.lock_wait_time=10000
6、crontab的定时任务执行。
官方在介绍文档中,推荐使用crontab执行cron.php文件
详细内容在文档中有介绍:https://docs.nextcloud.com/server/latest/admin_manual/configuration_server/background_jobs_configuration.html
使用crontab -u 用户 -e //用户,使用web服务器用户
添加:
*/5 * * * * php -f /var/www/nextcloud/cron.php //注意:必须将路径替换为/var/www/nextcloud/cron.php当前 Nextcloud 安装的路径。
这里官方还写出了使用apcu配置,需要再加上–define apc.enable_cli=1
组合一下
*/5 * * * * php -f /var/www/nextcloud/cron.php –define apc.enable_cli=1
通过这几个模块的修改。nextcloud的访问速度也会有明显的改善。
当然,建议慢慢修改相关配置。出现问题也可及时发现
评论(已关闭)
评论已关闭