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

  • AlmaLinux 9
  • AlmaLinux 8

本页内容

  • 准备工作
  • 安装 LAMP 技术栈依赖
  • 配置 PHP
  • 配置 MariaDB 服务器
  • 配置 Firewalld
  • 下载 Joomla
  • 配置 Httpd 虚拟主机
  • 使用 Certbot 和 Let's Encrypt 加固安全
  • 安装 Joomla
  • 总结

Joomla 是一款灵活的开源内容管理系统,用于构建网站和在线出版物。它由 PHP 驱动,可用于多种场景,例如论坛、图片画廊、电子商务以及其他基于 Web 的应用程序。

按照本教程,在 AlmaLinux 9 服务器上使用 LAMP 技术栈(Apache/Httpd、MariaDB 和 PHP)安装 Joomla CMS。

准备工作

在开始之前,请确保你的环境中具备以下条件:

  • 一台 AlmaLinux 9 服务器。
  • 一个具有管理员权限的非 root 用户。
  • SELinux 状态为 permissive(宽松模式)。
  • 一个解析到服务器 IP 地址的域名。

安装 LAMP 技术栈依赖

Joomla 是一个用 PHP 编写、使用 MySQL/MariaDB 数据库的内容管理系统。因此在安装 Joomla 之前,你需要先安装其依赖项。本示例中,你将在 AlmaLinux 9 服务器上使用 LAMP 技术栈(Apache/Httpd、MySQL/MariaDB 和 PHP)安装 Joomla。

首先,执行以下命令,将 EPEL 和 Remi 软件源添加到你的 AlmaLinux 服务器。安装一些额外依赖需要 EPEL 软件源,而 PHP 软件包则需要 Remi 软件源。

sudo dnf install epel-release dnf-utils http://rpms.remirepo.net/enterprise/remi-release-9.rpm

在 AlmaLinux 9 上安装 Joomla CMS

现在执行以下命令,重置 PHP 软件源模块并启用 Remi PHP 模块。输入 y 确认并继续。

sudo dnf module reset php
sudo dnf module enable php:remi-8.2

在 AlmaLinux 9 上安装 Joomla CMS

软件源添加完成后,执行以下命令安装 LAMP 技术栈及额外依赖。

sudo dnf install httpd mariadb-server php php-curl php-common php-json php-intl php-xml php-gd php-mysql php-imagick php-mbstring php-zip wget unzip nano

出现提示时,输入 y 继续安装。如果被要求接受 GPG 密钥,同样输入 y。

在 AlmaLinux 9 上安装 Joomla CMS

在 AlmaLinux 9 上安装 Joomla CMS

安装完成后,使用以下命令启动并启用 httpd 服务。

sudo systemctl start httpd
sudo systemctl enable httpd

然后检查 httpd,确保服务正在运行。

sudo systemctl status httpd

下方可以看到 httpd 服务正在运行。

在 AlmaLinux 9 上安装 Joomla CMS

对于 mariadb 服务,执行以下命令启动并启用它。

sudo systemctl start mariadb
sudo systemctl enable mariadb

然后使用以下命令检查 mariadb 服务。你将看到 mariadb 正在运行。

sudo systemctl status mariadb

在 AlmaLinux 9 上安装 Joomla CMS

最后,执行以下命令,验证 PHP 版本以及已启用的扩展列表。

php -v
php -m

你将看到 PHP 8.2 已安装,如下所示:

在 AlmaLinux 9 上安装 Joomla CMS

配置 PHP

现在你已经在 AlmaLinux 服务器上安装了 LAMP 技术栈,下一步是为 Joomla 配置 PHP 安装。你将修改默认的 PHP 配置文件 php.ini,并做相应更改。

执行以下 nano 命令,打开默认的 PHP 配置文件 /etc/php.ini 。

sudo nano /etc/php.ini

将默认配置修改为以下内容,并务必根据你的可用内存/RAM 调整 memory_limit 选项。

memory_limit=512M
upload_max_filesize=64M
post_max_size=64M
max_execution_time=60
output_buffering = Off

修改完成后保存文件并退出编辑器。

现在使用以下命令重启 httpd 服务,使修改生效。

sudo systemctl restart httpd

配置 MariaDB 服务器

配置完 PHP 后,你将通过 mariadb-secure-installation 工具加固 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 服务器配置完成后,你需要为 Joomla 创建一个新的数据库和用户。

执行以下 mariadb 命令登录 MariaDB。出现登录提示时,输入你的 MariaDB root 密码。

sudo mariadb -u root -p

现在执行以下 MariaDB 查询,创建新数据库 joomladb、新用户 joomla(密码为 p4ssword),然后为 joomla 用户授予 joomladb 数据库的权限。

CREATE DATABASE joomladb;
CREATE USER joomla@localhost IDENTIFIED BY 'p4ssword';
GRANT ALL PRIVILEGES ON joomladb.* TO joomla@localhost;
FLUSH PRIVILEGES;

在 AlmaLinux 9 上安装 Joomla CMS

接下来,使用以下 MariaDB 查询验证 joomla 用户的权限列表。你将看到 joomla 用户拥有访问 joomladb 数据库的权限。

SHOW GRANTS FOR joomla@localhost;

在 AlmaLinux 9 上安装 Joomla CMS

最后,输入 quit 退出 MariaDB 服务器。

配置 Firewalld

默认情况下,AlmaLinux 服务器上 firewalld 处于运行状态。因此现在你需要为 firewalld 开放 HTTP 和 HTTPS 端口。

执行以下 firewall-cmd 命令,在 firewalld 上开放 HTTP 和 HTTPS 服务。然后重新加载 firewalld 使修改生效。

sudo firewall-cmd --add-service={http,https} --permanent
sudo firewall-cmd --reload

现在执行以下命令,查看 firewalld 上已启用的规则列表。

sudo firewall-cmd --list-all

你将看到 HTTP 和 HTTPS 服务都已添加到 firewalld。

在 AlmaLinux 9 上安装 Joomla CMS

下载 Joomla

现在 LAMP 技术栈已安装并配置完成,下一步是下载 Joomla 源代码,为 Joomla 设置文档根目录,并为 Joomla 源代码设置正确的属主。

切换到工作目录 /var/www,并使用以下 wget 命令下载 Joomla 源代码。请务必前往 Joomla 下载页面获取最新版本的链接。

cd /var/www/
wget https://downloads.joomla.org/cms/joomla5/5-0-2/Joomla_5-0-2-Stable-Full_Package.zip

下载完成后,执行以下 unzip 命令,将 Joomla 源代码解压到 joomla 目录。因此你的 Joomla 文档根目录将位于 /var/www/joomla 目录。

unzip Joomla_5-0-2-Stable-Full_Package.zip -d joomla

最后,执行以下 chmod 命令,将 /var/www/joomla 目录的属主改为 apache 用户和组。这样可以确保 httpd Web 服务器能够访问 Joomla 源代码。

sudo chown -R apache:apache /var/www/joomla

配置 Httpd 虚拟主机

下载好 Joomla 源代码后,下一阶段你将为 Joomla 创建一个新的 httpd 虚拟主机文件。因此继续之前,请确保已为 Joomla 安装准备好域名。

使用以下 nano 编辑器命令,创建新的虚拟主机配置文件 /etc/httpd/conf.d/joomla.conf 。

sudo nano /etc/httpd/conf.d/joomla.conf

插入以下配置,并务必将域名替换为你的 Joomla 域名。同时,请务必修改 Joomla 的访问日志和错误日志路径。

<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 /var/log/httpd/howtoforge.local_error.log
CustomLog /var/log/httpd/howtoforge.local_access.log combined
</VirtualHost>

完成后,保存文件并退出编辑器。

现在执行以下 apachectl 命令,验证你的 httpd 配置。如果语法正确,你应当看到 Syntax OK 的输出。

sudo apachectl configtest

最后,使用以下命令重启 httpd 服务,使虚拟主机配置生效。

sudo systemctl restart httpd

在 AlmaLinux 9 上安装 Joomla CMS

使用 Certbot 和 Let's Encrypt 加固安全

至此,所有配置均已就绪,可以开始安装 Joomla 了。但在此之前,你将使用 Let's Encrypt 提供的 SSL/TLS 证书来加固 Joomla 的安全。如果你为 Joomla 安装准备了域名,请按照本节操作;如果没有,可以跳过本节。

首先,使用以下命令安装 Certbot 及 Certbot Apache 插件。

sudo dnf install certbot python3-certbot-apache -y

现在执行以下 certbot 命令,为你的 Joomla 安装生成 SSL/TLS 证书。请务必将域名和邮箱地址替换为你的信息。

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

流程完成后,你的 SSL/TLS 证书将位于 /etc/letsencrypt/live/domain.com 目录。同时,你的 Joomla 安装会自动配置为使用 HTTPS。

安装 Joomla

打开你的网页浏览器,访问 Joomla 安装的域名,例如 http://howtoforge.local/。如果安装成功,你将看到 Joomla 安装页面。

将默认语言选择为英文,并输入你的站点名称。然后点击 Setup Login Data 继续。

在 AlmaLinux 9 上安装 Joomla CMS

现在输入 Joomla 的邮箱地址、用户名和密码,点击 Setup Database Connection 。

在 AlmaLinux 9 上安装 Joomla CMS

输入你的 MariaDB 数据库凭据信息,点击 Install Joomla 继续安装。

在 AlmaLinux 9 上安装 Joomla CMS

在 Joomla 安装过程中,你将看到如下界面:

在 AlmaLinux 9 上安装 Joomla CMS

Joomla 安装完成后,你将收到一条消息『Congratulations! Your Joomla site is ready』(恭喜!你的 Joomla 站点已就绪)。

在 AlmaLinux 9 上安装 Joomla CMS

在此页面,你可以点击以下两个链接:

  • Open Site:访问 Joomla 站点首页。
  • Open Administrator:打开 Joomla 后台登录页面,地址为 http://howtoforge.local/administrator。

下方为 Joomla 的默认首页。

在 AlmaLinux 9 上安装 Joomla CMS

下方为 Joomla 管理员登录页面。输入用户名和密码,然后点击 Login 。

在 AlmaLinux 9 上安装 Joomla CMS

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

在 AlmaLinux 9 上安装 Joomla CMS

至此,你在 AlmaLinux 9 服务器上安装 Joomla 的工作已全部完成。

总结

恭喜!你已在 AlmaLinux 9 服务器上完成了 Joomla 开源内容管理系统的安装。你使用 LAMP 技术栈(Apache/Httpd、MariaDB 和 PHP)安装了 Joomla,使用 Let's Encrypt 提供的 SSL/TLS 证书加固了 Joomla 的安全,并配置了 firewalld 以开放 HTTP 和 HTTPS 端口。