欢迎光临
我们一直在努力

如何在Ubuntu 18.04 LTS上使用Nginx安装Nextcloud

如何在Ubuntu 18.04 LTS上使用Nginx安装Nextcloud

Nextcloud是一个免费的(开源)类Dropbox软件,是ownCloud项目的一个分支。 Nextcloud是用PHP和JavaScript编写的,它支持许多数据库系统,如MySQL / MariaDB,PostgreSQL,Oracle数据库和SQLite。 为了使您的文件在Desktop和您自己的服务器之间保持同步,Nextcloud为Windows,Linux和Mac桌面提供应用程序,为Android和iOS提供移动应用程序。 Nextcloud不仅仅是一个Dropbox克隆,它还提供日历,联系人,计划任务和带Ampache的流媒体等附加功能。

在本教程中,我们将向您展示如何在Ubuntu 18.04服务器上安装和配置最新的Nextcloud 13.0.2版本。 我们将使用Nginx Web服务器和PHP7.1-FPM运行Nextcloud,并使用MySQL服务器作为数据库系统。

先决条件

  • Ubuntu 18.04
  • Root权限

我们将要做什么?

  1. 安装Nginx Web服务器
  2. 安装和配置PHP7.1-FPM
  3. 安装和配置MySQL服务器
  4. 生成SSL Letsencrypt
  5. 下载Nextcloud 13
  6. 为Nextcloud配置Nginx虚拟主机
  7. UFW防火墙配置
  8. Nextcloud安装后

第1步 – 安装Nginx Web服务器

我们将在nextcloud指南中做的第一步是安装Nginx Web服务器。 我们将使用Nginx Web服务器而不是Apache Web服务器。

登录服务器并更新存储库,然后使用apt命令安装Nginx Web服务器,如下所示。

sudo apt update
sudo apt install nginx -y

安装完成后,启动Nginx服务并使用systemctl每次在系统引导时启动服务。

systemctl start nginx
systemctl enable nginx

Nginx Web服务器已安装在Ubuntu 18.04上。 使用下面的netstat或curl命令检查它。

netstat -plntu
curl -I localhost

Nginx Web服务器现在在标准HTTP端口80上的Ubuntu下运行。

安装Nginx Web服务器

第2步 – 安装和配置PHP7.1-FPM

在本教程中,我们将使用PHP7.1-FPM进行nextcloud。 我们将使用PPA存储库中的PHP7.1-FPM,因此我们需要在系统中添加新的PPA存储库。

安装’software-properties-common’包并通过运行以下命令添加’ondrej PHP’PPA存储库。

sudo apt install software-properties-common -y
sudo add-apt-repository ppa:ondrej/php -y

注意:

在Ubuntu 18.04上,’add-apt-repository’命令将自动更新存储库。

现在使用下面的单个apt命令安装PHP7.1和PHP7.1-FPM以及所需的所有扩展。

sudo apt install php7.1-fpm php7.1-mcrypt php7.1-curl php7.1-cli php7.1-mysql php7.1-gd php7.1-iconv php7.1-xsl php7.1-json php7.1-intl php-pear php-imagick php7.1-dev php7.1-common php7.1-mbstring php7.1-zip php7.1-soap -y

安装完成后,我们将为php-fpm和php-cli配置php.ini文件。

转到’/etc/php/7.1’目录。

cd /etc/php/7.1/

使用vim编辑php-fpm和php-cli的php.ini文件。

vim fpm/php.ini
vim cli/php.ini

取消注释’date.timezone’行并使用您自己的时区更改值。

date.timezone = Asia/Jakarta

取消注释’cgi.fix_pathinfo’行并将值更改为’0’。

cgi.fix_pathinfo=0

保存并退出。

接下来,编辑php-fpm池配置’www.conf’。

vim fpm/pool.d/www.conf

取消注释以下这些行。

env[HOSTNAME] = $HOSTNAMEenv[PATH] = /usr/local/bin:/usr/bin:/binenv[TMP] = /tmpenv[TMPDIR] = /tmpenv[TEMP] = /tmp

保存并退出。

重新启动PHP7.1-FPM服务并使其在每次系统引导时启动。

systemctl restart php7.1-fpm
systemctl enable php7.1-fpm

现在使用netstat命令检查它。

netstat -pl | grep php

你将得到php-fpm现在在袜子文件’/run/php/php7.1-fpm.sock’下运行。

安装PHP

第3步 – 安装和配置MySQL服务器

在此步骤中,我们将安装最新的MySQL版本并为nextcloud安装创建新数据库。 默认情况下,存储库中提供了最新版本的MySQL软件包。

使用下面的apt命令安装MySQL服务器最新版本。

sudo apt install mysql-server mysql-client -y

安装完成后,启动MySQL服务并使其在系统引导时每次启动。

systemctl start mysql
systemctl enable mysql

现在我们将使用’mysql_secure_installation’命令配置MySQL root密码。

运行以下命令。

mysql_secure_installation

在这个MySQL 5.8版本中,MySQL密码策略有一个安全性改进。 您需要选择密码策略 – 0表示LOW策略,1表示MEDIUM策略,2表示STRONG密码策略。

对于本指南,我们将使用“MEDIUM”密码策略,建议在生产服务器上使用“STRONG”密码策略。

选择数字“1”并按Enter键,然后键入新的MySQL“root”密码。

安装MySQL

Remove anonymous users? (Press y|Y for Yes, any other key for No) : YDisallow root login remotely? (Press y|Y for Yes, any other key for No) : YRemove test database and access to it? (Press y|Y for Yes, any other key for No) : YReload privilege tables now? (Press y|Y for Yes, any other key for No) : Y

并且已经设置了MySQL root密码。

接下来,我们将为nextcloud安装创建一个新数据库。 我们将使用用户’nextclouduser’和密码’ Nextclouduser421@ ‘创建一个名为’nextcloud_db’的新数据库。

使用mysql命令以root用户身份登录MySQL shell。

mysql -u root -p
TYPE THE MYSQL ROOT PASSWORD

现在通过运行以下MySQL查询来创建具有密码的数据库和用户。

create database nextcloud_db;
create user nextclouduser@localhost identified by ‘Nextclouduser421@’;
grant all privileges on nextcloud_db.* to nextclouduser@localhost identified by ‘Nextclouduser421@’;
flush privileges;

并且已创建用于nextcloud安装的新数据库和用户。

配置MySQL数据库

已经完成了对nextcloud的MySQL安装和配置。

第4步 – 生成SSL Letsencrypt

在本教程中,我们将使用Letsencrypt中的免费SSL保护nextcloud,我们将使用letsencrypt工具生成证书文件。

如果您没有域名或在本地计算机上安装nextcloud,则可以使用OpenSSL生成自签名证书。

使用下面的apt命令安装’letsencrypt’工具。

sudo apt install letsencrypt -y

安装完成后,停止nginx服务。

systemctl stop nginx

接下来,我们将使用cerbot命令行为我们的域名“nextcloud.hakase-labs.io”生成SSL证书。 运行以下命令。

certbot certonly –standalone -d nextcloud.hakase-labs.io

系统会要求您输入电子邮件地址,并将其用于续订通知。 对于Letsencrypt TOS协议,输入“A”表示同意,对于共享电子邮件地址,您可以键入“N”表示否。

生成Let加密SSL证书

完成后,您将得到如下所示的结果。

已创建SSL证书

已生成用于netxcloud域名的SSL证书Letsencrypt,它们都位于’/ etc / letsencrypt / live / domain’目录中。

第5步 – 下载Nextcloud

在下载nextcloud源代码之前,请确保在系统上安装了解压缩包。 如果您没有该软件包,请使用下面的apt命令进行安装。

sudo apt install wget unzip zip -y

现在转到’/ var / www’目录并下载nextcloud-13.0.2.zip文件。

cd /var/www/
wget https://download.nextcloud.com/server/releases/nextcloud-13.0.2.zip

提取zip文件,您将获得’nextcloud’目录,然后创建一个新的’data’目录。

unzip nextcloud-13.0.2.zip
mkdir -p nextcloud/data/

现在将’nextcloud’目录的所有者更改为’www-data’用户和组。

chown -R www-data:www-data /var/www/nextcloud/

Nextcloud已下载到’/ var / www / nextcloud’目录下,它将是web根目录。

第6步 – 为Nextcloud配置Nginx虚拟主机

在此步骤中,我们将为nextcloud配置nginx虚拟主机。 我们将配置nextcloud以在HTTPS连接下运行,并将强制HTTP连接自动进入安全HTTPS连接。

现在转到’/ etc / nginx / sites-available’目录并创建一个新的虚拟主机文件’nextcloud’。

cd /etc/nginx/sites-available/
vim nextcloud

在那里,粘贴以下nextcloud虚拟主机配置。

upstream php-handler {    #server 127.0.0.1:9000;    server unix:/run/php/php7.1-fpm.sock;}server {    listen 80;    listen [::]:80;    server_name nextcloud.hakase-labs.pw;    # enforce https    return 301 https://$server_name$request_uri;}server {    listen 443 ssl http2;    listen [::]:443 ssl http2;    server_name nextcloud.hakase-labs.pw;    ssl_certificate /etc/letsencrypt/live/nextcloud.hakase-labs.pw/fullchain.pem;    ssl_certificate_key /etc/letsencrypt/live/nextcloud.hakase-labs.pw/privkey.pem;    # 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=15552000;    # includeSubDomains; preload;";    #    # WARNING: Only add the preload option once you read about    # the consequences in https://hstspreload.org/. This option    # will add the domain to a hardcoded list that is shipped    # in all major browsers and getting removed from this list    # could take several months.    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;    # Path to the root of your installation    root /var/www/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;    # Enable gzip but do not remove ETag headers    gzip on;    gzip_vary on;    gzip_comp_level 4;    gzip_min_length 256;    gzip_proxied expired no-cache no-store private no_last_modified no_etag auth;    gzip_types application/atom+xml application/javascript application/json application/ld+json application/manifest+json application/rss+xml application/vnd.geo+json application/vnd.ms-fontobject application/x-font-ttf application/x-web-app-manifest+json application/xhtml+xml application/xml font/opentype image/bmp image/svg+xml image/x-icon text/cache-manifest text/css text/plain text/vcard text/vnd.rim.location.xloc text/vtt text/x-component text/x-cross-domain-policy;    # Uncomment if your server is built with the ngx_pagespeed module    # This module is currently not supported.    #pagespeed off;    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/.+)\.php(?:$|/) {        fastcgi_split_path_info ^(.+\.php)(/.*)$;        include fastcgi_params;        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|woff|svg|gif)$ {        try_files $uri /index.php$uri$is_args$args;        add_header Cache-Control "public, max-age=15778463";        # 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;";        #        # WARNING: Only add the preload option once you read about        # the consequences in https://hstspreload.org/. This option        # will add the domain to a hardcoded list that is shipped        # in all major browsers and getting removed from this list        # could take several months.        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;        # Optional: Don't log access to assets        access_log off;    }    location ~ \.(?:png|html|ttf|ico|jpg|jpeg)$ {        try_files $uri /index.php$uri$is_args$args;        # Optional: Don't log access to other assets        access_log off;    }}

保存并退出。

启用虚拟主机并测试配置,并确保没有错误。

ln -s /etc/nginx/sites-available/nextcloud /etc/nginx/sites-enabled/
nginx -t

现在使用下面的systemctl命令重启PHP7.1-FPM服务和nginx服务。

systemctl restart nginx
systemctl restart php7.1-fpm

已创建nextcloud的Nginx虚拟主机配置。

为Nextcloud配置Nginx

第7步 – 配置UFW防火墙

在本教程中,我们将打开防火墙,我们将使用UFW防火墙进行Ubuntu。

启用ufw防火墙。

ufw enable

输入“y”并按Enter键启动并启用UFW防火墙。

现在将新的SSH,HTTP和HTTPS添加到UFW防火墙列表中。

ufw allow ssh

ufw allow http
ufw allow https

使用以下命令检查UFW防火墙上的允许列表端口。

ufw status

您将获得HTTP端口80和HTTPS端口443在列表中。

配置UFW防火墙

第8步 – Nextcloud安装后

打开Web浏览器并键入nextcloud URL地址。

http://nextcloud.hakase-labs.io/

您将被重定向到安全的HTTPS连接。

在首页上,我们需要为nextcloud创建管理员用户,输入管理员用户密码。 在“数据文件夹”配置中,键入“data”目录“/ var / www / nextcloud / data”的完整路径。

登录nextCloud

将页面滚动到底部,您将获得数据库配置。 键入我们在第3步中创建的数据库信息,然后单击“完成设置”按钮。

数据库配置

安装完成后,您将获得Nextcloud仪表板,如下所示。

Nextcloud仪表板

在Ubuntu 18.04上使用Nginx Web服务器和MySQL数据库的Nextcloud 13安装已成功完成。

参考

赞(0) 打赏
未经允许不得转载:老赵部落 » 如何在Ubuntu 18.04 LTS上使用Nginx安装Nextcloud

评论 抢沙发