[Debian]在 LNMP 环境下的 NextCloud 安装与配置教程(日期:20180413)

2018年4月13日 0 条评论 307 次阅读 0 人点赞

上一篇博文中我写了如何搭建 LNMP 环境和创建虚拟主机,既然准备工作都做好了,下面自然是要进行正式的建站了!下面我们就以前面我们搭建好的环境和虚拟主机为例,来教教大家怎么建好一个 NextCloud 网站。

教程测试环境

系统:Debian 9 64 位版

环境:LNMP,来自于 lnmp.org

测试程序:NextCloud

 

搭建 LNMP 环境并创建虚拟主机

具体的可以参照此文:[Debian]服务器搭建 LNMP 环境&创建虚拟主机教程

 

下载并解压 NextCloud 到虚拟主机根目录下

下面的命令请在登录到服务器的 SSH 后输入并执行:

  • 进入虚拟主机根目录

如果你按照前面说的搭建教程创建好了虚拟主机,那么你的虚拟主机根目录一般默认为/home/wwwroot/XXX(XXX 是你绑定的域名),所以输入如下命令进入虚拟主机根目录:

cd /home/wwwroot/XXX

记得将命令中的 XXX 改为你的实际域名。

 

  • 到官网下载最新版服务端程序并保存到虚拟主机根目录
wget https://download.nextcloud.com/server/releases/nextcloud-13.0.1.zip

注意:链接请以官网最新版实际链接为准。

 

  • 解压该压缩包
unzip nextcloud-13.0.1.zip

注:unzip 后面接的是下载的实际压缩包名称。

 

  • 移动解压后的所有文件到虚拟主机的根目录
mv nextcloud/* /home/wwwroot/XXX

注意:/home/wwwroot/xxx 请替换成你虚拟主机的实际根目录!

 

  • 设置好权限
chown www:www -R ./

如果是按照前面教程搭建的 LNMP 环境,这里可能会遇到一个.user.ini 文件无法设置权限的提示,不用管它。

 

  • 补充说明

上面的步骤,其实也可以用文件管理器来操作完成,请按自己喜欢的来。

 

安装并配置 NextCloud

做完前面的事后,如果你的域名已经设置好了 IP 绑定,这个时候应该就可以输入你的域名进入到 NextCloud 的配置界面了。

刚进入配置界面,提示说 PHP zip 模块未安装:

这需要我们重新编辑下 PHP 并加入 zip 模块才行,具体的可以看下面的教程:

  • 登录服务器 SSH 并输入如下命令:
vi /root/lnmp1.5/lnmp.conf

注意:这里是要更改 LNMP 安装目录下的配置文件,具体文件位置请以自己的服务器为准。

 

  • 加入 zip 模块

打开文件之后按 i 开始编辑,找到如下位置并加入--enable-zip,加好后按 Esc 退出编辑状态,再输入:wq 保存并退出。。

PHP_Modules_Options='--enable-zip'

 

  • 执行 PHP 升级操作
cd /root/lnmp1.5
./upgrade.sh php

注意:cd 后的目录请按自己服务器 LNMP 保存目录为准。

 

  • 确定需要安装的 PHP 版本号

输入上面的命令之后,会让你输入需要安装的 PHP 版本号,并会提示你现在安装好的 PHP 版本号,因为我们只是重新编译并加入 zip 模块,所以直接输入现在安装好的 PHP 版本号就行了,当然你想升级一下再加入 zip 模块的话,版本号也可以自己选择。输入好版本号之后,回车并确认安装就会开始自动安装&升级了。

具体版本号查询可看官网:http://www.php.net

 

增加了 zip 模块后,再打开网站即可看到如下的界面:

  1. 用户名和密码填你想增加的账号
  2. 数据目录一般无需更改
  3. 数据库用户,数据库密码和数据库名请按照前面我们搭建环境和创建虚拟主机里的填写,不建议直接使用 Root 用户登录
  4. 数据库类型一般我们选择 MySQL/MariaDB 这一项

 

写完这些配置之后,我们的 NextCloud 算是初步搭建好了。不过。如果你打开后台,可能会看到一堆提醒信息,这说明我们还需要对服务器进行详细配置才行。

 

NextCloud 警告信息修复

上面配置完之后,我们初次登录 NextCloud,看到的大概是下面的画面:

 

我们看到它有个提醒,说代码完整性出现异常,点击这个提示,会进入到后台查看具体的警告:

 

根据上面的警告信息,我们来一项一项配置修复。不过这里需要给大家提醒一下:

  1. 第 2 条警告说缺失 fileinfo 模块,要安装这个模块,方法可以参考上面给 PHP 安装 zip 模块的教程,后面就不再另外说明了。但是请注意,这个模块对于低内存的服务器可能会编译失败,如果你的服务器内存低于 1 G,这里实在没办法可以放弃这一步。
  2. 第 5 条如果你是按照最开始说的搭建 LNMP 环境和创建虚拟主机做的,应该是不会看到这一条的,这条是说的未启用 HTTPS 访问服务,博主这里会出现是因为这里我只是因教程需要所搭建的网站,所以没有开启 HTTPS。

 

  • 第 1 个错误修正:修改系统环境变量

大家可以可以看看官网的说明:https://docs.nextcloud.com/server/13/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/13/go.php?to=admin-code-integrity

简单的说,通过不了检查直接下载原压缩包覆盖服务器上出问题的文件就行了。如果是按照前面的 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。

 

NextCloud 详细配置

上面的步骤都做完后,应该就不会有红色警告信息出现了,剩下的两项,是让我们设置内存缓存和更改 PHP Opcache 配置的,都不是必须项,不过还是建议大家按照提示来做,所以接下来我们就说说一些算是个性化的详细配置吧。

 

  • 设置内存缓存

注意!这个需要先在你的服务器上安装相关的组件才行,这个在博主上一篇博文(开头说的那个)里面有说明(不知道的看这里:https://lnmp.org/faq/addons.html),请根据你自己的选择,按照官网教程修改:https://docs.nextcloud.com/server/13/admin_manual/configuration_server/caching_configuration.html

下面我以本人选择的 Redis 来说下怎么设置:

编辑 NextCloud 的 config.php 配置文件,SSH 中输入如下命令:

vi /home/wwwroot/你的网站目录/config/config.php

按 i 进入编辑模式,在最后一行(也就是最后的 ); 这行前),加入如下内容:

'memcache.local' => '\OC\Memcache\Redis',
'redis' => array(
     'host' => 'localhost',
     'port' => 6379,
      ),

官方推荐再加入一条文件锁的配置,要加入此功能,那么我们实际应该加入的内容如下(注意多出来的最后一行):

'memcache.local' => '\OC\Memcache\Redis',
'redis' => array(
     'host' => 'localhost',
     'port' => 6379,
      ),
'memcache.locking' => '\OC\Memcache\Redis',

添加完成之后,按 Esc 键退出编辑状态,并输入:wq 保存并退出即可。

 

当然,对于 Redis 官方还有一种推荐的配置,就是当 Redis 和 NextCloud 运行在同一服务器系统下的(一般都是的),使用如下的配置(这里我们再添加上文件锁):

'memcache.local' => '\OC\Memcache\Redis',
'redis' => array(
     'host' => '/var/run/redis/redis.sock',
     'port' => 0,
     'dbindex' => 0,
     'password' => 'secret',
     'timeout' => 1.5,
      ),
'memcache.locking' => '\OC\Memcache\Redis',

注:此配置中只有 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

 

注意:从下面开始的修改请按照自己的喜好来,不修改也没问题。

  • 修改 Nginx 网站配置文件以适用于 NextCloud

详细的设置可以参考官网的教程:https://docs.nextcloud.com/server/13/admin_manual/installation/nginx.html

首先找到我们网站的配置文件,LNMP 一般位于/usr/local/nginx/conf/vhost 目录下,这里面会有一个以你网站域名命名的文件,用 vi 命令打开它并编辑加入如下的内容(在 sever 块中):

#禁用浏览器的类型猜测(安全考虑,只有一种选项,不需要不加即可)
add_header X-Content-Type-Options nosniff;
#启用XSS保护,并在检查到XSS攻击时,停止渲染页面(关闭为 0,只开启为 1)
add_header X-XSS-Protection "1; mode=block";
#搜索引擎索引相关
add_header X-Robots-Tag none;
#浏览器对文件不进行打开而是选择保存
add_header X-Download-Options noopen;
#跨域有关,描述不清楚(涉及安全)
add_header X-Permitted-Cross-Domain-Policies none;

#修改服务器端上传文件大小限制,设置为 0 为不限制上传大小
client_max_body_size 512M;

#设置错误页面
error_page 403 /core/templates/403.php;
error_page 404 /core/templates/404.php;

#设置重定向
location / {
    rewrite ^ /index.php$uri;
}

#设置一些关键目录的权限
location ~ ^/(?:build|tests|config|lib|3rdparty|templates|data)/ {
    deny all;
}


location ~ ^/(?:autotest|occ|issue|indie|db_|console) {
    deny all;
}


location ~ ^/(?:updater|ocs-provider)(?:$|/) {
    try_files $uri/ =404;
    index index.php;
}

#静态资源配置
location ~ \.(?:css|js|woff|svg|gif)$ {
    try_files $uri /nextcloud/index.php$uri$is_args$args;
    add_header Cache-Control "public, max-age=15778463";
    add_header X-Content-Type-Options nosniff;
    add_header X-XSS-Protection "1; mode=block";
    add_header X-Robots-Tag none;
    add_header X-Download-Options noopen;
    add_header X-Permitted-Cross-Domain-Policies none;
    #下面说的是对静态资源不开启日志记录
    access_log off;
}


location ~ \.(?:png|html|ttf|ico|jpg|jpeg)$ {
    try_files $uri /nextcloud/index.php$uri$is_args$args;
    #同上
    access_log off;
}

注意:如果你的服务器同时支持 HTTP 和 HTTPS 访问,那么两处的配置都要加上。

 

  • 修改上传文件大小的限制

NextCloud 默认的上传文件大小限制是 512 MB,要想上传更大的文件,需要我们更改配置文件才行。更改为两个部分,一是更改 Nginx 的限制(上一步中已说,不再重复),二是修改 PHP 的上传限制,这里有三种方法改,我都简单说一下:

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/11/admin_manual/configuration_files/big_file_upload_configuration.html

 

最后的补充

按照上面的教程做下来,你应该已经搭配好一个 NextCloud 的网站了,本博文对于用 LNMP 搭建时可能遇到的问题应该都有说明了,希望能帮到大家。至于有关客户端的配置和使用,开启服务器加密功能,或者是安装更多附加功能的教程,博主我可能会在日后再写点内容来说。

相似文章

12点半

Hello world!

文章评论(0)