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

  • 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

在 Debian 12 上安装 Joomla CMS

现在使用以下 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 键以确认安装。

在 Debian 12 上安装 Joomla CMS

安装完成后,请确保 Apache2 和 MariaDB 在你的 Debian 服务器上均已运行并设置为开机自启。

使用以下命令检查 apache2 服务,确保其已运行并启用。

sudo systemctl is-enabled apache2
sudo systemctl status apache2

在 Debian 12 上安装 Joomla CMS

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

sudo systemctl is-enabled mariadb
sudo systemctl status mariadb

在 Debian 12 上安装 Joomla CMS

配置 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 机器上运行并启用。

在 Debian 12 上安装 Joomla CMS

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

sudo ufw status

在 Debian 12 上安装 Joomla CMS

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

在 Debian 12 上安装 Joomla CMS

接下来,运行以下查询以验证 MariaDB 用户 joomla@localhost 的权限。

SHOW GRANTS FOR joomla@localhost;

请确保 joomla@localhost 用户能够像下面这样访问 joomladb 数据库。

在 Debian 12 上安装 Joomla CMS

输入 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' 的输出。

在 Debian 12 上安装 Joomla CMS

现在使用以下 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 管理员用户。

在 Debian 12 上安装 Joomla CMS

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

在 Debian 12 上安装 Joomla CMS

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

在 Debian 12 上安装 Joomla CMS

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

在 Debian 12 上安装 Joomla CMS

Joomla 安装完成后,你应该会看到 'Congratulations! Your Joomla site is ready!'(恭喜!你的 Joomla 站点已准备就绪!)的提示。

在此页面,点击以下内容:

  • 打开站点:打开 Joomla 安装的主页。
  • 打开管理后台:打开 Joomla 管理地址,即 https://howtoforge.local/administrator。

在 Debian 12 上安装 Joomla CMS

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

在 Debian 12 上安装 Joomla CMS

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

在 Debian 12 上安装 Joomla CMS

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

在 Debian 12 上安装 Joomla CMS

总结

恭喜!你已成功在 Debian 12 服务器上完成 Joomla 开源 CMS 的安装。你已使用 LAMP 技术栈(Apache、MariaDB 和 PHP)安装了 Joomla,并使用 UFW(简单防火墙)加固了你的 Debian 服务器,同时通过 Letsencrypt 提供的 SSL/TLS 证书保护了你的 Joomla 安装。

如需进一步探索,不妨选择一些可用的主题来定制你的 Joomla 主页?或者,你也可以尝试安装 Joomla 插件,为你的站点增添功能。