前言
由于某些众所周知的原因,NextCloud的官网访问受阻,官方也没有提供任何中文文档。特此记录。
准备
- 下载最新的NextCloud安装包(需解决网络问题),不需要下载运行包和其他依赖包。
- 在整个配置过程中,关闭宝塔当前站点的防火墙(之后可以选择性开启,但是可能会出现问题)。
- 宝塔面板安装好PHP 7.1及以上版本。
开始配置
创建新PHP项目
- 数据库:MySQL数据库。
- PHP:7.1及以上版本。 在宝塔面板——软件商店,找到你的PHP版本,进入配置页面,选择“安装扩展”,安装“fileinfo”、“opcache”、“redis”、“apcu”、“imagemagick”这五个拓展,耐心等待安装完成。
添加后,绑定好域名,配置好SSL(推荐)。
在“网站目录”中,关闭“防跨站攻击”。
在“文件”中,找到刚刚创建的网站的根目录,删除所有文件。
如果全部删除后,发现仍有.user.ini
文件,删掉它Essential。
上传源码
宝塔后台上传后解压至项目根目录,然后删除zip源文件Essential。
NextCloud自带程序完整性检查,对于每个文件都要进行md5匹配,否则会有安全提示。
为了避免这些警告,我们还是最好先处理好。
配置系统
打开绑定域名,系统会自动进入安装界面。 填写管理员用户名、密码。此时不要点击“安装完成”。
点击“存储与数据库”选项,会弹出“数据目录”和“配置数据库”选项。
改变数据目录,不要使它在网站目录内(此问题可以通过添加deny项解决)。
然后选择数据库为MySQL/MariaDB
。
在宝塔面板内创建一个MySQL空白数据库,记下用户名和密码,然后填写到配置项内。
填写后的配置应该像这样:
注意数据库端口的问题,在localhost后面,输入冒号加上端口号,端口号应该为宝塔面板安装的MySQL的运行端口,如果你没有修改过,应该为3306。
然后点击安装完成,等待几十秒钟,就会进入首页了。
解决网络安全警告
直接点击右上角头像,进入“设置”页面,点击左侧“管理——概览”进入安全管理页面。
等待转圈完成,你会看到十多个安全提示,例如(我这里因为之前修复过一次了,有一些错误提示没有出现,具体的在下面):
以下说明中,如果标明“请修改配置文件”,代表这个问题可以在解决完其他主要问题后,通过修改配置文件的方式一起解决,不用单独进行修复了。
一些文件没有通过完整性检查。了解如何解决该问题请查看我们的文档
请点击右侧“无效文件列表”,查看提醒的错误文件,一般都是
.user.ini
文件不匹配,或者是你没有删除你的程序源码包,有了多余的文件。PHP 的设置似乎有问题, 无法获取系统环境变量. 使用 getenv(”PATH”) 测试时仅返回空结果.
编辑
/www/server/php/73/etc/php-fpm.conf
文件,路径中的73请替换为你的php版本,71为7.1,72为7.2,以此类推。 在文件的最后面添加如下代码:/www/server/php/7x/etc/php-fpm.confphpenv[HOSTNAME] = $HOSTNAMEenv[PATH] = /usr/local/bin:/usr/bin:/binenv[TMP] = /tmpenv[TMPDIR] = /tmpenv[TEMP] = /tmp注意是在文件最后,也就是[www]下面,而不是在[global]下面,否则php会无法启动(不要问我怎么知道的)。
HTTP的请求头 “Strict-Transport-Security” 未设置为至少 “15552000” 秒。为了提高安全性,建议参照security tips ↗中的说明启用HSTS。
请修改配置文件。
PHP 模块 ‘fileinfo’ 缺失. 我们强烈建议启用此模块以便在 MIME 类型检测时获得最准确的结果.
在宝塔面板——软件商店,找到php 7.X,进入配置页面,选择“安装扩展”,安装“fileinfo”、“opcache”、“redis”、“apcu”、“imagemagick”这五个拓展,耐心等待安装完成。(其余的拓展后面都会用到)
您的网页服务器未正确设置以解析“XXXX”。更多信息请参见文档。
请修改配置文件。
内存缓存未配置,为了提升使用体验,请尽量配置内存缓存。更多信息请参见文档。
- 在宝塔面板——软件商店,安装Redis,里面的配置不需要修改。
- 在宝塔面板——软件商店,找到php 7.X,进入配置页面,选择“安装扩展”,安装“fileinfo”、“opcache”、“redis”、“apcu”、“imagemagick”这五个拓展,耐心等待安装完成。(已执行过可忽略)
- 进入网站根目录,打开
config
文件夹,编辑config.php
文件,在最后一个逗号后面回车,添加以下内容:
.../config/config.phpphp'memcache.local' => 'OCMemcacheAPCu','memcache.distributed' => 'OCMemcacheRedis','redis' =>array('host' => 'localhost','port' => 6379,),'memcache.locking' => 'OCMemcacheRedis',- 如果刷新网站,发现网站报错了,请到“软件商店”中找到Redis,看看它是否在运行,如果它停止了,请重启这个服务。
PHP的组件OPcache没有正确配置,为了提供更好的性能,我们建议在php.ini文件中使用下列设置:XXXX
正常情况下新安装的NextCloud都会出现这个警告。 在宝塔面板——软件商店,找到php 7.X,进入配置页面,选择“安装扩展”,安装“fileinfo”、“opcache”、“redis”、“apcu”、“imagemagick”这五个拓展,耐心等待安装完成。(已执行过可忽略) 在宝塔面板——软件商店,找到php 7.X,进入配置页面,选择“配置文件”,快捷键
Ctrl+F
搜索一下[Zend Opcache]
,找到配置opcache的位置。phpopcache.enable=1opcache.enable_cli=1opcache.interned_strings_buffer=8opcache.max_accelerated_files=10000opcache.memory_consumption=128opcache.save_comments=1opcache.revalidate_freq=1不要全部覆盖然而全部覆盖也不会出错,最好是找到对应的项然后对它进行修改。
- 如果值不一样就去更改它,变成上面代码的值。
- 如果找不到对应的项,就在最底下复制粘贴添加一项。
- 如果找到了对应的项,但是这一项的最前面有一个分号
;
,把分号去掉,然后修改它的值,变成上面代码的值。
具体的内容我忘记了,但是大概说的就是“WebDAV不能被正常地访问”。关掉宝塔防火墙。请修改配置文件。
你的数据存储目录可以从互联网上直接访问。.htaccess文件没有生效,请配置你的网页服务器以避免数据存储目录可以从外部访问或将数据存储目录转移到网页服务器根目录之外。
请把网站根目录下的data文件夹移出网站根目录,并放置在其他位置,然后进入网站根目录,打开
config
文件夹,编辑config.php
文件,将datadirectory
的值修改为你所移动到的文件夹绝对路径。你正在通过HTTP访问该站点,我们强烈建议您按照安全提示中的说明配置服务器强制使用HTTPS.
请配置SSL证书,本地服务器可以使用自签名证书(需用户端安装证书),并在宝塔中配置强制HTTPS。
数据库丢失了一些索引。由于给大的数据表添加索引会耗费一些时间,因此程序没有自动对其进行修复。您可以在 NextCloud 运行时通过命令行手动执行 “occ db:add-missing-indices” 命令修复丢失的索引。索引修复后会大大提高相应表的查询速度。
按照提示,连接SSH终端,在网站根目录下执行
sudo -u www ./occ db:add-missing-indices
命令即可。数据库中的一些列由于进行长整型转换而缺失。由于在较大的数据表重改变列类型会耗费一些时间,因此程序没有自动对其更改。您可以通过命令行手动执行 “occ db:convert-filecache-bigint” 命令以应用挂起的更改。该操作需要当整个实例变为离线状态后执行。查阅相关文档以获得更多详情。
按照提示,连接SSH终端,在网站根目录下执行
sudo -u www ./occ db:convert-filecache-bigint
命令即可。如果询问是否继续,请输入y
并回车。
具体对于不同的情况,可能会有更多的安全警告,如果你出现了上文中未提到的情况并且找到了解决方案,可以在底部留言(谢)。
修改配置文件,开启伪静态
NextCloud的伪静态配置非常麻烦。如果使用LAMP程序默认提供了.htaccess
文件,如果使用LNMP就需要使用下面的配置文件进行配置。
(操作前请确认伪静态开关已开启)
在你原有配置文件中,找到#SSL-END
一行,将下面的内容复制粘贴到它的下一行。
nginx
add_header X-Content-Type-Options nosniff;add_header X-XSS-Protection "1; mode=block";add_header X-Robots-Tag none;add_header X-Frame-Options SAMEORIGIN;add_header X-Download-Options noopen;add_header X-Permitted-Cross-Domain-Policies none;add_header Referrer-Policy no-referrer;# Remove X-Powered-By, which is an information leakfastcgi_hide_header X-Powered-By;# HSTS & Cacheadd_header Strict-Transport-Security "max-age=15768000; includeSubDomains; preload;";large_client_header_buffers 4 16k;client_max_body_size 10G;fastcgi_buffers 64 4K;gzip off;# DENY-URLS-STARTlocation ~ ^/(.user.ini|.htaccess|.git|.svn|.project|LICENSE|README.md) {return 404;}# DENY-URLS-END# Rewritelocation ~* /core/(?:js/oc.js|preview.png).*$ {rewrite ^ /index.php last;}location / {rewrite ^ /index.php$request_uri;}location ~ ^/(?:build|tests|config|lib|3rdparty|templates|data)/ {deny all;}location ~ ^/(?:.|autotest|occ|issue|indie|db_|console) {deny all;}location ~ ^/(?:index|remote|public|cron|core/ajax/update|status|ocs/v[12]|updater/.+|oc[ms]-provider/.+).php(?:$|/) {fastcgi_split_path_info ^(.+?.php)(/.*|)$;include fastcgi.conf;fastcgi_param PATH_INFO $fastcgi_path_info;# Avoid sending the security headers twicefastcgi_param modHeadersAvailable true;fastcgi_param front_controller_active true;fastcgi_pass unix:/tmp/php-cgi-73.sock;fastcgi_intercept_errors on;fastcgi_request_buffering off;}location ~ ^/(?:updater|oc[ms]-provider)(?:$|/) {try_files $uri/ =404;index index.php;}# Adding the cache control header for js and css files# Make sure it is BELOW the PHP blocklocation ~ .(?:css|js|woff2?|svg|gif)$ {try_files $uri /index.php$request_uri;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;add_header Referrer-Policy no-referrer;access_log off;}location ~ .(?:png|html|ttf|ico|jpg|jpeg)$ {try_files $uri /index.php$request_uri;access_log off;}# CalDAV & CardDAVrewrite /.well-known/carddav /remote.php/dav permanent;rewrite /.well-known/caldav /remote.php/dav permanent;
配置完成
再次刷新安全检查页面,查看是否有绿色对号出现。
如果你遇到了上文中未提到的情况,可以尝试到谷歌搜一下解决方案(推荐使用英文进行搜索)。
配置七牛云存储
插件开启
点击右上角头像,进入“应用”页面,找到“External storage support”,有的时候会显示中文“外部文件存储”,点击右侧“启用”。 若网页在点击“启用”按钮后长时间无反应,请尝试更换浏览器后再试。
插件配置
点击右上角头像,进入“设置”页面,点击左侧“管理——外部存储”进入外部存储管理页面。
如果提示“没有安装 “smbclient”无法挂载 “SMB / CIFS”, “SMB / CIFS 使用 OC 登录信息”. 请联系您的系统管理员安装”,请按顺序运行以下命令:
bash
yum install libsmbclient libsmbclient-devel -ypecl channel-update pecl.php.netpecl install smbclient
在宝塔面板——软件商店,找到php 7.X,进入配置页面,选择“配置文件”,找到配置文件最后面,添加一行:
extension="smbclient.so"
然后刷新一下外部存储配置页面,尝试一下提示是否消失。
添加七牛云存储
点击“增加存储”,选择“Amazon S3”,认证选择默认的“Access Key”。
配置中,Bucket填写对象存储Bucket名称,主机名填写七牛云对象存储后台的Endpoint(区域节点),例如华北区域的区域节点可能为s3-cn-north-1.qiniucs.com
。
底下可以勾选SSL,下部分Access Key和Secret Key填写七牛云用户中心的密钥即可。
右侧三个点,选择“启用共享”,点击对勾保存,左侧出现绿色对号,配置即成功。
注意,这个功能给我的体验极差,预览视频特别卡顿,可能是因为服务器出站带宽过低导致的。
当然,华为云、Google Drive也可以这么配置,同时如果你使用的是阿里云的ECS,你也可以将购买的OSS挂载到你的ECS上,通过添加一个“本地”存储来实现高速上传下载(内网速度超快)。具体网上有详细案例。
一些提示
- 不要在配置文件中自行更改删除添加内容,尤其是不要开启自定义404文件!不要开启自定义404文件!否则你会发现网页快速MarkDown栏会一直转圈!困扰了我很长时间!
- 未完待续…
结束语
如果有任何问题,可以在下方进行留言(使用Github登录)。