宝塔面板部署Nextcloud后解决后台安全错误及设置警告

有时候,我们需要团队合作一同处理文件;虽然有腾讯文档之类的在线写作平台,但是如果我们想协同处理视频该怎么办?又或者,我们只想建立一个家庭私有云,存一些生活点滴照片,且不希望被限速?也许,你可以试试自己搭建Nextcloud网盘,尤其是自己有台服务器,用宝塔面板安装搭建好nextcloud后,但发现使用起来很慢,我们可以利用宝塔面板区优化一下!
Nextcloud官网:https://nextcloud.com/install/

什么是NextCloud

Nextcloudowncloud的一个分支版本,同样基于PHP语言构建,相对于owncloud,Nextcloud提供更多个性化,当然也会相对更占用一些资源。Nextcloud主要提供的功能:

  • 多人协同合作
  • 云盘存储,支持密码和设置分享失效时间
  • 多平台App支持(iOS、Android等
一,Nextcloud优化
1,Redis 缓存配置:

打开面板应用商店找到Redis并安装(版本6.0及以上就可)

Redis 缓存配置
Redis 缓存配置
  • 1),打开Php管理器,在扩展中可以看到安装Redis插件
宝塔面板部署Nextcloud后解决后台安全错误及设置警告
宝塔面板部署Nextcloud后解决后台安全错误及设置警告
gmp缺失
gmp缺失
  • 2),打开NextCloud站点根目录,修改网站配置文件(config目录下的config.php文件)
'memcache.locking' => '\\OC\\Memcache\\Redis',
  'redis' =>
  array (
    'host' => '127.0.0.1',
    'port' => 6379,
  ), 
'memcache.locking' => '\\OC\\Memcache\\Redis',  #Redis文件锁,不使用可删去此行
config目录下的config.php文件
添加/www/wwwroot/192.168.3.11/config目录下的config.php文件

最后重启php和nginx服务即可

提示“PHP 内存限制低于建议值 512MB。”的问题
提示“PHP 内存限制低于建议值 512MB
提示“PHP 内存限制低于建议值 512MB
2,后台任务配置(AJAX,WebCron,Cron)

官方建议使用第三种,由于是在Centos环境下我们根据官方的提示,首先编写两个服务脚本

nextcloudcron.service 文件内容如下 :

[Unit]
Description=Nextcloud cron.php job

[Service]
User=www
#此处为Php的目录环境和站点下的cron.php的路径(请根据实际情况填写)
#其中xxx.com为站点目录
ExecStart=/www/server/php/72/bin/php -f /www/wwwroot/xxx.com/cron.php 

nextcloudcron.timer 文件内容如下 :

[Unit]
Description=Run Nextcloud cron.php every 5 minutes
[Timer]
OnBootSec=5min
OnUnitActiveSec=5min
Unit=nextcloudcron.service
[Install]
WantedBy=timers.target 

将以上两个文件移动到 /etc/systemd/system 目录下(并修改文件的可执行权限)

redis 配置
redis 配置

打开命令行执行服务注册与启动命令 (依次执行以下三条命令)

#注册为开机启动服务
systemctl enable nextcloudcron.timer

#启动服务
systemctl start nextcloudcron.timer
systemctl enable --now nextcloudcron.timer 
redis 配置
redis 配置

大功告成,以上就是对NextCloud优化的步骤和方法,步骤很简单,但是对于刚接触的人可能会很难,但稍微熟悉以下linux的架构和基础知识也就能搞定了。这样网盘的响应速度就得到大幅的提升了,自己体验后就知道那是丝般顺滑 以上部分内容来自:https://www.bilibili.com/read/cv9830594/

二,关于Nextcloud后台安全错误及设置警告相关处理

进入后台但管理员-设置-概览内,检测一般会存在一些警告和错误,这些我们如何解决呢?

关于Nextcloud后台安全错误及设置警告相关处理
关于Nextcloud后台安全错误及设置警告相关处理
关于Nextcloud后台安全错误及设置警告相关处理!
关于Nextcloud后台安全错误及设置警告相关处理!

通过HTTP访问网站不安全。强烈建议您将服务器设置成要求使用HTTPS协议
这个问题最好解决,同时也可能是无法解决问题:

服务器绑定域名,并配置SSL证书,域名解析到服务器即可

但是:

国内服务器需要绑定备案的域名,若无备案域名,则只能使用IP访问Nextcloud,那么该条警告无法去除。

一些文件没有通过完整性检查. 了解如何解决该问题请查看我们的文档. (无效的文件列表… / 重新扫描…)

关于Nextcloud后台安全错误及设置警告相关处理
关于Nextcloud后台安全错误及设置警告相关处理
提示的无效文件
提示的无效文件

你的无效的文件列表和我的可能不一样,但是方法是一样的:

  1. 开nextcloud的安装地址,也就是Nginx所代理的网站更目录
  2. 删除“提示的无效文件“
Nextcloud目录列表
Nextcloud目录列表

如果你使用宝塔面板,可以进入宝塔面板后台,然后使用宝塔的图形界面删除无效文件。如果你熟悉Linux命令,可以使用rm命令删除:

rm命令删除
rm命令删除
1,PHP configuration option output_buffering must be disabled

其实这个很好解决,PHP默认是有4096字节缓冲的。但是Nextcloud希望你关闭。如果你是自己安装的PHP,在你安装PHP的路径下,打开PHP配置文件(php.ini),将要

output_buffering = 4096

改为:

; output_buffering = 4096

;为PHP的注释符号

如果你是宝塔安装配置的php,更简单了。在宝塔面板,依次打开:软件商店已安装PHP7.3设置配置文件

查找文本output_buffering,并在前面加上;注释

加上注释
加上注释

之后,可能需要重载PHP配置或者重启PHP服务才能生效。再次查看Nextcloud概述,就没有这条警告了。

2,您的数据目录和文件可以从互联网直接访问。.htaccess 文件不起作用。强烈建议您配置 Web 服务器,以便数据目录不再可访问,或者您可以将数据目录移动到 Web 服务器文档根目录。

这个其实是Nginx的问题,为了进一步提升安全性,我们打开Nginx网站设置

加入data目录
加入data目录
3,PHP 的安装似乎不正确,无法访问系统环境变量。getenv(“PATH”) 函数测试返回了一个空值

这个处理方法很简单;如果你是自己安装配置的PHP,一般不会出现这个问题,当时如果是使用宝塔安装,一般都会有这个问题,解决方法很简单:

在宝塔面板,依次打开:软件商店已安装PHP7.3设置FPM配置文件

在文末添加

env[PATH] = /usr/local/bin:/usr/bin:/bin:/usr/local/php/bin
添加配置
添加配置
4,您的网页服务器未正确设置以解析****。更多信息请参见文档

这个处理方法很简单,简单地说,设置Nginx即可。如果你的Nginx是宝塔安装的,那么打开网站的Nginx:

打开Nginx设置
打开Nginx设置

之后追加以下内容:

rewrite /.well-known/carddav /remote.php/dav permanent;
rewrite /.well-known/caldav /remote.php/dav permanent;

之后保存即可

5,PHP模块问题

PHP模块问题包括:

  1. 未找到PHP的”fileinfo”模块。强烈推荐启用该模块,从而获得更好的MIME类型探测结果。
  2. 内存缓存未配置,为了提升使用体验,请尽量配置内存缓存。更多信息请参见文档。
  3. PHP的OPcache模块未载入。推荐开启获得更好的性能。
PHP模块问题
PHP模块问题

安装如下模块:

php8.0插件配置
php8.0插件配置

同时,因为使用Redis作为缓冲,所以我们需要打开Nextcloud的配置文件,追加以下内容:

'memcache.local' => '\\OC\\Memcache\\APCu',
  'memcache.distributed' => '\\OC\\Memcache\\Redis',
  'redis' => 
  array (
    'host' => 'localhost',
    'port' => 6379,
  ),
'memcache.locking' => '\\OC\\Memcache\\Redis',  #Redis文件锁,不使用可删去此行
config文件配置
config文件配置
6,,数据库丢失了一些索引。由于给大的数据表添加索引会耗费一些时间,因此程序没有自动对其进行修复

这个因为我之前修复了,所以我的警告和错误列表没有提示。如果你有报这条警告,直接运行:

php occ db:add-missing-indices

但是注意文件夹所属的用户组,比如:你Terminal上使用的是root或者Ubuntu用户,那么就需要用sudo提权

sudo -u php occ db:add-missing-indices
sudo提权运行
sudo提权运行
7,优化内容
文件扫描
有时候,我们直接使用Linux命令,如:wgetcurl等命令直接下载文件到服务器内Nextcloud里的用户目录,但是用户登录Nextcloud却并没有显示,怎么办?

我们可以使用PHP配合Nextcloud命令,来自动扫描文件:

sudo -u www php occ files:scan --all

其中:

  • 命令使用需要在Nextcloud根目录下
  • 需要使用sudo -u命令提权
扫描文件夹
扫描文件夹

其次,可以修改 /var/www/html/config/config.php,添加参数:

'filesystem_check_changes' => true,  实现自动扫描
8,上传大文件失败

nginx配置文件那边,把client_max_body_size改成50000,然后重新启动或者重新载入nginx的配置文件,这样你就可以上传不超过50G的文件了

client_max_body_size
修改client_max_body_size
9,禁用文件锁功能
  • Nextcloud 执行删除文件出错,修改或覆盖文件则提示 ****file is locked!,原因是操作出异常导致文件被了,Nextcloud 禁用文件锁,在config/config.php中添加一行:
'filelocking.enabled' => false,  #这个方法适合单用户实例。
  • 首先打开项目配件文件/config/config.php,开启维护模式
'maintenance' => true, 

2. 打开数据库,执行以下SQL语句,清空oc_file_locks表

//MySQL
TRUNCATE oc_file_locks 

//SQLite
delete from oc_file_locks

3. 关闭维护模式
'maintenance' => false,

重新登录就能继续删除文件了。如果文件仍然删除失败,可以尝试上传同名文件覆盖原文件再执行删除。
  • 为NextCloud启用Redis缓存并使用基于内存的文件锁

nextcloud的文件锁是为了是防止多个用户同时对一个文件进行操作造成错误而诞生的。默认情况下,nextcloud使用的是基于数据库的文件锁,效率低下而且容易在大批量操作时造成意外上锁。使用Redis可以解决这个问题。

nextcloud根目录/config/config.php下添加如下内容


'memcache.local' => '\\OC\\Memcache\\Redis',
'redis' =>
array (
  'host' => 'localhost',
  'port' => 6379,
 ),
'memcache.locking' => '\\OC\\Memcache\\Redis',  #Redis文件锁,不使用可删去此行

之后重启 nginx 或者重载配置即可

10, 通过不被信任的域名访问
通过不被信任的域名访问
通过不被信任的域名访问

在nextcloud的根目录config目录下打开config.php,添加不信任的域名,如图:

config.php添加不信任的域名
config.php添加不信任的域名
11,您的安装没有设置默认的电话区域

在nextcloud的根目录config目录下打开config.php,添加以下代码:

'default_phone_region' => 'CN',
12,后台任务优化

Nextcloud的后台任务,默认是使用Ajax异步方法进行后台任务:

即在每次访问Nextcloud任意页面都会通过AJAX的方式发起定时任务的执行请求,这种方式如果没有自己的独立服务器或者VPS的话还是比较方便省心的

但官方推荐使用Cron,和Nginx或Apache等WEB服务独立开来,互不影响:

nextcloud后台任务
nextcloud后台任务

为了使用Cron,我们需要用到Linux的定时任务。

SSH连接服务器后,输入:

crontab -e

创建一个Cron任务,并使用正则表达式:

*/5 * * * * sudo -u www php /PathToNextcloud/cron.php
宝塔设置定时任务
宝塔设置定时任务
宝塔设置定时任务
宝塔设置定时任务
其它补充:
'memcache.locking' => '\\OC\\Memcache\\Redis', //Redis文件锁,不使用可删去此行
'default_phone_region' => 'CN', //电话区域设置中国
'maintenance' => false, //维护关闭
'maintenance' => true, #进入维护模式
  'app_install_overwrite' => 
  array (
    0 => 'onlyoffice',
    1 => 'music',
  ),
  'allow_local_remote_servers' => true //onlyoffice设置
  'proxy' => 'socks5://xxxxxxxx:7893', //科学上网代理上网
  'auth.bruteforce.protection.enabled' => false, //解除nextcloud登录防爆
  'filesystem_check_changes' => true,//第三方上传文件,自动扫描文件
  'filelocking.enabled' => false,  #这个方法适合单用户实例,Nextcloud 执行删除文件出错,修改或覆盖文件则提示 ****file is locked!,原因是操作出异常导致文件被了,Nextcloud 禁用文件锁,在config/config.php中添加一行:

https://www.hao0564.com/1958.html NextCloud Redis缓存配置与后台Cron服务优化
https://www.hao0564.com/1895.html 宝塔面板下安装nextcloud图文详解
https://www.hao0564.com/1973.html Nextcolud您的网页服务器未正确设置以解析“/.well-known/nodeinfo” “/.well-known/webfinger” 问题解决

https://cloud.tencent.com/developer/article/1787467 部分内容转载

3 评论

  1. ubuntu系统中宝塔无法安装gmp请下安装,在PHP->安装扩展中,安装gmp扩展即可,但在安装过程中我报了另一个错,因此特意分开
    报错:configure: error: GNU MP Library version 4.2 or greater required.
    解决方法:apt install libgmp-dev

回复 4s取消回复

您的电子邮箱地址不会被公开。 必填项已用*标注