因为工作需要的关系,前不久让父亲大人把我房间内积灰已久的群晖D216+寄回了杭州,折腾的心又一次在燃烧,于是才有今天的这篇教程。
本篇文章部分内容出于篇幅考虑,暂时略过。但有人需要,后期会考虑尽可能补充。
一些准备
1、套件安装
首先,确保群晖安装了 webstation
套件,还有php7.0
套件,phpmyadmin
套件,Apache2.4
套件(这里我选择Apache
2.4),数据库Mariadb5
或Mariadb10
套件。不多赘述请自行去套件中心安装。
2、安装 ipkg
打开套件中心,进入设置页面,常规设置中将信任层级调整为任何开发者
添加ipkg的软件源。位置填写为http://www.cphub.net
名称随意。
套件中心搜索ipkg安装。
NextCloud安装
1、使用ssh
终端工具登陆群晖系统后切换为root
用户),进入web目录
提示:输入sudo -i
切换为root
用户。参考文章《群晖Nas获取root权限教程》
#这里以web目录所在的实际路径为准
cd /volume1/web/
2、下载nextcloud安装包
#安装解压工具
ipkg install unzip
#下载
wget --no-check-certificate https://download.nextcloud.com/server/releases/nextcloud-15.0.5.zip
#解压
unzip nextcloud-15.0.5.zip
3、权限设置
将nextcloud目录所属用户和组为更改为 http
并设置0755
权限
chown -R http:http nextcloud
chmod -R 0755 nextcloud
4、配置虚拟主机
接下来就是进入webstation
设置网站信息了,端口可以自己指定,没有安装证书的,可以先用http端口。如下图:
5、创建数据库
打开phpmyadmin
创建nextcloud
需要的数据库,如果安装了MariaDB5
和MariaDB10
,建议选Mariadb10
。
打开浏览器输入http://ip:端口
进入安装页面,填写管理员账号密码、数据库相关信息,完成安装。需要注意:Mariadb10
端口为3307
。数据库地址可以填写为 127.0.0.1:3307
安装完毕。
一些优化
1、建议在PHP7 核心配置文件php.ini
中开启opcache
和opcache file cache
,对于网站性能有一定的帮助。
opcache.enable=1 # 1→1
opcache.enable_cli=1 # 0→1
opcache.interned_strings_buffer=8 # 4→8
opcache.max_accelerated_files=10000 # 2000→10000
opcache.memory_consumption=128 # 64→128
opcache.save_comments=1 # 1→1
opcache.revalidate_freq=1 # 2→1
; 指定目录生成缓存
opcache.file_cache=/tmp/cache
2、启用会话保持。修改/volume1/web/nextcloud/config/config.php
在末尾);
前增加下面两行。
'session_lifetime' => 60 * 60 * 24, #Session 保留时间
'session_keepalive' => true, #保持 Session 活跃
3、启用Memcached
&APCu
缓存
请确保群晖已经安装 Memcached 套件,PHP7.2 套件默认自带memcached
&apcu
模块但需要在指定PHP版本的php.ini
手动添加路径->查看如何添加扩展,然后修改 /volume1/web/nextcloud/config/config.php
文件,在最后一行);
前添加配置:
'memcache.local' => '\OC\Memcache\APCu',
'memcache.distributed' => '\OC\Memcache\Memcached',
'memcached_servers' => array(
array('localhost', 11211),
),
4、Nextcloud 文件扫描
- 手动扫描:可以在命令行使用
php occ files:scan --all
命令执行文件扫描。 - 自动扫描(推荐):只需要修改
/volume1/web/nextcloud/config/config.php
文件,在文件最后一行);
前添加配置:'filesystem_check_changes' => 1,
选项实现文件夹的自动扫描,实测效果很理想。
5、清理已删除的文件
# 群晖这里使用http的用户身份运行下面命令
sudo -u http:http php /nextcloud路径/occ trashbin:cleanup <username>
用于移除特定用户<username>
已删除的文件,多个用户名使用空格隔开。如果要删除所有用户的已删除文件需加上 --all-users
,建议配合cron
计划自动定时执行。
更新OCC
使用说明,请运行 sudo -u http:http php occ
命令进行查看。
端口转发/端口映射
1、外网访问首先要在控制面板 - 外网访问中做端口转发。
2、如果没有公网IP,请阅读文章《LanProxy 使用教程》以及《Frp内网穿透加速方案》。将本地端口映射到可以正常进行外网访问的VPS服务器,以达到内网穿透的目的。
反向代理
完成端口映射、内网穿透相关操作后,接下来就是反向代理绑定域名。将xx.com(用于绑定Nextcloud的域名)解析到lanproxy服务器的IP地址上。
这里以Nginx为例,假设我们拥有一台闲置的美国VPS服务器。首先要在这台闲置的服务器中安装nginx,觉得麻烦可以直接安装使用军哥的LNMP一键安装脚本。
wget http://soft.vpser.net/lnmp/lnmp1.5.tar.gz -cO lnmp1.5.tar.gz && tar zxf lnmp1.5.tar.gz && cd lnmp1.5 && ./install.sh lnmp
具体安装步骤不赘述,请参考->安装步骤
添加一个Vhots的配置文件 xx.com.conf
server {
listen 80;
#填写用于绑定Nextcloud的域名
server_name xx.com ;
#301跳转到https,如果不使用https协议可删除这行。
return 301 https://xx.com$request_uri;
location / {
proxy_pass http://127.0.0.1:7088; #lanproxy服务端转发nas,http所对应的端口
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
# 如果不使用https协议的下面部分可以略过。
server {
listen 443 ssl http2;
#填写用于绑定Nextcloud的域名
server_name xx.com ;
ssl_certificate /usr/local/nginx/fullchain.cer; #SSL证书路径
ssl_certificate_key /usr/local/nginx/domain.key;#证书密钥路径
ssl_stapling on;
ssl_stapling_verify on;
resolver 1.1.1.1 1.0.0.1 valid=300s;
resolver_timeout 5s;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers 'TLS13-AES-256-GCM-SHA384:TLS13-CHACHA20-POLY1305-SHA256:TLS13-AES-128-GCM-SHA256:TLS13-AES-128-CCM-8-SHA256:TLS13-AES-128-CCM-SHA256:EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+ECDSA+AES128:EECDH+aRSA+AES128:EECDH+ECDSA+AES256:EECDH+aRSA+AES256:SSLCipherSuiteECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:AES256-GCM-SHA384:AES128-GCM-SHA256:AES256-SHA256:AES128-SHA256;';
ssl_prefer_server_ciphers on;
add_header X-Frame-Options "SAMEORIGIN";
add_header X-XSS-Protection "1; mode=block";
add_header X-Content-Type-Options "nosniff";
location / {
proxy_pass https://127.0.0.1:7443; #lanproxy服务端转发nas,https所对应的端口。
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Remote-Port $remote_port;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_redirect off;
}
}
重启nginx
/etc/init.d/nginx restart
任务计划
有时候我们发现从本地上传数据到nextcloud
的data
目录后,网盘页面中却不显示,那可能是因为没有刷新。默认的AJAX
方式加载反而让页面更加缓慢。当然其实还有另外两种任务执行方式。这里我推荐使用 cron
。
登陆NextCloud
,进入设置->基本设置,将后台任务设置为cron
然后使用ssh
终端工具登陆群晖系统后切换为root
用户,使用nano
或vi
工具编辑 /etc/crontab
文件
vi /etc/crontab
添加一条任务计划,并保存
*/5 * * * * sudo -u http php -f /volume1/web/nextcloud/cron.php
重启群晖的 crontab 服务,即可
# DSM 6+
synoservice --restart crond
# DSM 7+
synosystemctl restart crond
说明:表示每隔5分钟,自动执行一次任务。
一点尾巴
在DSM
系统里安装私有云盘可能会被人认为是一件多此一举的事情,我们本不该对任何一个人的个人喜好做评价,喜欢本来就是一件主观的事情。
修改Crontab文件没用,用群晖的任务计划执行php74 -f /volume1/web/nextcloud/cron.php,输出:OCP\HintException: [0]: Memcache \OC\Memcache\APCu not available for local cache (Is the matching PHP module installed and enabled?)
不是没用,报错显示的很清楚你配置文件有错误。
root 进 ssh 用 find 命令你就找到了
您的网页服务器未正确设置以解析“/.well-known/caldav”。更多信息请参见文档。
您的网页服务器未正确设置以解析“/.well-known/carddav”。更多信息请参见文档。
请问一下出现这种提示在那里修改?
apache & nginx 添加重写规则(取决于你的服务器)nginx参考
https://docs.nextcloud.com/server/18/admin_manual/installation/nginx.html
apache 参考https://docs.nextcloud.com/server/18/admin_manual/issues/general_troubleshooting.html#service-discovery-label
官方文档里其实有的如果是nginx 则在 server内添加
apache 则添加
感谢回复,可是修改群晖自带的nginx的路径在哪呢?
自己百度一下好吗,发那么多条真的很烦人。我没有义务一定要帮你啊
我群晖安装了PHP7.2,如果默认有memcached,请问wordpress怎么启用memcached,我在后台安装了插件,但是显示没有memcached扩展?
1、首先群晖套件中需要安装memcached。
2、群晖套件php7.2默认已经安装了
memcached
扩展的,你需要找到php7.2
对应的php.ini
文件追加注:volume2 修改你对应的磁盘
详见文章 -> 群晖套件中的PHP如何添加Acpu/Redis/Memcached等扩展
十分感谢!!一会就试试。博主人真好!
redis 默认密码默认端口哪里获取哈
redis默认端口就是6379,没有默认密码。