本教程适用于以下操作系统版本:
- Debian 12 (Bookworm)
- Debian 10 (Buster)
- Debian 9 (Stretch)
本页内容
- 准备工作
- 安装依赖项
- 配置 UFW
- 配置 PHP
- 配置 MariaDB
- 下载 Joomla CMS
- 配置 Apache2 虚拟主机
- 使用 SSL/TLS 证书保护 Joomla
- 通过 Web 安装程序安装 Joomla
- 总结
Joomla CMS 是一款用于构建网站和在线应用程序的开源内容管理系统。它提供了友好的特性和良好的可扩展性,并且对所有人免费开放。Joomla 由 PHP 驱动,可用于论坛、相册、电子商务以及各类基于 Web 的应用等多种场景。
在本指南中,我们将介绍如何在 Debian 12 服务器上安装 Joomla CMS。你将使用 LAMP 技术栈(Apache、MariaDB 和 PHP)安装 Joomla,并通过 UFW(简单防火墙)和 Letsencrypt 提供的 SSL 证书来保护安装。
准备工作
在开始本指南之前,请先准备以下条件:
- 一台 Debian 12 服务器。
- 一个具有管理员权限的非 root 用户。
- 一个指向服务器 IP 地址的域名。
安装依赖项
Joomla 是一款基于 PHP 和 MySQL 数据库的开源 CMS。要安装它,请确保已安装所需的依赖项。
现在,你将安装 LAMP 技术栈以及 Joomla 所需的额外依赖项,例如 UFW 和 Certbot。
运行以下 apt 命令以更新 Debian 软件仓库。
sudo apt update

现在使用以下 apt 命令安装 Joomla 依赖项。通过此命令,你将安装 LAMP 技术栈软件包、UFW、Certbot 以及 unzip 工具。
sudo apt install apache2 mariadb-server php php-curl php-common php-json php-intl php-xml php-gd php-mysql php-imagick php-mbstring php-zip ufw certbot python3-certbot-apache unzip
输入 Y 并按下 ENTER 键以确认安装。

安装完成后,请确保 Apache2 和 MariaDB 在你的 Debian 服务器上均已运行并设置为开机自启。
使用以下命令检查 apache2 服务,确保其已运行并启用。
sudo systemctl is-enabled apache2
sudo systemctl status apache2

最后,使用以下命令检查 mariadb 服务。你应该能看到 mariadb 服务已启用,状态为 active(运行中)。
sudo systemctl is-enabled mariadb
sudo systemctl status mariadb

配置 UFW
在本示例中,你将在 UFW(简单防火墙)已运行并启用的情况下运行 Joomla。因此,请务必将 SSH、HTTP 和 HTTPS 端口添加到 UFW 规则中。
首先,运行以下命令以启用 OpenSSH 和 'WWW Full' 应用配置文件。OpenSSH 配置文件将开放默认的 SSH 端口 22,而 'WWW Full' 配置文件将同时开放 HTTP 和 HTTPS 端口(80 和 443)。
sudo ufw allow OpenSSH
sudo ufw allow 'WWW Full'
然后,执行以下命令启用 UFW。输入 y 以确认该操作。
sudo ufw enable
你应该会看到 'Firewall is active and enabled on system startup'(防火墙已激活并在系统启动时启用)的提示,这表明 UFW 已在你的 Debian 机器上运行并启用。

使用以下命令验证 UFW。请确认 OpenSSH 和 'WWW Full' 配置文件已包含在你的 UFW 启用规则中。
sudo ufw status

配置 PHP
配置好 UFW 后,下一步是为你的 Joomla 安装配置 PHP。
Joomla 在 php.ini 文件中至少需要以下配置:
- memory_limit: 256M
- upload_max_filesize: 32M
- post_max_size: 32M
- max_execution_time: 30
使用以下 nano 编辑器命令打开 '/etc/php/8.2/apache2/php.ini' 文件。
sudo nano /etc/php/8.2/apache2/php.ini
将默认的 php.ini 配置修改为以下内容。请根据你系统的实际内存大小调整 memory_limit 选项。
memory_limit=512M upload_max_filesize=64M post_max_size=64M max_execution_time=60 output_buffering = Off extension=intl
完成后保存并关闭文件。
现在运行以下命令以重启 apache2 服务,使 PHP 的更改生效。
sudo systemctl restart apache2
配置 MariaDB
在接下来的部分中,你将使用 'mariadb-secure-installation' 工具来初始化并加固 MariaDB 服务器。随后,你还将通过 MySQL/MariaDB 客户端为 Joomla 创建一个新的数据库和用户。
执行以下 'mariadb-secure-installation' 命令,开始加固你的 MariaDB 服务器安装。
sudo mariadb-secure-installation
输入 Y 以应用新配置,或输入 N(否)以拒绝。以下是你将配置的 MariaDB 服务器部分选项:
- 默认的 MariaDB 安装没有设置密码,在提示输入密码时直接按 ENTER 键。
- 输入 Y 设置 MariaDB root 密码。然后输入新的 MariaDB 密码并重复确认。
- 输入 Y 以从 MariaDB 安装中删除匿名用户。
- 在提示禁用 MariaDB root 用户的远程登录时,再次输入 Y。
- 输入 Y 以删除 MariaDB 中默认的 test 数据库。
- 最后,输入 Y 重新加载表权限并应用新更改。
现在你已经完成了 MariaDB 服务器的配置,使用以下命令登录 MariaDB。在提示时输入你的 MariaDB root 密码。
sudo mariadb -u root -p
运行以下查询语句,创建一个名为 joomladb 的新数据库以及用户 joomla。同时,请务必将数据库密码 'p4ssword' 替换为你自己的强密码。
CREATE DATABASE joomladb;
CREATE USER joomla@localhost IDENTIFIED BY 'p4ssword';
GRANT ALL PRIVILEGES ON joomladb.* TO joomla@localhost;
FLUSH PRIVILEGES;

接下来,运行以下查询以验证 MariaDB 用户 joomla@localhost 的权限。
SHOW GRANTS FOR joomla@localhost;
请确保 joomla@localhost 用户能够像下面这样访问 joomladb 数据库。

输入 quit 退出 MariaDB 服务器,进入下一步。
下载 Joomla CMS
在接下来的部分中,你将下载最新版本的 Joomla,并设置 Joomla 源代码的正确权限和归属。
截至目前,Joomla 的最新版本为 v5.0.1。请务必查看 Joomla 下载页面获取其最新版本。
进入 /var/www 目录,并使用以下 wget 命令下载 Joomla。
cd /var/www/
wget https://downloads.joomla.org/cms/joomla5/5-0-1/Joomla_5-0-1-Stable-Full_Package.zip
下载完成后,使用以下 unzip 命令将 Joomla 源代码解压到 joomla 目录。这样,你的 Joomla 安装目录将位于 /var/www/joomla。
unzip Joomla_5-0-1-Stable-Full_Package.zip -d joomla
现在将 /var/www/joomla 目录的归属更改为用户 www-data 和组 www-data。
sudo chown -R www-data:www-data /var/www/joomla
配置 Apache2 虚拟主机
在接下来的步骤中,你将创建一个新的 Apache 虚拟主机配置来运行 Joomla。请确保你已准备好一个域名,并将其指向你的服务器 IP 地址。此处我们以 howtoforge.local 为例。
首先,运行以下 nano 编辑器命令创建新的虚拟主机配置文件 '/etc/apache2/sites-available/joomla.conf'。
sudo nano /etc/apache2/sites-available/joomla.conf
插入以下配置内容,并将域名 howtoforge.local 替换为你自己的域名。
<VirtualHost *:80>
ServerAdmin
[email protected]
ServerName howtoforge.local
DocumentRoot /var/www/joomla
<Directory /var/www/joomla/>
Options FollowSymlinks
AllowOverride All
Require all granted
</Directory>
ErrorLog ${APACHE_LOG_DIR}/howtoforge.local_error.log
CustomLog ${APACHE_LOG_DIR}/howtoforge.local_access.log combined
</VirtualHost>
完成后保存文件并退出编辑器。
接下来,运行以下命令以启用虚拟主机文件 joomla.conf 并验证 Apache 配置语法。
sudo a2ensite joomla.conf
sudo apachectl configtest
如果 Apache 配置语法没有错误,你将看到 'Syntax OK' 的输出。

现在使用以下 systemctl 命令重启 Apache2,以使新的虚拟主机文件 joomla.conf 生效。
sudo systemctl restart apache2
使用 SSL/TLS 证书保护 Joomla
至此,你的 Joomla 安装已经运行起来。但为了确保 Joomla 安装的安全性,你将通过 Certbot 和 Letsencrypt 启用 HTTPS。
在第一步中,你已经安装了 certbot 以及 python3-certbot-apache 插件。
现在运行以下 certbot 命令,为你的域名生成 SSL/TLS 证书。请务必将邮箱地址和域名替换为你自己的信息。
sudo certbot --apache --apache --agree-tos --redirect --hsts --staple-ocsp --email
[email protected]
-d howtoforge.local
该过程完成后,你的 Joomla 安装应已自动配置好 HTTPS。你的 SSL 证书将位于 /etc/letsencrypt/live/yourdomain.com 目录中。
通过 Web 安装程序安装 Joomla
打开你的网页浏览器,访问你的 Joomla 安装域名,例如 https://howtoforge.local/。你将看到 Joomla 的 Web 安装页面。
选择默认语言,并输入你 Joomla 安装的站点名称。然后,点击“设置登录信息(Setup Login Data)”以配置 Joomla 管理员用户。

输入你的姓名、用户名、电子邮件地址以及 Joomla 管理员用户的密码。然后,点击“设置数据库连接(Setup Database Connection)”继续。

输入 MariaDB 服务器的数据库名称、用户、主机以及默认数据库前缀。然后,点击“安装 Joomla(Install Joomla)”开始安装过程。

安装过程中,你将看到以下内容:

Joomla 安装完成后,你应该会看到 'Congratulations! Your Joomla site is ready!'(恭喜!你的 Joomla 站点已准备就绪!)的提示。
在此页面,点击以下内容:
- 打开站点:打开 Joomla 安装的主页。
- 打开管理后台:打开 Joomla 管理地址,即 https://howtoforge.local/administrator。

以下是 Joomla 安装后默认主页的截图。

在 Joomla 管理员登录页面中,输入你 Joomla 安装的管理员用户名和密码,然后点击“登录(Log in)”确认。

如果你输入了正确的管理员用户名和密码,你将看到如下所示的 Joomla 管理员仪表盘:

总结
恭喜!你已成功在 Debian 12 服务器上完成 Joomla 开源 CMS 的安装。你已使用 LAMP 技术栈(Apache、MariaDB 和 PHP)安装了 Joomla,并使用 UFW(简单防火墙)加固了你的 Debian 服务器,同时通过 Letsencrypt 提供的 SSL/TLS 证书保护了你的 Joomla 安装。
如需进一步探索,不妨选择一些可用的主题来定制你的 Joomla 主页?或者,你也可以尝试安装 Joomla 插件,为你的站点增添功能。