如何在 Debian 12 上安装带有 Apache 的 Drupal CMS
Drupal 是一个用 PHP 编写的免费开源 Web 内容管理系统,并根据 GNU 通用公共许可证分发。 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 Stack(Apache2、MariaDB 和 PHP)、Composer PHP 依赖项管理器以及一些其他 PHP 扩展。
首先,运行以下 apt 命令来更新和刷新 Debian 软件包索引。
sudo apt update
更新后,通过执行以下命令安装软件包依赖项。使用以下命令,您将安装 LAMP Stack 包(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 中删除默认数据库测试。
- 最后,输入 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 可以访问用于 Drupal 安装的数据库 drupaldb。
配置 PHP
配置 MariaDB 服务器后,您将通过以下方式为 Drupal 安装配置 PHP:
- 通过 PECL(PHP 扩展社区库)安装 Uploadprogress 扩展。
- 编辑 php.ini 文件。
让我们开始。
通过 PECL 安装 Uploadprogress 扩展
uploadprogress 扩展用于显示和跟踪文件的上传进度,包括上传速度和预计剩余时间。 uploadprogress 扩展在 PECL 上可用,需要通过 pecl 命令行手动安装。
执行以下 pecl 命令将 uploadprogress 安装到您的 Debian 系统。
sudo pecl install 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
启动您的网络浏览器并访问您的服务器 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 的权限和所有权。该目录将由具有 755 权限的用户 www-data 拥有。
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 hwdomain.io
ServerAdmin [email
DocumentRoot /var/www/drupal
# Add security
php_flag register_globals off
ErrorLog ${APACHE_LOG_DIR}/hwdomain.io.error.log
CustomLog ${APACHE_LOG_DIR}/hwdomain.io.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 生成 SSL/TLS 证书 Letsencrypt
在接下来的步骤中,您将使用 Letsencrypt 的 SSL/TLS 证书来保护您的 Drupal 安装。为此,您必须将 Certbot 和 Certbot Apache 插件安装到 Debian 系统,然后为您的 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 -d hwdomain.io
该过程完成后,您的 SSL/TLS 证书将在 /etc/letsencrypt/live/domain.com 目录中可用。您的 Drupal 安装会自动配置 HTTPS,这是通过 Certbot Apache 插件配置的。
通过 Web 安装程序安装 Drupal
启动 Web 浏览器并访问 Drupal 站点的域名,例如 http://hwdomain.io/。如果一切顺利,您应该会被重定向到 HTTPS 连接,并且将显示 Drupal 安装页面。
选择用于 Drupal 安装的默认语言,然后单击保存并继续。
选择您要使用的 Drupal 安装配置文件。建议新站点所有者使用标准配置文件,而最小配置文件则需要对 Drupal 有深入的了解。或者您也可以选择带有演示的配置文件。
以下示例将使用标准配置文件,然后单击保存并继续。
现在,Drupal Web 安装程序将验证您的 Drupal 安装系统环境。如果您的服务器满足 Drupal 要求,您应该被重定向到数据库配置。
输入 Drupal 将使用的 MariaDB 数据库名称、用户和密码的详细信息。然后,再次点击保存并继续。
配置数据库后,Drupal 安装应该开始。
安装过程完成后,配置您的 Drupal 站点。输入站点名称、站点电子邮件地址、管理员用户名、密码、默认国家/地区和时区的详细信息。然后,点击保存并继续。
如果您的 Drupal 安装成功,屏幕上应显示输出“恭喜您安装了 Drupal!”。
从那里,您可以管理 Drupal 内容、站点结构和 Drupal 管理,并检查 Drupal 安装的状态。单击管理并选择配置菜单来配置您的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
接下来,选择报告菜单并单击状态报告。
您应该会看到有关 Drupal 安装的详细信息。在下面的屏幕截图中,Drupal 10 安装了 Apache2 Web 服务器 2.4、MariaDB 服务器 10.11 和 PHP 8.2。
现在单击状态报告上的详细信息链接,您将看到 Drupal 服务器环境的详细信息报告。
结论
按照此分步指南,您已使用 LAMP Stack 和 SSL/TLS Letsencrypt 在 Debian 12 服务器上安装了 Drupal 内容管理系统。从这里,您现在可以使用 Drupal 作为您的网站,并为您的 Drupal CMS 安装新的主题和扩展。