利用VPS搭建nextcloud

最近自己搭建了一个VPS,闲来无事就准备搞个nextcloud玩玩,期间也走很多弯路,不过现在就给大家简单的说明一下

  1. 基本准备工作
  2. lnmp的安装
  3. lnmp的配置方式
  4. nextcloud的部署

基本准备工作

1、首先要弄个vps这个就不在赘述了
2、我采用的lnmp的配置模式,即linux +ngnix+mysql+php的模式,后来因为用的人不多,就改成SQLITE更为方便一些,不过建议大家如果可以的话还是关联mysql,据说多人使用的效果比较好
3、建议初学者使用脚本搭建,lnmp.org或者https://oneinstack.com,推荐后者,从搭建来看oneinstack.com跟nextcloud的兼容更好一点。lnmp.org的脚本后续还要改一些参数对初学来说略显麻烦。

lnmp的安装

下载脚本

wget http://mirrors.linuxeye.com/oneinstack-full.tar.gz

cd oneinstack #如果需要修改目录(安装、数据存储、Nginx日志),请修改options.conf文件

screen -S oneinstack #如果网路出现中断,可以执行命令screen -R oneinstack重新连接安装窗口(如果没有 yum install screen -y 安装一下就可以了)

./install.sh (如果提示权限不足可以chmod +x install.sh 增加执行权限)

开始安装lnmp脚本,至于怎么选建议参考https://oneinstack.com/install/opcode cache 这个网页需要安装后面nextcloud要用到,memcached也装上,还有phpmyadmin这个也要装,这个是管理mysql数据库的
最后等待自动脚本安装结束。

nextcloud的部署

创建vhost首先你要创建自己的vhost,如何创建呢?cd oneinstack文件夹里面有一个vhost.sh的文件,然后输入./vhost.sh就开始进入vhost的创建步骤。
1、use php
2、是否开始ssl链接,建议一并配置一下,因为nextcloud还是需要用到ssl链接的,建议选Use Let's Encrypt to Create SSL Certificate and Key
3、输入你的域名:xxx.xxx.com
4、Please input the directory for the domain(输入你的网站文件地址 默认路径为/data/wwwroot/后面可自动生成建议默认)
5、Do you want to add more domain name?(是否绑定多个域名,一般不用,我这里n大家根据实际情况)
6、Do you want to redirect all HTTP requests to HTTPS? 是否重定向http至https ,选择y
7、Please enter Administrator Email(example: admin@example.com (管理员邮箱地址你自己的就行)
8、然后会开始自动申请免费的let's ENcrypt证书并绑定域名,创建ssl连接等,最后创建脚本文件。

下载nextcloud文件并部署wget https://download.nextcloud.com/server/releases/nextcloud-13.0.0.zipunzip nextcloud-13.0.0.zipmv nexcloud内的文件到你的vhost网站文件目录下,例如mv /root/nextcloud/* /date/wwwroot/nextcloud然后用ls确定一下文件夹和里面的文件是否均有www www权限,如果权限不对,利用chown www:www -R 你的目录试试看直接访问网址,输入数据库和管理员信息,安装。安装完成后跳转到首页就会提示:”No input file specified.”。因为没有执行伪静态。

伪静态,我想着重讲一下这个,参考来自: (https://www.zrj96.com/post-542.html)修改/usr/local/nginx/conf/vhost/你的网站.conf。参考https://www.zrj96.com/post-542.html博客里的伪静态内容比较的多,对于初学者经常在这里容易出现多加或者少加,或者哪里加错,导致整个conf失效无法正常使用,或者部分生效,网页出现白屏等异常情况。所以我将静态内容增加的部分,改成了conf文件,放入oneinStack中的rewirte文件夹,.conf

server {
listen 80;
listen 443 ssl http2;
ssl_certificate /usr/local/nginx/conf/ssl/nextcloud.51nb.win.crt;
ssl_certificate_key /usr/local/nginx/conf/ssl/nextcloud.51nb.win.key;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers EECDH+CHACHA20:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3D
ES:!MD5;
ssl_prefer_server_ciphers on;
ssl_session_timeout 10m;
ssl_session_cache builtin:1000 shared:SSL:10m;
ssl_buffer_size 1400;
add_header Strict-Transport-Security max-age=15768000;
ssl_stapling on;
ssl_stapling_verify on;
server_name nextcloud.51nb.win;
access_log /data/wwwlogs/nextcloud.51nb.win_nginx.log combined;
index index.html index.htm index.php;
root /data/wwwroot/nextcloud;
if ($ssl_protocol = "") { return 301 https://$host$request_uri; }
include /usr/local/nginx/conf/rewrite/none.conf;(改成include /usr/local/nginx/conf/rewrite/nextcloud.conf;)
PS:如果找不到这句,请直接添加改成那句话
#error_page 404 /404.html;
#error_page 502 /502.html;
后面的继续保留。

另外该静态conf只限于OneinStack,如果lnmp.org脚本的要使用必须修改nextcloud.conf #这部分吧,默认就有,不过有所不同,所以我合并了下,替换原来的就行

location ~ ^/(?:index|remote|public|cron|core/ajax/update|status|ocs/v[12]|updater/.+|ocs-provider/.+)\.php(?:$|/) {
fastcgi_split_path_info ^(.+\.php)(/.*)$;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param modHeadersAvailable true;
fastcgi_param front_controller_active true;
fastcgi_pass unix:/dev/shm/php-cgi.sock; #这边如果使用lnmp.org的自动安装的需要修改为fastcgi_pass unix:/tmp/php-cgi.sock;
fastcgi_intercept_errors on;
fastcgi_request_buffering off;
include fastcgi.conf;
}

重新加载nginx/etc/init.d/nginx reload应该就可以看到nextcloud的登陆界面,登陆后即可使用,其他功能还请自行体验和百度。有问题的可以在下面留言,当然我也是个新手,但是如果知道的话,我一定解答。

点赞