上一篇博文中我写了如何搭建 LNMP 环境和创建虚拟主机,既然准备工作都做好了,下面自然是要进行正式的建站了!下面我们就以前面我们搭建好的环境和虚拟主机为例,来教教大家怎么建好一个 NextCloud 网站。
一、教程测试环境
系统:Debian 10 64 位版
环境:LNMP,来自于 lnmp.org,使用 LNMP 1.7
程序版本:NextCloud 21.0.0
二、搭建环境并创建虚拟主机
具体的可以参照此文:[Debian]服务器搭建 LNMP 环境&创建虚拟主机教程
另外 NextCloud 的环境要求可以看这里:https://docs.nextcloud.com/server/latest/admin_manual/installation/system_requirements.html
2.1 PHP 注意事项
这里特别提一下,因为 NextCloud 需要的一些模块 LNMP 默认安装的环境没有提供,所以需要我们在编译环境前先加入几个编译参数让 PHP 安装上几个模块,省得后面发现缺了再编译安装麻烦。
由于这部分主要靠修改 LNMP 的配置文件完成,所以我这里就不说太多了,直接说具体的方法吧,总之就是在 LNMP 的安装目录(比如 /root/lnmp1.7)里找到 lnmp.conf 这个文件,把这行改成下面这个样子:
PHP_Modules_Options='--with-bz2 --enable-exif --with-gmp'
改完之后,如果已经安装过 PHP 了就重新编译安装一下,就是 LNMP 升级 PHP 的方法,只是可以输入现有 PHP 的版本不用真的去升级。
这里还有对 PHP 的一些模块要求:https://docs.nextcloud.com/server/latest/admin_manual/installation/source_installation.html
上面链接里还有 PHP 一些问题的解决办法,后面安装完毕之后的安全检查可能会碰到,如果能看到并自己配置的话,可以先在这里也配置好。
2.2 Nginx 注意事项
虽然 NextCloud 更推荐用 Apache,不过博主我还是更喜欢用 Nginx 一些,所以这里就只说 Nginx 的注意事项了。
前面我们弄好 LNMP 环境并创建好虚拟主机后,LNMP 会给我们生成一个网站的 Nginx 配置文件,这个配置文件位于/usr/local/nginx/conf/vhost 目录下,网站的配置文件名是你网站的域名。因为这个默认创建的配置并不太适合 NextCloud 的使用场景,所以这里更推荐按照官方的例子来进行修改写入:https://docs.nextcloud.com/server/latest/admin_manual/installation/nginx.html
注意在修改的时候,要看官方例子上的说明,替换一些域名和 SSL 证书之类的东西为你自己的。
三、正式搭建教程
3.1 准备资源
下面的命令请在登录到服务器的 SSH 后输入并执行:
1.进入虚拟主机根目录
如果你按照前面说的搭建教程创建好了虚拟主机,那么你的虚拟主机根目录一般默认为/home/wwwroot/XXX(XXX 是你绑定的域名),所以输入如下命令进入虚拟主机根目录:
cd /home/wwwroot/example.com
记得将命令中的 example.com 改为你的网站实际使用的文件夹名称。
2.到官网下载最新版服务端程序并保存到虚拟主机根目录
wget https://download.nextcloud.com/server/releases/nextcloud-21.0.0.zip
注意:链接请以官网最新版实际链接为准,最新版可以在这里找到:https://nextcloud.com/install/#instructions-server
3.解压该压缩包
unzip nextcloud-21.0.0.zip
注:unzip 后面接的是下载的实际压缩包名称。
4.删除 LNMP 自带的防跨目录功能文件 .user.ini
chattr -i /home/wwwroot/example.com/.user.ini rm -f /home/wwwroot/example.com/.user.ini
命令中的 example.com 这里记得改为你的网站实际使用的文件夹名称。
另外给大家说明下为什么要删除防跨目录的这个文件,本来这是 LNMP 自带的功能,主要是为了安全考虑,但是因为 NextCloud 会自带有这个文件用来设置一些功能,如果不删除自带的话,后面可能就通不过 NextCloud 的安全检查了,会报文件有差异。
好了,教程继续~
5.移动解压后的所有文件到虚拟主机的根目录
mv nextcloud/* /home/wwwroot/example.com
注意:/home/wwwroot/example.com 请替换成你虚拟主机的实际根目录!
6.设置好权限
chown www:www -R ./
7.补充说明
上面的步骤,其实也可以用文件管理器来操作完成,请按自己喜欢的来。
3.2 安装并配置 NextCloud
做完前面的事后,如果你的域名已经设置好了 IP 绑定,这个时候应该就可以输入你的域名进入到 NextCloud 的配置界面了。
刚进入配置界面,提示说 PHP zip 模块未安装:
注意:LNMP 1.7 似乎已经自带该模块,不需要再自己安装了,所以下面的这部分安装教程可以略过,不过我这里还是保留这部分内容,好让以后大家遇到类似的问题可以参考。
这需要我们重新编辑下 PHP 并加入 zip 模块才行,首先登录服务器 SSH 并输入如下命令:
vi /root/lnmp1.7/lnmp.conf
注意:这里是要更改 LNMP 安装目录下的配置文件,具体文件位置请以自己的服务器为准。
然后加入 zip 模块的编译参数,具体为打开文件之后按 i 开始编辑,找到如下位置并加入–enable-zip,加好后按 Esc 退出编辑状态,再输入:wq 保存并退出。
PHP_Modules_Options='--enable-zip'
保存好之后执行 PHP 升级操作:
cd /root/lnmp1.7 ./upgrade.sh php
注意:cd 后的目录请按自己服务器 LNMP 保存目录为准。
输入上面的命令之后,会让你输入需要安装的 PHP 版本号,并会提示你现在安装好的 PHP 版本号,因为我们只是重新编译并加入 zip 模块,所以直接输入现在安装好的 PHP 版本号就行了,当然你想升级一下再加入 zip 模块的话,版本号也可以自己选择。输入好版本号之后,回车并确认安装就会开始自动安装&升级了。
具体版本号查询可看官网:http://www.php.net
增加了 zip 模块后,再打开网站即可看到如下的界面:
- 用户名和密码填你想增加的账号
- 数据目录一般无需更改
- 数据库用户,数据库密码和数据库名请按照前面我们搭建环境和创建虚拟主机里的填写,不建议直接使用 Root 用户登录
- 数据库类型一般我们选择 MySQL/MariaDB 这一项
写完这些配置之后,我们的 NextCloud 算是初步搭建好了。不过。如果你打开后台,可能会看到一堆提醒信息,这说明我们还需要对服务器进行详细配置才行。
3.3 NextCloud 警告信息修复
上面配置完之后,我们初次登录 NextCloud,看到的大概是下面的画面:
我们看到它有个提醒,说代码完整性出现异常,点击这个提示,会进入到后台查看具体的警告:
根据上面的警告信息,我们来一项一项配置修复。不过这里需要给大家提醒一下:
- 第 2 条警告说缺失 fileinfo 模块,要安装这个模块,方法可以参考上面给 PHP 安装 zip 模块的教程,后面就不再另外说明了。但是请注意,这个模块对于低内存的服务器可能会编译失败,如果你的服务器内存低于 1 G,这里实在没办法可以放弃这一步。
- 第 5 条如果你是按照最开始说的搭建 LNMP 环境和创建虚拟主机做的,应该是不会看到这一条的,这条是说的未启用 HTTPS 访问服务,博主这里会出现是因为这里我只是因教程需要所搭建的网站,所以没有开启 HTTPS。
- 第 1 个错误修正:修改系统环境变量
大家可以可以看看官网的说明:https://docs.nextcloud.com/server/latest/admin_manual/installation/source_installation.html#php-fpm-tips-label
官网的教程对我使用的 LNMP 环境不太适用,LNMP 环境修改稍微有点不一样,请看下面的教程:
首先找到 LNMP 的 php-fpm 配置文件:/usr/local/php/etc/php-fpm.conf,使用命令编辑它:
vi /usr/local/php/etc/php-fpm.conf
按 i 在光标当前位置开启编辑,然后另起一行加入如下的一句:
env[PATH] = /usr/local/bin:/usr/bin:/bin:/usr/local/php/bin
按 Esc 退出编辑状态,并输入:wq 保存并退出。输入如下命令重启一下 php-fpm 即可。
lnmp php-fpm restart
- 修复第 3 个警告:部分文件未通过检查
官方说明:https://docs.nextcloud.com/server/latest/admin_manual/issues/code_signing.html
简单的说,通过不了检查直接下载原压缩包覆盖服务器上出问题的文件就行了。如果是按照前面的 LNMP 搭建起来的环境,一般没通过检查是因为根目录下的.htaccess 和.user.ini 文件,修改需要先执行一下命令。
在 SSH 上输入如下的命令:
chattr -i /home/wwwroot/你的网站目录/.user.ini
输入完成之后,先下载好前面我们解压安装的 NextCloud 服务器端压缩包并解压,使用文件管理一类的软件进入/home/wwwroot/你的网站目录,用我们新下载的压缩包里的文件,上传并覆盖前面提示未通过检查的文件,我们这里是.htaccess 和.user.ini 文件。
然后点击那条警告后面的 Rescan,警告应该就没了。
注:.user.ini 文件是 LNMP 中用来防跨目录的。
- 修复第 4 个警告:PHP 无法访问/dev/urandom
这个问题和前面的防跨目录文件.user.ini有关,解决问题也不麻烦,在 SSH 里输入下面的命令:
vi /usr/local/nginx/conf/fastcgi.conf
按 i 进入编辑模式,找到如下位置并修改得和下面一样(主要是最后一行),按 Esc 退出编辑状态,并输入:wq 保存退出。
# PHP only, required if PHP was built with --enable-force-cgi-redirect fastcgi_param REDIRECT_STATUS 200; fastcgi_param PHP_ADMIN_VALUE "open_basedir=$document_root/:/tmp/:/proc/:/dev/urandom";
搞定之后,重启一下 Nginx:
lnmp nginx restart
此步注意一下:如果你更改了 NextCloud 的文件存储目录,比如挂载了块存储将 NextCloud 的 data 文件夹移到了块存储中的时候,不仅要把块存储的权限设置好,同时也要在上面的 fastcgi.conf 文件中加入块存储的文件夹路径,否则可能会导致无法正常进入 NextCloud。
PS:如果怕麻烦的直接把最后一行备注了也行……
3.4 NextCloud 详细配置
上面的步骤都做完后,应该就不会有红色警告信息出现了,剩下的两项,是让我们设置内存缓存和更改 PHP Opcache 配置的,都不是必须项,不过还是建议大家按照提示来做,所以接下来我们就说说一些算是个性化的详细配置吧。
- 设置内存缓存
注意!这个需要先在你的服务器上安装相关的组件才行,这个在博主上一篇博文(开头说的那个)里面有说明(不知道的看这里:https://lnmp.org/faq/addons.html),请根据你自己的选择,按照官网教程修改:https://docs.nextcloud.com/server/latest/admin_manual/configuration_server/caching_configuration.html
下面我以本人选择的 Redis 来说下怎么设置:
编辑 NextCloud 的 config.php 配置文件,SSH 中输入如下命令:
vi /home/wwwroot/你的网站目录/config/config.php
按 i 进入编辑模式,在最后一行(也就是最后的 ); 这行前),加入如下内容:
'memcache.local' => '\OC\Memcache\Redis', 'memcache.distributed' => '\OC\Memcache\Redis', 'redis' => array( 'host' => 'localhost', 'port' => 6379, ),
官方推荐再加入一条文件锁的配置,要加入此功能,那么我们实际应该加入的内容如下:
'memcache.local' => '\OC\Memcache\Redis', 'memcache.distributed' => '\OC\Memcache\Redis', 'filelocking.enabled' => true, 'memcache.locking' => '\OC\Memcache\Redis', 'redis' => array( 'host' => 'localhost', 'port' => 6379, ),
添加完成之后,按 Esc 键退出编辑状态,并输入:wq 保存并退出即可。
当然,对于 Redis 官方还有一种推荐的配置,就是当 Redis 和 NextCloud 运行在同一服务器系统下的(一般都是的),使用如下的配置(这里我们再添加上文件锁):
'memcache.local' => '\OC\Memcache\Redis', 'memcache.distributed' => '\OC\Memcache\Redis', 'filelocking.enabled' => true, 'memcache.locking' => '\OC\Memcache\Redis', 'redis' => array( 'host' => '/var/run/redis/redis.sock', 'port' => 0, 'dbindex' => 0, 'password' => 'secret', 'timeout' => 1.5, ),
注:此配置中只有 host 和 port 是必须填写的,其它的是可选填写项。
PS:上面的命令不要重复加入,请仔细看说明,选一个你喜欢的加入就可以了。
- 更改 PHP Opcache 配置
在较低版本的 PHP 中,这个组件可能需要自己安装,教程可以参考内置缓存里贴的那个链接教程。找到 Opcache 配置文件并打开编辑(编辑和保存方法同上,不再另行说明,累_(:3」∠)_):
vi /usr/local/php/conf.d/004-opcache.ini
注意:一般的 PHP 配置文件是 php.ini,这里本人测试用的 LNMP 环境在开启了 Opcache 后,会单独生成专属于 Opcache 的配置文件,如果你用的不是博主测试用的环境,请直接在 php.ini 中更改有关设置。
按照提示,找到下面这些项目并与下面修改一致,没有的自己加上:
opcache.enable=1 opcache.enable_cli=1 opcache.interned_strings_buffer=8 opcache.max_accelerated_files=10000 opcache.memory_consumption=128 opcache.save_comments=1 opcache.revalidate_freq=1
保存之后,重启下 php-fpm:
lnmp php-fpm restart
注意:从下面开始的修改请按照自己的喜好来,不修改也没问题。
- 修改上传文件大小的限制
NextCloud 默认的上传文件大小限制是 512 MB,要想上传更大的文件,需要我们更改配置文件才行(注意,此处为我写的老教程内容,因为时间有限没有认真检查和更新这部分的教程,建议大家参考下面提供的官方链接修改,这里我以后有时间再来改写):
1.通过编辑 php.ini 配置文件并重启 php-fpm 生效,举例改为 16 G:
upload_max_filesize = 16G post_max_size = 16G
2.通过修改.user.ini 文件实现,具体修改设置同上例子。
3.直接在网站后台设置中更改。这个最简单,也是我最想说的,方法:
在 SSH 中输入如下命令:
chown www:www -R /home/wwwroot/你的网站目录/.user.ini
做完这步之后,直接在网站设置→其他设置中更改保存即可。
不过需要注意的是,这三中方法只是改了网站有关的设置,涉及到浏览器和系统的硬性限制的,这里改得再大也不一定有用。
关于更改上传限制和具体限制说明,可以看这里:https://docs.nextcloud.com/server/latest/admin_manual/configuration_files/big_file_upload_configuration.html
最后的补充
按照上面的教程做下来,你应该已经搭配好一个 NextCloud 的网站了,本博文对于用 LNMP 搭建时可能遇到的问题应该都有说明了,希望能帮到大家。至于有关客户端的配置和使用,开启服务器加密功能,或者是安装更多附加功能的教程,博主我可能会在日后再写点内容来说。