前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Nginx服务配置篇·第四课:NextCloud优化整合

Nginx服务配置篇·第四课:NextCloud优化整合

原创
作者头像
我不是程序员110
发布2022-09-26 15:11:18
3.6K1
发布2022-09-26 15:11:18
举报
文章被收录于专栏:Ubuntu建站指南Ubuntu建站指南

前景概要

上一篇文章我们安装完Nextcloud,打造了你的第一个私人网盘,但是会发现在“设置”-“概览”页面,依然会有一些设置上的警告。

这篇文章会一个一个进行处理,达到所有检查都通过并针对性地优化服务器。

安全与警告界面

一、缓存

推荐Redis

代码语言:shell
复制
apt install redis

修改config配置文件:

代码语言:shell
复制
vim /var/www/nextcloud/config/config.php

在最后 ) 前加入:

代码语言:yaml
复制
	#开启缓存,分类型同时使用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,
	],

二、PHP的memory_limit以及opcache.memory_consumption优化

由于之前安装完PHP没有进行优化,类似上传文件大小等,这边全部贴上,避免来回编辑:

代码语言:shell
复制
vim /etc/php/8.1/fpm/php.ini

依次搜索下面几项并更改其内容:

代码语言:yaml
复制
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内存计算):

代码语言:shell
复制
vim /etc/php/8.1/fpm/pool.d/www.conf

修改以下参数:

代码语言:yaml
复制
pm = dynamic
pm.max_children = 300
pm.start_servers = 18
pm.min_spare_servers = 6
pm.max_spare_servers = 36

三、默认电话区域

修改config配置文件:

代码语言:shell
复制
vim /var/www/nextcloud/config/config.php

添加:

代码语言:yaml
复制
  'default_phone_region' => 'CN',

四、增加视频预览

安装php-imagick以及ffmpeg

代码语言:shell
复制
apt install libmagickcore-6.q16-6-extra
apt install ffmpeg

修改config配置文件:

代码语言:shell
复制
vim /var/www/nextcloud/config/config.php

添加:

代码语言:yaml
复制
	'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'
	  ),

五、更改访问国内市场

还是在config配置文件中增加:

代码语言:yaml
复制
  'updater.release.channel' => 'stable',
  'appstoreenabled' => true,
  'appstoreurl' => 'Nextcloud',

优化

优化这块因服务器而异,这里把一些最基础的发出来供参考:

优化一:解除nextcloud上传文件块大小限制

进入nextcloud文件目录

代码语言:shell
复制
cd /var/www/nextcloud

输入以下代码:

代码语言:yaml
复制
-u www-data php occ config:app:set files max_chunk_size --value 0

显示以下内容表示成功:

代码语言:yaml
复制
Config value max_chunk_size for app files set to 0

优化二:数据库优化

编辑20-mysqli.ini文件:

代码语言:shell
复制
vim /etc/php/8.1/fpm/conf.d/20-mysqli.ini

最底下加入以下内容:

代码语言:shell
复制
[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文件:

代码语言:shell
复制
vim /etc/mysql/mariadb.cnf

加入以下内容:

代码语言:css
复制
[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

优化三:为nextcloud启用Cron代替ajax,提高性能

方法一

添加crontab定时任务

代码语言:shell
复制
crontab -u www-data -e

添加一行,并保存:

代码语言:c#
复制
*/5 * * * * php -f /var/www/nextcloud/cron.php //每5分钟运行一次

检查效果:

代码语言:shell
复制
crontab -u www-data -l

输出:

代码语言:css
复制
[snip]*/5 * * * * php -f /var/www/nextcloud/cron.php
方法二

在 /etc/systemd/system目录新建 nextcloudcron.service 和 nextcloudcron.timer 两个文件:

代码语言:shell
复制
vim /etc/systemd/system/nextcloudcron.service

输入以下内容:

代码语言:shell
复制
[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

保存。

代码语言:shell
复制
vim /etc/systemd/system/nextcloudcron.timer

输入以下内容:

代码语言:shell
复制
[Unit]
Description=Run Nextcloud cron.php every 5 minutes
 
[Timer]
OnBootSec=5min
OnUnitActiveSec=5min
Unit=nextcloudcron.service
 
[Install]
WantedBy=timers.target

这里不用修改,就是个定时。

最后,执行下面的命令就可以了:

代码语言:shell
复制
systemctl enable --now nextcloudcron.timer

最后点到基本设置里,选择cron的方式,等5分钟看看情况就行了。

小Tips:cron运行出错解决

出错类型为在nextcloud设置-概览中看到:系统计划任务超过X小时未运行,请查看....

日志错误:OC\HintException: 0: Memcache \OC\Memcache\APCu not available for local cache

解决方法:

修改/etc/php/8.1/mods-available/apcu.ini

代码语言:shell
复制
vim /etc/php/8.1/mods-available/apcu.ini

添加一行:

代码语言:html
复制
apc.enable_cli=1

保存退出,等5分钟再看看。

总结

至此,我们已经从零开始部署了Wordpress以及Nextcloud,相信有这两个,80%的需求应该已经完成了。

如果能够成功地看完并付诸实践,相信搭建一些前端的小应用也难不倒你了。

接下来可以更加愉快的找点新东西学习学习了。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前景概要
  • 安全与警告界面
    • 一、缓存
      • 二、PHP的memory_limit以及opcache.memory_consumption优化
        • 三、默认电话区域
          • 四、增加视频预览
            • 五、更改访问国内市场
            • 优化
              • 优化一:解除nextcloud上传文件块大小限制
                • 优化二:数据库优化
                  • 优化三:为nextcloud启用Cron代替ajax,提高性能
                    • 方法一
                    • 方法二
                • 总结
                相关产品与服务
                云数据库 Redis
                腾讯云数据库 Redis(TencentDB for Redis)是腾讯云打造的兼容 Redis 协议的缓存和存储服务。丰富的数据结构能帮助您完成不同类型的业务场景开发。支持主从热备,提供自动容灾切换、数据备份、故障迁移、实例监控、在线扩容、数据回档等全套的数据库服务。
                领券
                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档