前景概要
上一篇文章我们安装完Nextcloud,打造了你的第一个私人网盘,但是会发现在设置–概览页面,依然会有一些设置上的警告。
这篇文章会一个一个进行处理,达到所有检查都通过并针对性地优化服务器。

安全与警告界面
1.缓存
推荐 Redis
1
 | 
apt install redis
 | 
修改 config.php 配置文件:
1
 | 
vim /var/www/nextcloud/config/config.php
 | 
在最后 ) 前加入:
1 2 3 4 5 6 7 8 9  | 
#开启缓存,分类型同时使用APCU和REDIS。 'memcache.local' => '\\OC\\Memcache\\APCu', 'filelocking.enabled' => true, 'memcache.locking' => '\OC\Memcache\Redis', 'memcache.distributed' => '\OC\Memcache\Redis', 'redis' => [ 'host' => 'localhost', 'port' => 6379, ],  | 
2.PHP的 memory_limit 以及 opcache.memory_consumption 优化
由于之前安装完PHP没有进行优化,类似上传文件大小等,这边全部贴上,避免来回编辑:
1
 | 
vim /etc/php/8.1/fpm/php.ini
 | 
依次搜索下面几项并更改其内容:
1 2 3 4 5 6 7 8 9 10 11 12  | 
php_value max_input_time 3000 php_value max_execution_time 6000 memory_limit = 1024M post_max_size = 1024M upload_max_filesize = 1024M max_file_uploads = 100 opcache.enable = 1 opcache.interned_strings_buffer = 32 opcache.max_accelerated_files = 10000 opcache.memory_consumption = 128 opcache.save_comments = 1 opcache.revalidate_freq = 1  | 
编辑 www.conf ,根据服务器内存配置情况填写以下数值(4G内存计算):
1
 | 
vim /etc/php/8.1/fpm/pool.d/www.conf
 | 
修改以下参数:
1 2 3 4 5  | 
pm = dynamic pm.max_children = 300 pm.start_servers = 18 pm.min_spare_servers = 6 pm.max_spare_servers = 36  | 
3.默认电话区域
修改 config.php 配置文件:
1
 | 
vim /var/www/nextcloud/config/config.php
 | 
添加:
1
 | 
'default_phone_region' => 'CN',
 | 
4.增加视频预览
安装 php-imagick 以及 ffmpeg
1 2  | 
apt install libmagickcore-6.q16-6-extra apt install ffmpeg  | 
修改 config.php 配置文件:
1
 | 
vim /var/www/nextcloud/config/config.php
 | 
添加:
1 2 3 4 5 6 7 8 9 10 11 12 13  | 
'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' ),  | 
5.更改访问国内市场
还是在 config.php 配置文件中增加:
1 2 3  | 
'updater.release.channel' => 'stable', 'appstoreenabled' => true, 'appstoreurl' => 'Nextcloud',  | 
优化
优化这块因服务器而异,这里把一些最基础的发出来供参考:
1.解除nextcloud上传文件块大小限制
进入nextcloud文件目录
1
 | 
cd /var/www/nextcloud
 | 
输入以下代码:
1
 | 
-u www-data php occ config:app:set files max_chunk_size --value 0
 | 
显示以下内容表示成功:
1
 | 
Config value max_chunk_size for app files set to 0
 | 
2.数据库优化
编辑 20-mysqli.ini 文件:
1
 | 
vim /etc/php/8.1/fpm/conf.d/20-mysqli.ini
 | 
最底下加入以下内容:
1 2 3 4 5 6 7 8 9 10 11 12 13  | 
[mysql] mysql.allow_local_infile=On mysql.allow_persistent=On mysql.cache_size=2000 mysql.max_persistent=-1 mysql.max_links=-1 mysql.default_port= mysql.default_socket=/run/mysqld/mysqld.sock #这个根据我们之前的配置 mysql.default_host= mysql.default_user= mysql.default_password= mysql.connect_timeout=60 mysql.trace_mode=Off  | 
编辑 mariadb.cnf 文件:
1
 | 
vim /etc/mysql/mariadb.cnf
 | 
加入以下内容:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24  | 
[server] skip_name_resolve = 1 innodb_buffer_pool_size = 128M innodb_buffer_pool_instances = 1 innodb_flush_log_at_trx_commit = 2 innodb_log_buffer_size = 32M innodb_max_dirty_pages_pct = 90 query_cache_type = 1 query_cache_limit = 2M query_cache_min_res_unit = 2k query_cache_size = 64M tmp_table_size= 64M max_heap_table_size= 64M slow_query_log = 1 slow_query_log_file = /var/log/mysql/slow.log long_query_time = 1 [mysqld] character_set_server = utf8mb4 collation_server = utf8mb4_general_ci transaction_isolation = READ-COMMITTED binlog_format = ROW innodb_large_prefix=on innodb_file_format=barracuda innodb_file_per_table=1  | 
3.为nextcloud启用Cron代替ajax,提高性能
方法一
添加 crontab 定时任务
1
 | 
crontab -u www-data -e
 | 
添加一行,并保存:
1
 | 
*/5 * * * * php -f /var/www/nextcloud/cron.php //每5分钟运行一次
 | 
检查效果:
1
 | 
crontab -u www-data -l
 | 
输出:
1
 | 
[snip]*/5 * * * * php -f /var/www/nextcloud/cron.php
 | 
方法二
在 /etc/systemd/system 目录新建 nextcloudcron.service 和 nextcloudcron.timer 两个文件:
1
 | 
vim /etc/systemd/system/nextcloudcron.service
 | 
输入以下内容:
1 2 3 4 5 6 7 8 9  | 
[Unit] Description=Nextcloud cron.php job [Service] User=www-data #运行用户,一般为www-data ExecStart=/usr/bin/php -f /var/www/nextcloud/cron.php #你的cron.php路径,前面那个路径一般不用改,除非你是用宝塔面板之类的 [Install] WantedBy=basic.target  | 
保存。
1
 | 
vim /etc/systemd/system/nextcloudcron.timer
 | 
输入以下内容:
1 2 3 4 5 6 7 8 9 10  | 
[Unit] Description=Run Nextcloud cron.php every 5 minutes [Timer] OnBootSec=5min OnUnitActiveSec=5min Unit=nextcloudcron.service [Install] WantedBy=timers.target  | 
这里不用修改,就是个定时。
最后,执行下面的命令就可以了:
1
 | 
systemctl enable --now nextcloudcron.timer
 | 
最后点到基本设置里,选择cron的方式,等5分钟看看情况就行了。
cron运行出错解决
出错类型为在nextcloud设置-概览中看到:系统计划任务超过X小时未运行,请查看….
日志错误:*
OC\HintException: [0]: Memcache \OC\Memcache\APCu not available for local cache*
解决方法:
修改/etc/php/8.1/mods-available/apcu.ini
1vim /etc/php/8.1/mods-available/apcu.ini添加一行:
1apc.enable_cli=1
保存退出,等5分钟再看看。
当然,也可以直接在
etc/php/8.1/fpm/php.ini中设置opcache.enable_cli=1
总结
至此,我们已经从零开始部署了Wordpress以及Nextcloud,相信有这两个,80%的需求应该已经完成了。
如果能够成功地看完并付诸实践,相信搭建一些前端的小应用也难不倒你了。
接下来可以更加愉快的找点新东西学习学习了。



评论(0)