在Ubuntu上部署Nextcloud私有云盘的方法
接下来我们继续讲如何在ubuntu server上来安装此应用。其实,Ubuntu Server上部署nextcloud应用有两种方法:
使用snap一键部署
优点:快速,简单
缺点:调优麻烦,很多都是封装好的版本,没法调整。
全新安装来进行部署
有点:全新安装,自定义方便,比如选择PHP版本等。
缺点:安装过程稍微麻烦,需要耐心看完。
一:使用snap一键部署的方法
snap是ubuntu版本有的一种容器,通俗理解的话就是类似docker。
使用snap可以快速部署应用,因为snap服务已经将应用打包完毕。在安装的过程中用到的命令如下:
sudo apt-get update
sudo apt install snapd
sudo snap install nextcloud
只需要简单三条命令,成功安装完成之后,只要输入http://ip,进入安装界面,设置相应的数据库等信息,设置好管理员的用户名密码后,稍等之后即可完成安装。
注意事项:
因为snap的源在国外,所以连接的速度有时候会非常慢,如果能翻墙的话速度就会快很多。我是用国外的VPS主机,10分钟之内就全部搞定了。但是使用国内的服务器安装的话就只有只有10K左右的下载速度,需要10个小时以上。
Snap的方式也有一些缺点,比如数据库版本、php等都是自带的,但是简单速度快的特点还是值得试试的。
建议小白使用这个方法来进行安装,毕竟使用才是我们的最终目标。安装的过程几年都会用不到。
二:全新安装来进行部署的方法
首先,同样的需要进行安装一下几个应用。比如PHP\MYSQL\NGINX
跟之前的安装过程有很多相同之处,不同的地方就是把命令改成sudo apt-get install,替换掉yum install 。
Nginx与php的配合调优也是要注意的地方。
NGINX
PHP
PHP-FPM
NEXTCLOUD
安装nginx和php环境
sudo apt-get install nginx
sudo apt-get install php
安装完成之后,用PHP -V检查版本信息,nextcloud要求使用的php版本要在7以上。同时用rpm -qa |grep php检查一下所有的安装包,如果缺失注意进行安装。
本例当中使用的是PHP70W版本,注意安装PHP-FPM的话也要选择对应版本。要安装一个PHP-INTL的包,否则后台会一直报错。
我选择的是PHP7.2的版本,同样要安装PHP-FPM,版本要对应。
sudo apt-get install php7.2-php-intl
安装完成之后,可以启动nginx和php-fpm,启动命令如下
sudo service nginx startsudo service php-fpm start
配置实现 PHP和NGINX的支持最为重要,这里牵涉到两个注意的配置文件。
[root@WYCJ-WEB02 ~]# sudo locate www.conf
/etc/php-fpm.d/www.conf设置运行的账号全部为nginx
user = nginx
; RPM: Keep a group allowed to write in log dir.
group = nginxlisten的方式和端口一定要正确,此处的配置与NGINX一定要对应。
listen = 127.0.0.1:9000启用此处几个配置
env[HOSTNAME] = $HOSTNAME
env[PATH] = /usr/local/bin:/usr/bin:/bin
env[TMP] = /tmp
env[TMPDIR] = /tmp
env[TEMP] = /tmp
下一步,创建一下session目录,并且修改权限。
sudo mkdir -p /var/lib/php/session
sudo chown nginx:nginx -R /var/lib/php/session/
至此,可以用phpinfo.php来检查PHP的版本,以及是否能够支持PHP环境。
安装和配置 MariaDB
使用CENTOS来安装mysql数据或者使用mariadb都是比较简单的过程。
sudo apt-get install mysql-serversudo service mysql start
mysql -uroot -p
使用root用户的密码能够登录,如果需要进行密码的修改
创建数据库
create database nextcloud_db;
生成SSL证书
此步骤不一定必须,但是为了后面配置文件一致,所以也可以使用此证书。
证书的申请可以去网上腾讯云或者其它的平台申请免费的证书,此处使用openssl生成自定义证书。
#创建文件证书的目录<br/>sudo mkdir -p /etc/nginx/cert/<br/># 生成证书<br/>openssl req -new -x509 -days 365 -nodes -out /etc/nginx/cert/nextcloud.crt -keyout /etc/nginx/cert/nextcloud.key<br/>#修改权限<br/>sudo chmod 700 /etc/nginx/cert<br/>sudo chmod 600 /etc/nginx/cert/*
自定义证书在CHROME浏览器中打开的时候会提示不安全,就像下图这个样子。
点击忽略就可以了,或者安装证书
安装和配置nextcloud
文件的话可以直接使用wget进行下载,也可以在本机下载后通过ftp等方式上传到后台解压,无非就是把网站程序上传到nginx的目录下。
Centos与Ubuntu的root目录不一致。
#安装解压缩软件
sudo apt-get install unzip下载,此处链接可以直接打开,选择最新版本14.0.3
wget https://download.nextcloud.com/server/releases/nextcloud-14.0.3.zip
解压
sudo unzip nextcloud-10.0.2.zip
移动到nginx的root目录
sudo mv nextcloud/ /var/www/html
创建一个存放文件的Data目录
cd /usr/share/nginx/html/
sudo mkdir -p nextcloud/data/变更 nextcloud 目录的拥有者为 nginx 用户和组
sudo chown nginx:nginx -R nextcloud/
此处的nginx用户可以根据实际的需要。
配置nginx,先创建配置文件。
cd /etc/nginx/conf.d/
sudo vim nextcloud.conf
将以下内容粘贴到虚拟主机配置文件中:
注意几个地方,server的监听方式,要与php-fpm一致,域名可以使用自己的内部域名。
upstream php-handler {
server 127.0.0.1:9000;
#server unix:/var/run/php5-fpm.sock;
}server {
listen 80;
server_name cloud.nextcloud.co;
# enforce https
return 301 https://$server_name$request_uri;
}server {
listen 443 ssl;
server_name cloud.nextcloud.co;ssl_certificate /etc/nginx/cert/nextcloud.crt;
ssl_certificate_key /etc/nginx/cert/nextcloud.key;# Add headers to serve security related headers
# Before enabling Strict-Transport-Security headers please read into this
# topic first.
add_header Strict-Transport-Security "max-age=15768000;
includeSubDomains; preload;";
add_header X-Content-Type-Options nosniff;
add_header X-Frame-Options "SAMEORIGIN";
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;# Path to the root of your installation
root /usr/share/nginx/html/nextcloud/;location = /robots.txt {
allow all;
log_not_found off;
access_log off;
}# The following 2 rules are only needed for the user_webfinger app.
# Uncomment it if you're planning to use this app.
#rewrite ^/.well-known/host-meta /public.php?service=host-meta last;
#rewrite ^/.well-known/host-meta.json /public.php?service=host-meta-json
# last;location = /.well-known/carddav {
return 301 $scheme://$host/remote.php/dav;
}
location = /.well-known/caldav {
return 301 $scheme://$host/remote.php/dav;
}# set max upload size
client_max_body_size 512M;
fastcgi_buffers 64 4K;# Disable gzip to avoid the removal of the ETag header
gzip off;# Uncomment if your server is build with the ngx_pagespeed module
# This module is currently not supported.
#pagespeed off;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 ~ ^/(?:index|remote|public|cron|core/ajax/update|status|ocs/v[12]|updater/.+|ocs-provider/.+|core/templates/40[34]).php(?:$|/) {
include fastcgi_params;
fastcgi_split_path_info ^(.+.php)(/.*)$;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param HTTPS on;
#Avoid sending the security headers twice
fastcgi_param modHeadersAvailable true;
fastcgi_param front_controller_active true;
fastcgi_pass php-handler;
fastcgi_intercept_errors on;
fastcgi_request_buffering off;
}location ~ ^/(?:updater|ocs-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 block
location ~* .(?:css|js)$ {
try_files $uri /index.php$uri$is_args$args;
add_header Cache-Control "public, max-age=7200";
# Add headers to serve security related headers (It is intended to
# have those duplicated to the ones above)
# Before enabling Strict-Transport-Security headers please read into
# this topic first.
add_header Strict-Transport-Security "max-age=15768000;
includeSubDomains; preload;";
add_header X-Content-Type-Options nosniff;
add_header X-Frame-Options "SAMEORIGIN";
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;
# Optional: Don't log access to assets
access_log off;
}location ~* .(?:svg|gif|png|html|ttf|woff|ico|jpg|jpeg)$ {
try_files $uri /index.php$uri$is_args$args;
# Optional: Don't log access to other assets
access_log off;
}
}
最后,检查nginx的配置文件是否正确,然后启动服务
sudo nginx -t
sudo service nginx restart
<br/>
万里长征,到这里就快结束了。
完成配置安装 ,使用之前配置的域名打开,出现安装界面。
设置管理员账号
选择文件存放目录
配置选择数据库
点击完成安装,稍等几分钟之后便跳转到首页。
<hr/>同样的,在最后以自己的安装经历来讲,有几个地方需要特别注意。
要正确设置PHP和ningx的特别是监听服务的方式。否则会出现500.502错误。在出现这些错误的时候,要使用nginx和php-fpm的日志进行判断。它们的存放位置一般都在var/log下面。
要设置目录权限,否则会提示无法安装,正确的设置权限可以是nginx或者是www-data,这里使用nginx,如果是apache的话可能就要选择www-data。只要前后保持一致即可。
保持平静,只有平静的状态下才能耐心,慢慢解决问题。
关于如何进行服务优化来提高系统的访问速度,可以在专栏中查看相关文章,链接如下:
希望大家都能用上称心如意的网盘。
中小企业使用nextcloud完全可以满足所有文件,文档的协同配合使用的需要。
https://zhuanlan.zhihu.com/p/48136942
<br/>