详解如何在CentOS7中使用Nginx和PHP7-FPM安装Nextcloud

  • Post category:Linux

下面我将详细讲解如何在CentOS7中使用Nginx和PHP7-FPM安装Nextcloud:

准备工作

在开始安装之前,我们需要准备以下环境:

  • 一台安装了CentOS 7的服务器
  • root用户权限和密码
  • 永久性的Internet连接
  • 不低于2GB的可用内存
  • 一个有效的域名

安装Nginx和PHP7-FPM

要使用Nginx和PHP7-FPM,我们需要首先安装它们。

安装EPEL和Remi仓库

在CentOS 7中,Nginx和PHP7-FPM并不在默认的软件仓库中,因此我们需要添加EPEL(Extra Packages for Enterprise Linux)和Remi仓库,这样才能够安装Nginx和PHP7-FPM。

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

安装Nginx

yum install nginx -y
systemctl enable nginx
systemctl start nginx

安装PHP7-FPM

安装PHP7-FPM和必备的扩展。

yum --enablerepo=remi-php70 install php php-fpm php-gd php-mbstring php-mysql php-xml php-zip -y
systemctl enable php-fpm
systemctl start php-fpm

安装数据库

现在我们需要安装一个数据库,以便Nextcloud可以存储数据。

安装MariaDB

我们将使用MariaDB作为我们的数据库,因为它是一个免费的、开源的企业级数据库管理系统。

yum install mariadb-server mariadb -y
systemctl enable mariadb
systemctl start mariadb

配置MariaDB

mysql_secure_installation

运行上述命令,并遵循屏幕上的提示,以保证数据库通信的安全性。在此过程中,您将设置root用户的密码、删除测试数据库等。

创建Nextcloud数据库

我们需要使用MySQL命令行工具登录数据库。请在终端中输入以下命令,并按照提示输入root用户的密码。

mysql -u root -p

一旦你登录了MySQL,可以通过以下命令来创建Nextcloud数据库。

CREATE DATABASE dbname;

请注意,dbname是你为Nextcloud创建的数据库名称。接下来,我们需要为此用户创建一个密码。

CREATE USER 'username'@'localhost' IDENTIFIED BY 'password';

在上面的命令中,’username’和’password’是你为Nextcloud配置的用户名和密码。你可以根据你自己的需求进行修改,但是请确保为用户名设置较强的密码。

最后,我们需要给用户授予适当的权限,并刷新MySQL特权。

GRANT ALL ON dbname.* TO 'username'@'localhost';
FLUSH PRIVILEGES;

下载和安装Nextcloud

现在我们已经准备好了所有依赖项和配置,可以下载和安装Nextcloud了。

下载Nextcloud

cd /usr/share/nginx/html
wget https://download.nextcloud.com/server/releases/latest.tar.bz2

解压并安装Nextcloud

将下载的tar包解压到Nginx的web目录中,并为Nextcloud文件和文件夹设置正确的权限。

tar -xvjf latest.tar.bz2
chown -R nginx:nginx /usr/share/nginx/html/nextcloud
chmod a+x /usr/share/nginx/html/nextcloud

配置Nginx

现在我们已经完成了Nextcloud的安装,我们需要允许Nginx在我们的服务器上运行它。

创建Nginx配置

我们需要为Nextcloud创建一个新的Nginx配置文件。

vi /etc/nginx/conf.d/nextcloud.conf

并添加以下内容:

server {
    listen 80;
    server_name domain.com;
    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl;
    server_name domain.com;
    ssl_certificate /path/to/certificate.crt;
    ssl_certificate_key /path/to/certificate.key;

    client_max_body_size 100M;

    root /usr/share/nginx/html/nextcloud/;
    index index.php;

    fastcgi_buffers 64 4K;

    gzip on;
    gzip_vary on;
    gzip_comp_level 5;
    gzip_types text/plain text/css text/javascript application/javascript application/x-javascript application/json;

    location / {
        rewrite ^ /index.php$request_uri;

    }
    location ~ ^/(?:build|tests|config|lib|3rdparty|templates|data)/ {
        return 404;
    }
    location ~ ^/(?:\.|autotest|occ|issue|indie|db_|console) {
        return 404;
    }

    location ~ \.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 HTTP_PROXY "";
        fastcgi_param HTTPS on;

        fastcgi_param MOD_PAGESPEED OFF;
        fastcgi_param ADMIN_WEB_UNZIP_PECL false;

        fastcgi_pass unix:/run/php-fpm/php-fpm.sock;
    }

    location ~* \.(png|jpg|jpeg|gif|svg|css|js|ico)$ {
        expires max;
        log_not_found off;
    }

    location ~ /.well-known {
        allow all;
    }
}

在以上配置中,我们需要替换server_name和certificates的路径。你需要将server_name替换为你的域名。ssl_certificate和ssl_certificate_key应该指向你的SSL证书和密钥的路径。

测试Nginx配置

nginx -t

如果配置文件已经检测到没有问题,那么我们最后重启Nginx服务器以应用修改。

systemctl restart nginx

配置Nextcloud

由于我们已经安装了Nextcloud,现在我们需要将所有服务配置到一起,以便Nextcloud可以在我们的服务器上运行。

打开配置文件

我们需要按照以下方式打开Nextcloud配置文件。

vi /usr/share/nginx/html/nextcloud/config/config.php

我们需要添加以下几行代码:

'overwriteprotocol' => 'https',
'trusted_domains' =>
  array (
    0 => 'domain.com',
  ),

启用OPcache

打开PHP的OPcache,以及其他一些重要的PHP设置。

vi /etc/php.d/10-opcache.ini

添加以下代码:

opcache.enable=1  
opcache.memory_consumption=128  
opcache.interned_strings_buffer=8  
opcache.max_accelerated_files=4000  
opcache.revalidate_freq=60  
opcache.fast_shutdown=1

现在重启PHP-FPM来应用这些更改。

systemctl restart php-fpm

完成Nextcloud的安装

现在你可以打开网站并进行Nextcloud的安装。将你的网址输入到Web浏览器中,以打开Nextcloud的安装页面。输入刚才为Nextcloud创建的数据库名称和用户,然后按照提示进行下一步。

在安装完成前,你将需要设置管理员用户名和密码,这将会是你登陆Nextcloud的凭证。完成安装之后,你现在可以进入到Nextcloud的控制面板,开始使用它。

示例1:配置文件server_name设置示例

例如有一个域名为example.com,则配置文件server_name的设置示例如下:

server {
    listen 80;
    server_name example.com;
    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl;
    server_name example.com;
    ssl_certificate /path/to/certificate.crt;
    ssl_certificate_key /path/to/certificate.key;

    ...
}

示例2:Nginx配置文件fastcgi_pass示例

在之前的Nginx配置中,我们将fastcgi_pass配置设置为:

fastcgi_pass unix:/run/php-fpm/php-fpm.sock;

如果我们使用一个TCP端口来运行PHP-FPM,则fastcgi_pass应被设置为一个类似于下面这个配置的示例:

fastcgi_pass 127.0.0.1:9000;

在这种情况下,Nginx将连接到127.0.0.1:9000端口上运行的PHP-FPM进程,以便为Nextcloud服务。