宝塔php环境变量配置,宝塔面板部署NextCloud15.0.5逐一解决后台安全及设置警告

nextcloud可以看做是一款基于owncloud的私有云解决方案。如果只需要简单的使用nextcloud,最基本的部署环境只需要nginx(apache)+php即可。

记录一下在宝塔面板环境下搭建nextcloud的过程中出现的一些问题及解决。

=======更新========

一、部署

部署的过程不再详述,总结一下就是:

1.宝塔面板安装nginx+php7.2(注意nextcloud从13.0版本开始才支持php 7.2)

2.下载压缩包并上传

3.服务端解压并访问

4.填写安装信息(用户名、密码),如果只是简单使用,可直接使用SQLite作为数据库,不需要MySQL

具体安装教程请参照以下链接:

二、发现问题

经过部署,nextcloud已经可以在web端或者客户端使用了,体验上来说,是没有任何影响的。但是从web端进入管理页面,会有如下错误

2019030614121662-1024x533.png

作为一个强迫症,不解决这些问题怎么行呢

三、逐一解决

1.PHP 的设置似乎有问题, 无法获取系统环境变量. 使用 getenv(\”PATH\”) 测试时仅返回空结果.

从宝塔文件管理,打开/www/server/php/73/etc/php-fpm.conf,在其尾部添加一行

env[PATH] = /usr/local/bin:/usr/bin:/bin:/usr/local/php/bin

2019030614155525.png保存并重启PHP即可解决该问题

2.PHP 模块 ‘fileinfo’ 缺失. 我们强烈建议启用此模块以便在 MIME 类型检测时获得最准确的结果

这个也很简单,因为php环境默认是没有安装fileinfo这个扩展模块的,所以手动去宝塔PHP管理选项中安装fileinfo扩展即可解决该问题

2019030614181083.png

3. HTTP的请求头 “Strict-Transport-Security” 未设置为至少 “15552000” 秒。

解决方法还是修改nextcloud绑定的网站配置文件,添加一行header信息

add_header Strict-Transport-Security "max-age=63072000;";

2019030614215297-1024x469.png保存即可生效

4.内存缓存未配置,为了提升使用体验,请尽量配置内存缓存

这个问题是指php的缓存模块没有安装,nextcloud支持APCu、Memcached、Redis等模块,选择其中一个安装。

首先,我们来安装服务,进入管理面板–软件管理–运行环境–redis-点击安装,等待完成

2019030614303895-1024x271.png

完成之后开始第二步,配置设置。这一步根据自己需要进行配置。注意安全问题哦

我这里就改一下设置密码验证,修改端口等

2019030614334069-1024x381.png

然后安装php扩展

2019030614360016.png等待完成。完成后重启即可

在宝塔中放行自己设置的端口

2019030615161228-1024x190.png

进入nextcloud网站根目录。找到config文件

2019030615173375-1024x301.png

);

前添加以下内容

'dbuser' => 'cloud',

'dbpassword' => 's3wxbtbptJWGRRmM',

'installed' => true,

'memcache.local' => '\OC\Memcache\Redis',

'redis' => array(

'host' => 'localhost',

'port' => redis设置的端口,

'password' => 'redis设置的密码',

),

刷新页面 ,配置成功

5. 您的数据目录和文件可以从互联网直接访问..htaccess文件不起作用。

解决方法是修改nextcloud绑定的网站配置文件,添加nextcloud常用目录禁止访问即可

location ~ ^/(?:build|tests|config|lib|3rdparty|templates|data)/

{

deny all;

}

2019030616025973-1024x620.jpg

照上图操作,添加完毕,保存后即可生效。

6.您的网页服务器未正确设置以解析“/.well-known/caldav”及您的网页服务器未正确设置以解析“/.well-known/carddav”

这两个警告可以一起解决,出现该提示一般是因为这两个路径的伪静态设置有问题,导致无法正常访问。

解决方法就是添加两行重定向配置

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

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

2019030615495088.png

7.HTTP的请求头 “Referrer-Policy” 未设置为 “no-referrer”, “no-referrer-when-downgrade”, “strict-origin” or “strict-origin-when-cross-origin”. 这会导致信息泄露

大意是,需要设置一个Referrer-Policy请求头来提高安全性。Nginx配置文件里添加:

add_header Referrer-Policy "no-referrer";

2019030615524939.png

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

要解决这个问题很简单,打开无效文件列表,里面会把NextCloud目录下多余的文件全部罗列出来,照着这个列表,删除相关文件,即可解决。(也就是说,NextCloud文件夹里面不要放一些乱七八糟的文件)。

2019030615583293.png

删除文件后,需要点击重新扫描,再次检查,就不会有警告提示了。

2019030615592114.png

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

10.PHP 的 OPcache 模块未载入。推荐开启获得更好的性能。

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

以上三个警告是未检测到PHP相关模块的警告,可以通过安装PHP模块,一起解决。

根据提示,需要安装的模块分别为fileinfo、opcache、imagemagick。

2019030616053839-1024x667.jpg

12.数据库中的一些列由于进行长整型转换而缺失。由于在较大的数据表重改变列类型会耗费一些时间,因此程序没有自动对其更改。您可以通过命令行手动执行 “occ db:convert-filecache-bigint” 命令以应用挂起的更改

此警告是说,数据库的一些索引丢失了,需要使用OCC修复一下。OCC是owncloud的命令行,而nextcloud又是基于owncloud开发的,所以需要用到OCC来修复丢失的数据库索引。

修复命令为:

cd /www/wwwroot/cloud.miensi.com

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

2019030616210434.png

执行后,根据提示,按y,回车

执行正常后,没有任何提示,返回提示符,表示执行完毕。

13.最近一次执行后台任务运行时间为 2 小时前,似乎哪里出了问题。 请检查后台任务设置

后台开启路径:

设置->基本设置-> 后台任务 点选 第三个选项 Cron

使用系统 cron 服务每 15 分钟执行一次 cron.php 文件.cron.php 需要被系统用户 “www” 执行.

2019030616414311.png

服务器crontab定时执行任务

用ssh连接到服务器在root用户下执行 crontab -u www -e

按I进入 编辑状态 输入要执行的计划任务

*/15 * * * * php -f /www/wwwroot/cloud.miensi.com/cron.php

按esc输入 :wq! 保存退出,重新刷新网页即可正常

至此,所有安全及设置警告全都解决,再次执行检查后,提示 所有检查已通过

2019030616400078-1024x541.png