宝塔面板部署NextCloud(16.0.0)逐一解决后台安全及设置警告

Linux, PHP 2019/05/07

13.x对应:宝塔面板部署NextCloud逐一解决后台安全及设置警告

14.x对应:宝塔面板部署NextCloud(14.0.3)逐一解决后台安全及设置警告

相关:宝塔面板下nextcloud完美优化配置

注:我从14.x直接跨本版升级到了16.0.0,越过了15.x版本,所以无法记录到15.x版本的一些告警及处理方法

16.x对应的一些新告警

逐一解决

1.一些文件没有通过完整性检查

这个就不多说了,点击无效文件列表,删除或者移动列表里不应该存在的文件到别的目录,然后重新扫描一遍即可。

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

参考 宝塔面板部署NextCloud逐一解决后台安全及设置警告 第1条

3.PHP 内存限制低于建议值 512MB

修改php的内存配置即可

4.所使用的数据库为MySQL但没有对4字节字符的支持。为正确处理文件名或评论中使用的4字节字符(比如emoji表情),建议开启MySQL的4字节字符支持

提示:此步骤有风险,请一定要先备份数据

按照 官方文档 的指导:

1.修改MySQL配置文件,这里以MySQL 5.5 为例

[mysqld] 配置段里加入

innodb_large_prefix=true
innodb_file_format=barracuda
innodb_file_per_table=1

保存后重启MySQL

2.修改nextcloud的数据库的字符集和排序规则

ALTER DATABASE nextcloud所在的数据库名称 CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;

可以在shell下使用mysql执行上述SQL命令,也可以用phpmyadmin执行

3.修改nextcloud配置文件config.php

utf8mb4 值改为 true

官方给出的方法是使用occ命令,当然也可以直接修改config.php

occ命令:需要在nextcloud的安装根目录下执行

sudo -u www php occ config:system:set mysql.utf8mb4 --type boolean --value="true"

直接修改:

4.修复数据库

同样是occ命令,需要在nextcloud的安装根目录下执行

sudo -u www php occ maintenance:repair

完成上述操作后,即可修复该告警

5.HTTP的请求头 “Strict-Transport-Security” 未设置为至少 “15552000” 秒。为了提高安全性,建议参照security tips ↗中的说明启用HSTS

参考 宝塔面板部署NextCloud逐一解决后台安全及设置警告 第4条

6.未找到 PHP 的 “fileinfo” 模块。强烈推荐启用该模块,从而获得更好的 MIME 类型探测结果。

参考 宝塔面板部署NextCloud逐一解决后台安全及设置警告 第2条

因为我这边是php 7.3.5,所以顺便可以参考 宝塔面板5.9手动编译php7.3 fileinfo模块

7.PHP 的组件 OPcache 没有正确配置。 为了提供更好的性能,我们建议在 php.ini中使用下列设置

参考 宝塔面板部署NextCloud逐一解决后台安全及设置警告 第6条

8.数据库丢失了一些索引。由于给大的数据表添加索引会耗费一些时间,因此程序没有自动对其进行修复。您可以在 Nextcloud 运行时通过命令行手动执行 “occ db:add-missing-indices” 命令修复丢失的索引。索引修复后会大大提高相应表的查询速度。

参考 宝塔面板部署NextCloud(14.0.3)逐一解决后台安全及设置警告 第3条

9.该实例缺失了一些推荐的 PHP 模块。为提高性能和兼容性,我们强烈建议安装它们

这里我缺少的是imagemagick模块,在php的面板上直接安装即可

10.数据库中的一些列由于进行长整型转换而缺失。由于在较大的数据表重改变列类型会耗费一些时间,因此程序没有自动对其更改。您可以通过命令行手动执行 “occ db:convert-filecache-bigint” 命令以应用挂起的更改。该操作需要当整个实例变为离线状态后执行。查阅相关文档以获得更多详情。

shell下执行occ命令:需要在nextcloud的安装根目录下执行

sudo -u www php occ db:convert-filecache-bigint

程序会询问是否继续执行这项操作,可能需要几个小时,具体取决于文件数量!输入y,回车,继续转换~

程序会在后台自动转换,不用担心

完美解决

本文标签:


38 条评论

    • Bug侠 评论于 回复

      @汇桥科技
      在的,怎么了?

      • 汇桥科技 评论于 回复

        @Bug侠
        主要是想请教一下 怎么安装那个OFFICE插件。

  • 评论于 回复

    在18.0.1中,应该修改mysql性能这两栏为较大值:
    连接数, 每个线程排序的缓冲大小
    连接数, 读入缓冲区大小
    否则在修改4字节的时候会报错

    • Bug侠 评论于 回复

      @袁
      Nextcloud都更到18了……我也去更一下

  • rainstorm130 评论于 回复

    求助一下,在运行sudo -u www php occ db:add-missing-indices时出现一下错误
    [root@bt nextcloud]# sudo -u www php occ db:add-missing-indices
    An unhandled exception has been thrown:
    Doctrine\DBAL\DBALException: Failed to connect to the database: An exception occurred in driver: SQLSTATE[HY000] [2002] No such file or directory in /www/wwwroot/192.168.2.192/nextcloud/lib/private/DB/Connection.php:68
    Stack trace:
    #0 /www/wwwroot/192.168.2.192/nextcloud/3rdparty/doctrine/dbal/lib/Doctrine/DBAL/Connection.php(420): OC\DB\Connection->connect()
    #1 /www/wwwroot/192.168.2.192/nextcloud/3rdparty/doctrine/dbal/lib/Doctrine/DBAL/Connection.php(380): Doctrine\DBAL\Connection->getDatabasePlatformVersion()
    #2 /www/wwwroot/192.168.2.192/nextcloud/3rdparty/doctrine/dbal/lib/Doctrine/DBAL/Connection.php(324): Doctrine\DBAL\Connection->detectDatabasePlatform()
    #3 /www/wwwroot/192.168.2.192/nextcloud/3rdparty/doctrine/dbal/lib/Doctrine/DBAL/Connection.php(683): Doctrine\DBAL\Connection->getDatabasePlatform()

    • rainstorm130 评论于 回复

      @rainstorm130
      已经解决,需要在数据库中建立一个“www”的用户,无密码,本地,的账号即可

  • maverick 评论于 回复

    老哥,利用宝塔面板创建的lnmp环境,然后web界面安装完nextcloud后,无法登录咋回事儿啊?就一直卡在登录界面

    • Bug侠 评论于 回复

      @maverick
      这得具体分析,检查php日志或者nextcloud日志什么的,要不然没法准确的判断原因

  • A60 评论于 回复

    我使用完sudo -u www php occ maintenance:repair指令后就直接用不了了是怎么回事,指令报错An exception occurred while executing ‘ALTER TABLE `oc_addressbooks` CONVER
    T TO CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;’:

    SQLSTATE[42000]: Syntax error or access violation: 1071 Specified key was t
    oo long; max key length is 767 bytes
    网站也进不去了,显示—该实例 Nextcloud 当前处于维护模式,这将花费一些时间。 当实例再次可用时,页面会自动刷新。

  • 弦夕 评论于 回复

    sudo -u www php occ maintenance:repair
    为啥执行了这个命令提示:sudo: php:找不到命令

    • Bug侠 评论于 回复

      @弦夕
      什么环境呢?宝塔还是LNMP?

      • 弦夕 评论于 回复

        @Bug侠
        AMH面板,LNMP环境。
        现在的问题是:
        sudo -u www /usr/local/php-7.2/bin/php occ files:scan –all 后。。。
        出现错误:
        An unhandled exception has been thrown:
        Doctrine\DBAL\DBALException: Failed to connect to the database: An exception occurred in driver: SQLSTATE[HY000] [2002] No such file or directory in /home/wwwroot/Host_work_A/domain/OANAS/web/lib/private/DB/Connection.php:64
        Stack trace:

  • zion 评论于 回复

    老师您好,请问我的nextcloud部署后,其他文件下载的时候速度都是很快,唯独mp4格式的下载很慢。。。

    • Bug侠 评论于 回复

      @zion
      呃…… :汗:
      我还没遇到这样的问题,只能理论上分析,你可以参考一下:
      将mp4文件至于nextcloud之外进行测试下载。比如把mp4文件放到根目录,直接通过http://域名/xxx.mp4这样的方式访问,看看下载速度。这样可以分析出到底是因为nextcloud或者是nginx/apache而造成的速度慢
      分析出是哪个组件的原因,然后再逐一检查……

      • 评论于 回复

        @Bug侠
        嗯。您好, 我放在网站目录测试了,单独直接下载开始几秒钟速度很快,到后面,,就很慢了,用的移动数据下载,然后用内网wifi下载较为正常,但是相当于其他文件格式下载速度还没没达到最大,,不知道哪里该优化,还是防火墙的原因,如果是防火墙,不应该只针对mp4 mov这些视频格式。

        • Bug侠 评论于 回复

          @张
          唉,这个就很难说了,首先通过你上述的操作,可以简单判断出来和Nextcloud的关系不大,因为抛开NC,单独下载也会复现此问题。之后还得根据实际情况再分析。比如后端参数配置、网络环境、缓存处理等等,我猜测和防火墙的关系应该不大。着重是http后端的配置方面。不好意思,没能给你点实质性的建议……

  • mdos 评论于 回复

    请教一下关于smbclient问题:我这边smbclient和php-client都在shell下手动装了,但是nextcloud挂载外部存储那里还是不行。这是什么原因呢?(只使用了apt-get install smbclient 和apt-get install php-smbclient)

    • Bug侠 评论于 回复

      @mdos
      您好,已更新一篇挂载SMB的文章,请参考:https://bugxia.com/1306.html

  • TaoGe 评论于 回复

    咨询一下,nextcloud和onlyoffice之间只能用https连接吗?http有办法不?

    • Bug侠 评论于 回复

      @TaoGe
      不好意思,没接触过nextcloud集成onlyoffice,所以没法回答。 :汗:

    评论(本站已开启评论回复邮件通知功能,请如实填写邮箱以便及时收到回复)