在Ubuntu上部署Nextcloud私有云盘的方法

接下来我们继续讲如何在ubuntu server上来安装此应用。其实,Ubuntu Server上部署nextcloud应用有两种方法:

  1. 使用snap一键部署

    1. 优点:快速,简单

    2. 缺点:调优麻烦,很多都是封装好的版本,没法调整。

  2. 全新安装来进行部署

    1. 有点:全新安装,自定义方便,比如选择PHP版本等。

    2. 缺点:安装过程稍微麻烦,需要耐心看完。


一:使用snap一键部署的方法

snap是ubuntu版本有的一种容器,通俗理解的话就是类似docker。

使用snap可以快速部署应用,因为snap服务已经将应用打包完毕。在安装的过程中用到的命令如下:

sudo apt-get update
sudo apt install snapd
sudo snap install nextcloud

只需要简单三条命令,成功安装完成之后,只要输入ip,进入安装界面,设置相应的数据库等信息,设置好管理员的用户名密码后,稍等之后即可完成安装。

注意事项:

因为snap的源在国外,所以连接的速度有时候会非常慢,如果能翻墙的话速度就会快很多。我是用国外的VPS主机,10分钟之内就全部搞定了。但是使用国内的服务器安装的话就只有只有10K左右的下载速度,需要10个小时以上。

Snap的方式也有一些缺点,比如数据库版本、php等都是自带的,但是简单速度快的特点还是值得试试的。

建议小白使用这个方法来进行安装,毕竟使用才是我们的最终目标。安装的过程几年都会用不到。


二:全新安装来进行部署的方法

首先,同样的需要进行安装一下几个应用。比如PHP\MYSQL\NGINX

跟之前的安装过程有很多相同之处,不同的地方就是把命令改成sudo apt-get install,替换掉yum install 。

Nginx与php的配合调优也是要注意的地方。

  1. NGINX

  2. PHP

  3. PHP-FPM

  4. 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 start 

sudo  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 = nginx

listen的方式和端口一定要正确,此处的配置与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-server

sudo 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&nbsp;/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&nbsp;/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/>

万里长征,到这里就快结束了。

完成配置安装 ,使用之前配置的域名打开,出现安装界面。

  1. 设置管理员账号

  2. 选择文件存放目录

  3. 配置选择数据库

点击完成安装,稍等几分钟之后便跳转到首页。

<hr/>

同样的,在最后以自己的安装经历来讲,有几个地方需要特别注意。

  • 要正确设置PHP和ningx的特别是监听服务的方式。否则会出现500.502错误。在出现这些错误的时候,要使用nginx和php-fpm的日志进行判断。它们的存放位置一般都在var/log下面。

  • 要设置目录权限,否则会提示无法安装,正确的设置权限可以是nginx或者是www-data,这里使用nginx,如果是apache的话可能就要选择www-data。只要前后保持一致即可。

  • 保持平静,只有平静的状态下才能耐心,慢慢解决问题。

关于如何进行服务优化来提高系统的访问速度,可以在专栏中查看相关文章,链接如下:

高效人生手册:NextCloud服务器优化提高访问速度zhuanlan.zhihu.com/p/142069634

希望大家都能用上称心如意的网盘。

中小企业使用nextcloud完全可以满足所有文件,文档的协同配合使用的需要。

https://zhuanlan.zhihu.com/p/48136942

<br/>


标签: none

添加新评论 »