如何在 Rocky Linux 8 上使用 Nginx 安装 Drupal CMS如何在 Rocky Linux 8 上使用 Nginx 安装 Drupal CMS如何在 Rocky Linux 8 上使用 Nginx 安装 Drupal CMS如何在 Rocky Linux 8 上使用 Nginx 安装 Drupal CMS
  • 文章
  • 正则表达式
    • 工具
  • 登录
找到的结果: {phrase} (显示: {results_count} 共: {results_count_total})
显示: {results_count} 共: {results_count_total}

加载更多搜索结果...

搜索范围
模糊匹配
搜索标题
搜索内容
发表 admin at 2025年2月28日
类别
  • 未分类
标签

如何在 Rocky Linux 8 上使用 Nginx 安装 Drupal CMS

在此页

  1. 先决条件
  2. 设置存储库
  3. 安装包依赖
  4. 设置防火墙
  5. 设置 MariaDB 服务器
  6. 安装 PECL 扩展:uploadprogress
  7. 配置 PHP-FPM
  8. 下载 Drupal 源代码
  9. 设置 SELinux
  10. 设置 Nginx Web 服务器
  11. 开始安装 Drupal
  12. 完成 Drupal 安装
  13. 结论

Drupal 是一个免费的开源 Web 内容管理系统,用 PHP 编写,并在 GNU 通用公共许可证下分发。 Drupal 为多渠道发布提供了一个强大的内容管理工具和复杂的 API。

Drupal 是互联网上使用最广泛的 CMS 之一,互联网上排名前 10,000 的网站中至少有 14% 使用 Drupal,它用于全球企业行业、政府、教育和机构网站。 Drupal 提供了一个高度可扩展的系统,与数字应用程序集成,可用于为具有多语言支持的不同组织创建多站点。

在本教程中,您将学习如何在 Rocky Linux 服务器上使用 LEMP 堆栈配置 Drupal CMS(内容管理系统)。您还将了解如何使用 SELinux 强制模式和启用的 Firewalld 在 Rocky Linux 上启动和运行 Drupal。

先决条件

要开始使用本指南,您需要满足以下要求:

  • Rocky Linux 服务器 - 此示例使用主机名为 drupal-server 的 Rocky Linux 8.x。
  • 具有 sudo/root 管理员权限的非 root 用户。
  • 指向 Rocky Linux 服务器 IP 地址的域名 - 特别是当您处于生产环境中时。

设置存储库

LEMP Stack(Nginx、MariaDB/MySQL 和 PHP-FPM)是一组用于托管 Web 应用程序的开源软件。在 Rocky Linux 上。大多数 LEMP 堆栈包都可以在第三方存储库中获得。

在第一步中,您将在系统上添加并启用两个存储库。您将添加为基于 RHEL 的操作系统提供附加包的 EPEL 存储库,以及提供多个版本的 PHP 包的 REMI 存储库。

运行以下命令将 EPEL 存储库添加到您的 Rocky Linux 系统。当提示确认时,输入 y 并按 ENTER。

sudo dnf install epel-release

现在运行下面的 dnf 命令为 Rocky Linux 8.4 添加 REMI 存储库。

sudo dnf install dnf-utils http://rpms.remirepo.net/enterprise/remi-release-8.rpm

输入 y 并按 ENTER 继续并添加 Remi 存储库。

最后,运行下面的 dnf 命令来验证系统上可用存储库的列表。您应该会看到两个额外的存储库 EPEL 和 REMI 已添加到 Rocky Linux 系统中。

sudo dnf repolist

安装包依赖

Drupal 是一个灵活而强大的 CMS,可以与任何 Web 服务器一起安装,例如 Apache2/httpd、Nginx 或 Microsoft IIS。此外,Drupal 支持多种 RDBMS,包括 MariaDB/MySQL、PostgreSQL 和 SQLite。对于 Microsoft SQL Server 和 MongoDB 等其他数据库,您可以通过社区模块使用它们。

现在您将为 Drupal 安装 LEMP Stack 包依赖项。您将通过 EPEL 存储库安装 Nginx,从 appstream 安装 MariaDB,并从 REMI 存储库安装 PHP 8.1 包。

首先,通过下面的 dnf 命令从 REMI 存储库中重置并启用 PHP 模块。在此示例中,您将为 PHP 8.1 启用一个模块,该模块受最新版本的 Drupal 支持。

sudo dnf module reset php
sudo dnf module enable php:remi-8.1

出现提示时,输入 y 确认并启用 PHP 8.1 REMI 存储库,然后按 ENTER 继续。

接下来,使用下面的 dnf 命令安装基本的 LEMP 堆栈包。

sudo dnf install nginx mariadb-server php php-fpm php-cli php-devel php-mbstring php-gd php-xml php-curl php-mysqlnd php-pdo php-json php-opcache php-pear php-pecl-apcu php-pecl-crypto

输入 y 并在提示确认时按 ENTER。

此外,在提示确认为某些存储库添加 GPG 密钥时输入 y。

安装 LEMP Stack 包后,您可以使用以下 systemctl 命令启动 Nginx、MariaDB 和 PHP-FPM 服务。此外,您将使所有这些服务在启动时自动运行。

sudo systemctl start nginx mariadb php-fpm
sudo systemctl enable nginx mariadb php-fpm

您现在将看到如下输出 - LEMP 堆栈现在应该在您的 Rocky Linux 系统上运行,并且 LEMP 堆栈的所有服务都已启用。

设置防火墙

Firewalld 是基于 RHEL 的操作系统(包括 Rocky Linux)上的默认防火墙。建议在启用防火墙的情况下运行 Drupal 或任何 Web 应用程序,尤其是在生产级环境中。

现在您要将端口 HTTP 和 HTTPS 添加到 firewalld 以允许客户端访问您的 Drupal 安装。

运行下面的 firewall-cmd 命令,将 HTTP 和 HTTPS 服务添加到 firewalld。

sudo firewall-cmd --add-service=http --permanent
sudo firewall-cmd --add-service=https --permanent

现在重新加载 firewalld 以应用新的更改。然后,验证 firewalld 上启用的服务列表。

sudo firewall-cmd --reload
sudo firewall-cmd --list-services

您应该将 HTTP 和 HTTPS 服务添加到 firewalld。

设置 MariaDB 服务器

在此步骤中,您将开始配置将用于 Drupal 的 MariaDB 数据库。您将从保护 MariaDB 部署开始,然后为 Drupal 安装创建新的数据库和用户。

在开始之前,运行以下命令来验证 MariaDB 服务并确保该服务正在运行。

sudo systemctl status mariadb

下面是 MariaDB 服务运行时的输出。

接下来,运行以下命令来保护 MariaDB 服务器部署。此命令行 mysql_secure_installation 由 MariaDB 包提供,可帮助您保护安装。

sudo mysql_secure_installation

现在应该询问您一些与 MariaDB 服务器配置相关的问题:

  • 默认的 MariaDB 安装没有密码,当提示输入密码时按 ENTER。
  • 现在输入 Y 来设置 MariaDB root 密码。然后,键入 MariaDB 的新密码并重复密码。
  • 输入 Y 从您的 MariaDB 安装中删除匿名用户。
  • 当提示禁用 MariaDB root 用户的远程登录时,再次输入 Y。
  • 输入 Y 以从您的 MariaDB 中删除默认数据库测试。
  • 最后,输入 Y 重新加载表权限并应用新的更改。

保护 MariaDB 部署后,您接下来将为 Drupal 设置一个新的数据库和用户。

使用以下 mysql 命令通过用户 root 登录到 MySQL/MariaDB shell。

sudo mysql -u root -p

运行以下查询为 Drupal 创建新的数据库和用户。在此示例中,您将使用 [email 用户创建数据库 drupaldb。另外,一定要更改默认的数据库密码。

CREATE DATABASE drupaldb;
CREATE USER WITH GRANT OPTION;
FLUSH PRIVILEGES;

接下来,运行以下查询以验证 MariaDB 用户 [email 的权限是否有权访问数据库 drupaldb。

SHOW GRANTS FOR ;

现在运行查询 exit 或 quit 从 MariaDB shell 注销。

安装 PECL 扩展:uploadprogress

uploadprogress 是 Drupal 用来显示进度条的扩展。可以通过 PECL(PHP 扩展社区库)存储库安装 uploadprogress。

您现在将从 PECL 存储库安装 uploadprogress 扩展,并在您的 PHP 安装上启用它。

首先,运行以下命令以确保命令 pecl 在您的系统上可用。 pecl 可用,您应该看到 pecl 二进制文件的完整路径。

which pecl

现在运行下面的 pecl 命令来安装 uploadprogress 扩展。

sudo pecl install uploadprogress

安装开始时,您应该会看到如下输出:

接下来,运行以下命令创建一个新的配置文件/etc/php.d/uploadprogress.ini,并启用uploadprogress 扩展。

cat <<EOF | sudo tee /etc/php.d/uploadprogress.ini
; configuration for php uploadprogress module
; priority 15
extension=uploadprogress.so
EOF

最后,重新启动 PHP-FPM 服务以应用新更改。 PHP-FPM 现在正在运行,并启用了附加扩展 uploadprogress。

sudo systemctl restart php-fpm

配置 PHP-FPM

现在您将通过 /etc/php.ini 文件设置 PHP-FPM 的基本配置,并为 Drupal 设置特定的 PHP-FPM 池。

使用以下 nano 编辑器修改 /etc/php.ini 文件。

sudo nano /etc/php.ini

如下更改默认配置。另外,请务必根据您的环境更改 date.timezone 选项。

memory_limit = 512M
upload_max_filesize = 60M
max_execution_time = 300
date.timezone = Europe/Stockholm

完成后保存文件并退出编辑器。

接下来,将默认的 PHP-FPM 池配置 /etc/php-fpm.d/www.conf 复制到 /etc/php-fpm.d/drupal.conf .然后,使用 nano 编辑器修改新的池配置 /etc/php-fpm.d/drupal.conf。

sudo cp /etc/php-fpm.d/www.conf /etc/php-fpm.d/drupal.conf
sudo nano /etc/php-fpm.d/drupal.conf

将默认名称更改为 [drupal],将默认用户和组更改为 nginx。此外,请务必将 drupal PHP-FPM 池的列表 sock 文件更改为 /run/php-fpm/drupal.sock。

[drupal]
user = nginx
group = nginx
listen.owner = nginx
listen.group = nginx
listen = /run/php-fpm/drupal.sock

完成后保存文件并退出编辑器。

现在通过下面的 systemctl 命令重启 PHP-FPM 服务。然后,验证 PHP-FPM 服务状态。

sudo systemctl restart php-fpm
sudo systemctl status php-fpm

您应该会收到如下输出 - PHP-FPM 服务正在运行。

接下来,运行以下命令创建一个新的 PHPINFO 文件 /usr/share/nginx/html/info.php。

cat <<EOF | sudo tee /usr/share/nginx/html/info.php
<?php
phpinfo();
?>
EOF

最后,打开网络浏览器并访问服务器 IP 地址后跟路径 /info.php(即:http://192.168.5.100/info.php)。您应该获得有关 PHP 的详细信息

下载 Drupal 源代码

至此,您已经为 Drupal 安装完成了 MariaDB 数据库服务器和 PHP-FPM 的配置。接下来,您将下载最新版本的 Drupal 到您的服务器。

首先,将当前工作目录移动到 /tmp 并通过 wget 命令下载最新版本的 Drupal,如下所示。下载过程完成后,您应该会看到文件 drupal.tar.gz。

cd /tmp
wget https://www.drupal.org/download-latest/tar.gz -O drupal.tar.gz

接下来,使用 tar 命令提取文件 drupal.tar.gz 并将提取的目录移动到 /var/www/drupal,它将用作 Drupal 的安装.

tar -xvf drupal.tar.gz
mv drupal-* /var/www/drupal

最后,运行以下命令更改 Drupal 安装目录 /var/www/drupal 的所有权和权限。所有权应该是用户和组 nginx,这样 Nginx 网络服务器就可以读取和访问 Drupal 源代码。对于权限,它应该是 755。

sudo chown -R nginx:nginx /var/www/drupal/
sudo chmod -R 755 /var/www/drupal/

设置 SELinux

下载 Drupal 源代码后,您接下来将为 Drupal 设置 SELinux。您将下载 SELinux 管理工具到您的服务器,并设置 Drupal 源代码的标签和 Nginx 的附加规则。

运行下面的 dnf 命令以安装软件包 policycoreutils-python-utils 以在您的系统上管理 SELinux。

sudo dnf install policycoreutils-python-utils

出现提示时,输入 y 确认安装,然后按 ENTER 继续。

接下来,运行以下命令为 Drupal 源代码设置标签。

sudo semanage fcontext -a -t httpd_sys_rw_content_t "/var/www/drupal(/.*)?"
sudo semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/drupal/sites/default/settings.php'
sudo semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/drupal/sites/default/files'

sudo restorecon -Rv /var/www/drupal

运行以下命令以允许 Nginx Web 服务器访问某些服务。对于 Drupal 安装,您应该允许 Nginx 访问网络和邮件服务。

sudo setsebool -P httpd_can_sendmail on
sudo setsebool -P httpd_can_network_connect on

现在您已经下载了 Drupal 源代码并为用户和组配置了正确的所有权 nginx,为 755 配置了正确的权限,并为 Drupal 配置了 SELinux。

设置 Nginx Web 服务器

现在您已经完成了 MariaDB 数据库服务器和 PHP-FPM 的一些配置。此外,您还下载了 Drupal 源代码并配置了 SELinux。在下一步中,您将为您的域设置 Nginx 服务器块。

在开始之前,请确保您的域名指向您的服务器 IP 地址。此外,请确保您已生成 SSL Letsencrypt。

使用以下 nano 编辑器创建一个新的 Nginx 服务器块配置 /etc/nginx/conf.d/drupal.conf。

sudo nano /etc/nginx/conf.d/drupal.conf

将以下配置添加到文件中。并且一定要更改域名和SSL证书的路径。此示例使用域 http://drupal.hwdomain.io 作为 Drupal 安装的主域。

server {
    listen 80;
    server_name drupal.hwdomain.io;
    return 301 https://$host$request_uri;
}

server {
    listen 443 http2 ssl;
    server_name drupal.hwdomain.io;

    root /var/www/drupal;

    ssl_certificate      /etc/letsencrypt/live/drupal.hwdomain.io/fullchain.pem;
    ssl_certificate_key  /etc/letsencrypt/live/drupal.hwdomain.io/privkey.pem;

    access_log /var/log/nginx/drupal.hwdomain.io.access.log;
    error_log /var/log/nginx/drupal.hwdomain.io.error.log;

    location = /favicon.ico {
        log_not_found off;
        access_log off;
    }

    location = /robots.txt {
        allow all;
        log_not_found off;
        access_log off;
    }

    location ~ \..*/.*\.php$ {
        return 403;
    }

    location ~ ^/sites/.*/private/ {
        return 403;
    }

    # Block access to scripts in the site files directory
    location ~ ^/sites/[^/]+/files/.*\.php$ {
        deny all;
    }
    location ~ (^|/)\. {
        return 403;
    }

    location / {
        try_files $uri /index.php?$query_string;
    }

    location @rewrite {
        rewrite ^/(.*)$ /index.php?q=$1;
    }
    location ~ /vendor/.*\.php$ {
        deny all;
        return 404;
    }


    location ~ '\.php$|^/update.php' {
        fastcgi_split_path_info ^(.+?\.php)(|/.*)$;
        include fastcgi_params;
        # Block httpoxy attacks. See https://httpoxy.org/.
        fastcgi_param HTTP_PROXY "";
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param PATH_INFO $fastcgi_path_info;
        fastcgi_param QUERY_STRING $query_string;
        fastcgi_intercept_errors on;
        fastcgi_pass unix:/run/php-fpm/drupal.sock;
    }
    location ~ ^/sites/.*/files/styles/ { # For Drupal >= 7
        try_files $uri @rewrite;
    }

    # Handle private files through Drupal. Private file's path can come
    # with a language prefix.
    location ~ ^(/[a-z\-]+)?/system/files/ { # For Drupal >= 7
        try_files $uri /index.php?$query_string;
    }

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

完成后保存文件并退出编辑器。

现在,运行以下命令来验证 Nginx 配置。您应该得到诸如 test successful - syntax ok 之类的输出消息,这意味着您具有正确的 Nginx 配置并且没有错误。

sudo nginx -t

接下来,运行以下 systemctl 命令以重新启动 Nginx 服务并应用新的服务器块配置。

sudo systemctl restart nginx

Nginx 服务现在应该使用新的服务器块配置 /etc/nginx/conf.d/drupal.conf 运行。运行以下命令来验证 Nginx 服务并确保该服务正在运行。

sudo systemctl status nginx

您应该得到如下输出 - Nginx 服务正在运行。

您现在应该能够通过您的域访问您的 Drupal 安装。

开始安装 Drupal

至此,您已经完成了Drupal 包依赖的配置。现在您可以通过您的域访问您的 Drupal。

在此步骤中,您将开始安装 Drupal,还将设置有关 Drupal 的详细信息并为 Drupal 设置管理员用户。

打开您的 Web 浏览器并访问您的 Drupal 安装的域名(即:https://drupal.hwdomain.io/)。您应该获得 Drupal 的安装页面。

选择您的 Drupal 安装语言,或者您可以使用默认的英语,然后单击按钮保存并继续。

为您的安装选择安装配置文件,然后单击保存并继续。此示例使用标准配置文件。

现在为您的 Drupal 安装设置数据库。在顶部输入您已经拥有和创建的 MariaDB 数据库和用户的详细信息。

单击保存并再次继续。

现在开始安装 Drupal。

输入有关您的 Drupal 安装的详细信息。另外,请务必使用您的 Drupal 管理员用户名并使用强密码。

单击保存并继续。

Drupal 安装完成后,您将看到以下页面。您可以看到诸如恭喜您安装了 Drupal!之类的消息。

完成 Drupal 安装

运行以下命令为 Drupal 配置文件和目录设置标签。

sudo restorecon -v /var/www/drupal/sites/default/settings.php
sudo restorecon -Rv /var/www/drupal/sites/default/files

接下来,运行以下命令更改文件 /var/www/drupal/sites/default/settings.php 的权限并使其可写。然后,使用 nano 编辑器编辑文件。

sudo chmod 644 /var/www/drupal/sites/default/settings.php
sudo nano /var/www/drupal/sites/default/settings.php

取消注释脚本行 trusted_host_patterns 并添加您的域名。这将在您的 Drupal 安装上启用 trusted_host。

$settings['trusted_host_patterns'] = [
  '^hwdomain\.io$',
  '^drupal.hwdomain\.io$',
];

完成后保存文件并退出编辑器。

最后,返回您的 Drupal 站点上的 Web 浏览器并访问以下 URL 中的报告状态。将主域名替换为您的域 - 或者您可以通过菜单管理 > 报告访问它。

https://drupal.hwdomain.io/admin/reports/status

在以下报告中 - 您可以看到 检查了 25 个 Drupal 安装的系统要求。这意味着您的 Drupal 安装是正确的并且没有错误。

结论

在本指南中,您学习了如何在 Rocky Linux 服务器上安装最新版本的 Drupal v9。您还学习了 LAMP Stack(Linux、Apache2/httpd、MySQL/MariaDB 和 PHP)的安装以及托管 Drupal 的基本配置。此外,您还学习了如何从 PECL(PHP 扩展社区库)存储库安装 PHP 扩展。

在 Drupal 运行并使用 SSL 证书保护并启用 trusted_hosts 配置后,您现在可以通过安装新主题或为 Drupal 安装添加一些插件来扩展 Drupal 部署。

©2015-2025 艾丽卡 support@alaica.com