本教程适用于以下操作系统版本
- 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 以继续安装。

依赖安装完成后,验证每一项依赖,以确保安装成功。
使用以下命令验证 apache2 服务。这将确保 apache2 服务正在运行并已启用。
sudo systemctl is-enabled apache2
sudo systemctl status apache2
显示的输出将表明 apache2 服务正在运行并已启用。

现在通过执行以下命令来验证 mariadb 服务。
sudo systemctl is-enabled mariadb
sudo systemctl status mariadb
输出应类似如下:

接下来,使用以下命令验证 Composer 二进制文件的位置以及已安装的版本。
which composer
sudo -u www-data composer -v
输出确认 Composer 2.5 已安装在 /usr/bin/composer 。

最后,使用以下命令验证 PHP 版本以及已启用的 PHP 模块。
php -v
php -m
PHP 8.2 应已安装在你的 Debian 机器上,并且默认的 PHP 扩展应已启用。

配置 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;

最后,运行以下查询来验证并确保用户 drupal 能够访问数据库 drupaldb。
SHOW GRANTS FOR drupal@localhost;
下面显示的输出确认用户 drupal 可以访问数据库 drupaldb,用于 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 的安装应当开始了。

安装完成后,执行以下命令将 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

编辑 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 页面:

下载 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

然后,使用以下 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 的输出。

现在使用以下命令重启 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

接下来,运行以下 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(保存并继续)。

选择你要使用的 Drupal 安装配置文件。建议新站点所有者使用 Standard(标准)配置文件,而 Minimal(精简)则需要对 Drupal 有深入的了解。你也可以选择带有 Demo(演示)的配置文件。
下面的示例将使用 Standard(标准)配置文件,然后点击 Save and continue(保存并继续)。

现在 Drupal Web 安装程序将验证你的系统环境是否满足 Drupal 安装要求。如果你的服务器满足 Drupal 的要求,你将被重定向到数据库配置页面。
输入 Drupal 将使用的 MariaDB 数据库名称、用户和密码。然后,再次点击 Save and continue(保存并继续)。

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

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

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

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

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

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

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