本教程适用于以下操作系统版本

  • Debian 12 (Bookworm)
  • Debian 11 (Bullseye)
  • Debian 9 (Stretch)

本页内容

  • 准备工作
  • 安装依赖项
  • 配置 MariaDB 服务器
  • 配置 PHP 通过 PECL 安装 Uploadprogress 扩展 编辑 php.ini 文件
  • 下载 Drupal 源代码
  • 配置 Apache2 虚拟主机
  • 为 Drupal 生成 Letsencrypt 的 SSL/TLS 证书
  • 通过 Web 安装程序安装 Drupal
  • Drupal 的额外配置
  • 总结
  • 通过 PECL 安装 Uploadprogress 扩展
  • 编辑 php.ini 文件

Drupal 是一个用 PHP 编写的免费开源 Web 内容管理系统,依据 GNU 通用公共许可证(GNU General Public License)发布。Drupal 提供强大的内容管理工具,并带有用于多渠道发布的成熟 API。

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

在本指南中,我将向你展示如何在 Debian 12 服务器上安装 Drupal。我们会在 LAMP 技术栈(Apache2、MariaDB 和 PHP)上安装 Drupal,并使用 Letsencrypt 提供的 SSL/TLS 证书来保护 Drupal。

准备工作

开始之前,请确认你具备以下条件:

  • 一台 Debian 12 服务器。
  • 一个具有管理员权限的非 root 用户。
  • 一个已指向你服务器 IP 地址的域名。

安装依赖项

Drupal 是一个用 PHP 编写的开源内容管理系统,使用 MySQL/MariaDB 作为数据库。要安装 Drupal,你必须在系统中安装 PHP 以及 MySQL/MariaDB 软件包。

在接下来的步骤中,你将安装 Drupal 所需的软件包依赖,包括 LAMP 技术栈(Apache2、MariaDB 和 PHP)、Composer PHP 依赖管理器,以及一些额外的 PHP 扩展。

首先,运行以下 apt 命令来更新并刷新你的 Debian 软件包索引。

sudo apt update

更新完成后,执行以下命令安装软件包依赖。通过该命令,你将安装 LAMP 技术栈软件包(Apache2、MariaDB 和 PHP)、Composer PHP 依赖管理器,以及 Drupal 所需的额外 PHP 扩展。

sudo apt install apache2 mariadb-server composer php php-apcu php-dev libapache2-mod-php libcurl4-openssl-dev php-cli php-mysql php-zip php-gd php-fpm php-json php-common php-intl php-mbstring php-curl php-xml php-pear php-tidy php-soap php-bcmath php-xmlrpc

输入 y 以继续安装。

在 Debian 12 上安装 Drupal 内容管理系统

依赖安装完成后,验证每一项依赖,以确保安装成功。

使用以下命令验证 apache2 服务。这将确保 apache2 服务正在运行并已启用。

sudo systemctl is-enabled apache2
sudo systemctl status apache2

显示的输出将表明 apache2 服务正在运行并已启用。

在 Debian 12 上安装 Drupal 内容管理系统

现在通过执行以下命令来验证 mariadb 服务。

sudo systemctl is-enabled mariadb
sudo systemctl status mariadb

输出应类似如下:

在 Debian 12 上安装 Drupal 内容管理系统

接下来,使用以下命令验证 Composer 二进制文件的位置以及已安装的版本。

which composer
sudo -u www-data composer -v

输出确认 Composer 2.5 已安装在 /usr/bin/composer 。

在 Debian 12 上安装 Drupal 内容管理系统

最后,使用以下命令验证 PHP 版本以及已启用的 PHP 模块。

php -v
php -m

PHP 8.2 应已安装在你的 Debian 机器上,并且默认的 PHP 扩展应已启用。

在 Debian 12 上安装 Drupal 内容管理系统

配置 MariaDB 服务器

所有依赖安装完成后,下一步是保护你的 MariaDB 服务器安装,并创建一个供 Drupal 使用的新数据库和用户。你将通过 mariadb-secure-installation 工具来加固 MariaDB,然后通过 mariadb 客户端命令行创建一个新的数据库和用户。

执行以下 mariadb-secure-installation 命令来加固你的 MariaDB 服务器。

sudo mariadb-secure-installation

在此过程中,系统会询问你以下配置:

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

接下来,执行以下 mariadb 命令登录到 MariaDB 服务器。在提示时输入你的 MariaDB root 密码。

sudo mariadb -u root -p

登录后,执行以下查询,在你的 MariaDB 服务器上创建一个新数据库 drupaldb 和用户 drupal。请务必将密码替换为你自己的密码。

CREATE DATABASE drupaldb;
CREATE USER drupal@localhost IDENTIFIED BY 'password';
GRANT ALL ON drupaldb.* TO drupal@localhost WITH GRANT OPTION;
FLUSH PRIVILEGES;

在 Debian 12 上安装 Drupal 内容管理系统

最后,运行以下查询来验证并确保用户 drupal 能够访问数据库 drupaldb。

SHOW GRANTS FOR drupal@localhost;

下面显示的输出确认用户 drupal 可以访问数据库 drupaldb,用于 Drupal 安装。

在 Debian 12 上安装 Drupal 内容管理系统

配置 PHP

配置完 MariaDB 服务器后,你将通过以下方式为 Drupal 安装配置 PHP:

  • 通过 PECL(PHP Extension Community Library,PHP 扩展社区库)安装 Uploadprogress 扩展。
  • 编辑 php.ini 文件。

我们开始吧。

通过 PECL 安装 Uploadprogress 扩展

uploadprogress 扩展用于显示和跟踪文件的上传进度,包括上传速度和预计剩余时间。uploadprogress 扩展可在 PECL 上获取,需要通过 pecl 命令行手动安装。

执行以下 pecl 命令,将 uploadprogress 安装到你的 Debian 系统。

sudo pecl install uploadprogress

uploadprogress 的安装应当开始了。

在 Debian 12 上安装 Drupal 内容管理系统

安装完成后,执行以下命令将 uploadprogress 扩展加载到你的 PHP 安装中。这将创建一个新的 PHP 扩展配置文件 /etc/php/8.2/mods-available/uploadprogress.ini 。

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

最后,执行以下命令以在你的 PHP 安装中启用 uploadprogress 扩展。

sudo ln -s /etc/php/8.2/mods-available/uploadprogress.ini /etc/php/8.2/apache2/conf.d/15-uploadprogress.ini

在 Debian 12 上安装 Drupal 内容管理系统

编辑 php.ini 文件

使用以下 nano 编辑器命令打开默认的 php.ini 配置文件 /etc/php/8.2/apache2/php.ini 。

sudo nano /etc/php/8.2/apache2/php.ini

使用以下内容修改默认的 PHP 配置。请务必根据你的服务器环境调整 memory_limit 和 date.timezone 选项。

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

完成后保存并退出文件。

接下来,运行以下 systemctl 命令以重启 apache2 服务并应用你所做的更改。

sudo systemctl restart apache2

然后,运行以下命令创建一个新的 PHPINFO 文件 /var/www/html/info.php 并验证你的 PHP 配置。

cat <<EOF | sudo tee /var/www/html/info.php
<?php
phpinfo();
?>
EOF

打开你的 Web 浏览器并访问你的服务器 IP 地址,例如 http://192.168.10.15/info.php 。如果你的 PHP 配置成功,你应该会看到类似如下的 PHPINFO 页面:

在 Debian 12 上安装 Drupal 内容管理系统

下载 Drupal 源代码

配置完 MariaDB 服务器和 PHP 安装后,你将下载 Drupal 源代码并通过 Composer 安装其 PHP 依赖。在本例中,你将下载最新版本的 Drupal。

切换到工作目录 /var/www 并通过以下 wget 命令下载 Drupal。Drupal 源代码将保存在 drupal.tar.gz 文件中。

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

通过以下 tar 命令解压 drupal.tar.gz 文件。然后,将解压出的目录重命名为 drupal,这意味着 Drupal 的 Web 根目录将为 /var/www/drupal 。

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

最后,运行以下命令更改 Drupal Web 根目录 /var/www/drupal 的权限和所有者。该目录将由用户 www-data 拥有,权限为 755 。

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

配置 Apache2 虚拟主机

既然你已经下载了 Drupal 并将 Web 根目录配置为 /var/www/drupal ,下一步是创建一个新的 Apache2 虚拟主机配置,用于运行 Drupal。在继续之前,请确保你已拥有一个指向服务器 IP 地址的域名。

首先,运行以下命令以启用 Drupal 所需的一些 Apache2 模块。

sudo a2enmod rewrite ssl headers deflate

在 Debian 12 上安装 Drupal 内容管理系统

然后,使用以下 nano 编辑器命令创建一个新的虚拟主机配置文件 /etc/apache2/sites-available/drupal.conf 。

sudo nano /etc/apache2/sites-available/drupal.conf

插入以下配置,并务必将 ServerName 选项替换为你的域名。

<VirtualHost *:80>
    ServerName howtoforge.local
    ServerAdmin 
[email protected]
    DocumentRoot /var/www/drupal
    # Add security
    php_flag register_globals off
    ErrorLog ${APACHE_LOG_DIR}/howtoforge.local.error.log
    CustomLog ${APACHE_LOG_DIR}/howtoforge.local.access.log combined
    <FilesMatch "\.(cgi|shtml|phtml|php)$">
      SSLOptions +StdEnvVars
    </FilesMatch>
    <Directory /var/www/drupal>
        Options FollowSymlinks
        #Allow .htaccess
        AllowOverride All
        Require all granted
        <IfModule security2_module>
            SecRuleEngine Off
            # or disable only problematic rules
        </IfModule>
    </Directory>
    <Directory /var/www/drupal/>
        RewriteEngine on
        RewriteBase /
        RewriteCond %{REQUEST_FILENAME} !-f
        RewriteCond %{REQUEST_FILENAME} !-d
        RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]
    </Directory>
</VirtualHost>

完成后,保存并关闭文件。

接下来,运行以下命令以激活虚拟主机文件 drupal.conf 并验证你的 Apache2 语法。

sudo a2ensite drupal.conf
sudo apachectl configtest

如果你的 Apache2 语法正确,将显示 Syntax OK 的输出。

在 Debian 12 上安装 Drupal 内容管理系统

现在使用以下命令重启 apache2 服务,以应用你所做的更改。

sudo systemctl restart apache2

为 Drupal 生成 Letsencrypt 的 SSL/TLS 证书

在接下来的步骤中,你将使用 Letsencrypt 提供的 SSL/TLS 证书来保护你的 Drupal 安装。为此,你必须在 Debian 系统上安装 Certbot 和 Certbot Apache 插件,然后为你的 Drupal 域名生成 SSL/TLS 证书。

使用以下 apt install 命令安装 Certbot 和 Certbot Apache 插件。输入 y 以继续安装。

sudo apt install certbot python3-certbot-apache

在 Debian 12 上安装 Drupal 内容管理系统

接下来,运行以下 certbot 命令为你的 Drupal 站点生成 SSL/TLS 证书。请务必替换该命令中的电子邮件地址和域名。

sudo certbot --apache --agree-tos --redirect --hsts --staple-ocsp --email 
[email protected]
 -d howtoforge.local

过程完成后,你的 SSL/TLS 证书将位于 /etc/letsencrypt/live/domain.com 目录中。你的 Drupal 安装会自动配置 HTTPS,这是通过 Certbot Apache 插件完成的。

通过 Web 安装程序安装 Drupal

打开你的 Web 浏览器并访问你的 Drupal 站点的域名,例如 http://howtoforge.local/ 。如果一切顺利,你将被重定向到 HTTPS 连接,并显示 Drupal 安装页面。

选择用于 Drupal 安装的默认语言,然后点击 Save and continue(保存并继续)。

在 Debian 12 上安装 Drupal 内容管理系统

选择你要使用的 Drupal 安装配置文件。建议新站点所有者使用 Standard(标准)配置文件,而 Minimal(精简)则需要对 Drupal 有深入的了解。你也可以选择带有 Demo(演示)的配置文件。

下面的示例将使用 Standard(标准)配置文件,然后点击 Save and continue(保存并继续)。

在 Debian 12 上安装 Drupal 内容管理系统

现在 Drupal Web 安装程序将验证你的系统环境是否满足 Drupal 安装要求。如果你的服务器满足 Drupal 的要求,你将被重定向到数据库配置页面。

输入 Drupal 将使用的 MariaDB 数据库名称、用户和密码。然后,再次点击 Save and continue(保存并继续)。

在 Debian 12 上安装 Drupal 内容管理系统

配置好数据库后,Drupal 的安装应当开始。

在 Debian 12 上安装 Drupal 内容管理系统

安装过程完成后,配置你的 Drupal 站点。输入站点名称、站点电子邮件地址、管理员用户名、密码、默认国家和时区。然后,点击 Save and continue(保存并继续)。

在 Debian 12 上安装 Drupal 内容管理系统

如果你的 Drupal 安装成功,屏幕上应显示“Congratulations, you installed Drupal!(恭喜,你已成功安装 Drupal!)”的输出。

在 Debian 12 上安装 Drupal 内容管理系统

从这里,你可以管理你的 Drupal 内容、站点结构和管理设置,并查看 Drupal 安装的状态。点击 Manage(管理),然后选择 Configuration(配置)菜单来配置你的 Drupal 安装。

在 Debian 12 上安装 Drupal 内容管理系统

Drupal 的额外配置

为了完成本指南,你将给你的 Drupal 添加一些额外的配置。

首先,回到你的终端服务器,运行以下命令更改 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 安装的域名,如下所示。

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

完成后保存并关闭文件。

现在运行以下命令,将 settings.php 文件的权限恢复为 444 。

sudo chmod 444 /var/www/drupal/sites/default/settings.php

接下来,选择 Reports(报告)菜单并点击 Status Reports(状态报告)。

在 Debian 12 上安装 Drupal 内容管理系统

你应该能看到关于你的 Drupal 安装的详细信息。在下面的截图里,安装的是 Drupal 10,配合 Apache2 Web 服务器 2.4、MariaDB 服务器 10.11 和 PHP 8.2。

在 Debian 12 上安装 Drupal 内容管理系统

现在点击状态报告上的 Details(详情)链接,你将看到 Drupal 服务器环境的详细报告。

在 Debian 12 上安装 Drupal 内容管理系统

总结

通过本分步指南,你已经在 Debian 12 服务器上借助 LAMP 技术栈和 SSL/TLS Letsencrypt 安装了 Drupal 内容管理系统。从这里开始,你现在可以将 Drupal 用作你的网站,并为你的 Drupal CMS 安装新的主题和扩展。