在CentOS 7上安装带有 Lets Encrypt SSL的Nextcloud 18

时间:2020-02-23 14:31:13  来源:igfitidea点击:

如何在CentOS 7 Linux上安装Nextcloud 18?本指南将引导我们完成在CentOS 7上使用PHP 7.3,Apache和MariaDB 10.4安装Nextcloud 18的过程。我们可以选择使用Lets Encrypt配置SSL加密,以确保通过安全隧道传输访问和数据。

对于Ubuntu/Debian,请检查:如何在Ubuntu/Debian上安装Nextcloud

Nextcloud是一个开源的由seft托管的同步和文件共享服务器,由ownCloud分叉。它用PHP和JavaScript编写,并支持MySQL,PostgreSQL,SQLite和Oracle数据库。

使用Lets Encrypt SSL在CentOS 7上安装NextCloud

Nextcloud提供了适用于Windows,Linux,macOS,Android和iOS的客户端应用程序,用于在桌面和Nextcloud文件服务器之间同步文件。它还具有一个现代且易于使用的Web界面,使我们可以从Web浏览器访问文件。

请按照本文提供的步骤在CentOS 7服务器上安装和配置Nextcloud。它可以是全新安装的服务器,也可以是具有正在运行的应用程序的服务器,前提是我们可以满足前提条件和必需的依赖性。

禁用SELinux或者进入许可模式

考虑禁用SELinux以获得流畅的操作:

sudo setenforce 0
sudo sed -i 's/^SELINUX=.*/SELINUX=permissive/g' /etc/selinux/config

安装PHP和httpd

我们要求PHP和Apache在CentOS 7上运行Nextcloud。对于PHP,我们将使用PHP 7.3,因为它是可用于CentOS 7的最新稳定PHP版本。在Remi存储库中可用,需要在安装之前添加。

sudo yum -y install epel-release yum-utils
sudo yum -y install http://rpms.remirepo.net/enterprise/remi-release-7.rpm

禁用默认启用PHP 5.x的存储库,并为PHP 7.3启用一个:

sudo yum-config-manager --disable remi-php54
sudo yum-config-manager --enable remi-php73

然后安装Apache和PHP软件包:

sudo yum -y install vim httpd php php-cli php-mysqlnd php-zip php-devel php-gd php-mcrypt php-mbstring php-curl php-xml php-pear php-bcmath php-json php-pdo php-pecl-apcu php-pecl-apcu-devel

确认PHP版本

$php -v
PHP 7.3.1 (cli) (built: Jan  8 2019 13:55:51) ( NTS )
Copyright (c) 1997-2016 The PHP Group
Zend Engine v3.3.1, Copyright (c) 1998-2016 Zend Technologies

安装和配置MariaDB/MySQL

使用我们之前的指南在CentOS 7上安装MariaDB/MySQL数据库服务器。选择一个,推荐的是MariaDB。

在Ubuntu 18.04和CentOS 7上安装MariaDB 10.x

安装后,以root用户身份登录MySQL控制台并为Nextcloud创建一个新数据库。

$mysql -u root -p
CREATE USER 'nextcloud'@'localhost' IDENTIFIED BY "StrongPassword";
CREATE DATABASE nextcloud;
GRANT ALL PRIVILEGES ON nextcloud.* TO 'nextcloud'@'localhost';
FLUSH PRIVILEGES;
QUIT

在CentOS 7上下载并安装Nextcloud

下载最新版本的Nextcloud:

sudo yum -y install wget unzip
wget https://download.nextcloud.com/server/releases/latest-18.zip

解压缩下载的文件:

unzip latest-18.zip
rm -f latest-18.zip

将生成的" nextcloud"文件夹移至"/var/www/html"目录。

sudo mv nextcloud//var/www/html/

创建数据目录以存储Nextcloud上传的文件。这可以是任何路径,例如NFS挂载点,SAN挂载点等。

sudo mkdir /var/www/html/nextcloud/data
sudo chown apache:apache -R /var/www/html/nextcloud/data

给apache用户并分组nextcloud文件夹的所有权。

sudo chown apache:apache -R /var/www/html/nextcloud

在没有SSL的情况下配置Apache VirtualHost

现在为Nextcloud创建一个Apache配置文件。

sudo vim /etc/httpd/conf.d/nextcloud.conf

将以下内容粘贴到文件中。

<VirtualHost *:80>
  ServerName files.example.com
  ServerAdmin theitroad@localhost
  DocumentRoot /var/www/html/nextcloud
  <directory /var/www/html/nextcloud>
    Require all granted
    AllowOverride All
    Options FollowSymLinks MultiViews
    SetEnv HOME /var/www/html/nextcloud
    SetEnv HTTP_HOME /var/www/html/nextcloud
  </directory>
</VirtualHost>

设置正确的ServerName并更改其他设置以适合使用。完成后,保存文件并启动httpd服务。

sudo systemctl enable --now httpd
sudo semanage fcontext -a -t httpd_sys_content_t "/var/www/html(/.*)?"
sudo sudo restorecon -Rv /var/www/html

配置防火墙:

如果我们有活动的firewalld服务,请允许使用http和https端口。

sudo firewall-cmd --add-service={http,https} --permanent
sudo firewall-cmd --reload

使用Lets Encrypt SSL配置Apache

要使用Lets Encrypt SSL证书,请先安装certbot

wget https://dl.eff.org/certbot-auto
chmod a+x certbot-auto
sudo mv certbot-auto /usr/local/bin

然后请求SSL证书。

export DOMAIN="files.example.com"
export EMAIL="theitroad@localhost"
certbot-auto certonly --standalone -d $DOMAIN --preferred-challenges http --agree-tos -n -m $EMAIL --keep-until-expiring

修改VirtualHost配置文件,如下所示。

<VirtualHost *:80>
   ServerName files.example.com
   ServerAdmin theitroad@localhost
   RewriteEngine On
   RewriteCond %{HTTPS} off
   RewriteRule ^(.*)$https://%{HTTP_HOST} [R=301,L]
</VirtualHost>

<IfModule mod_ssl.c>
   <VirtualHost *:443>
     ServerName files.example.com
     ServerAdmin theitroad@localhost
     DocumentRoot /var/www/html/nextcloud
     <directory /var/www/html/nextcloud>
        Require all granted
        AllowOverride All
        Options FollowSymLinks MultiViews
        SetEnv HOME /var/www/html/nextcloud
        SetEnv HTTP_HOME /var/www/html/nextcloud
    </directory>
     SSLEngine on
     SSLCertificateFile /etc/letsencrypt/live/files.example.com/fullchain.pem
     SSLCertificateKeyFile /etc/letsencrypt/live/files.example.com/privkey.pem
   </VirtualHost>
</IfModule>

访问Nextcloud UI并完成安装

打开在Apache上配置的nextcloud服务器URL:http://files.example.com。

在首页上创建管理员帐户。

提供管理员用户名和密码。还配置MySQL/MariaDB数据库。

完成后,单击完成设置按钮。我们应该获得Nextcloud的"文件"仪表板。现在,在终端设备上安装Nextcloud Agent,以开始同步文件。