Red Hat 9 下配置 Apache 和 PHP 环境的完整指南
在企业级应用部署中,Red Hat Enterprise Linux(RHEL)一直是最受欢迎的服务器操作系统之一。今天,我们来详细介绍如何在 RHEL 9 上搭建 Apache + PHP 环境。
前期准备
在开始之前,请确保:
- 已经安装好 Red Hat 9 系统
- 有 root 权限或 sudo 权限
- 服务器能够连接外网
- 系统已激活并注册
★CentOS也可以1. 系统更新
首先,让我们更新系统到最新状态:
dnf update -y
这一步能确保我们的系统处于最新状态,避免潜在的兼容性问题。
2. 安装必要的仓库
要安装最新版本的 PHP,我们需要添加额外的软件源:
# 安装 EPEL 仓库
dnf install epel-release -y
# 安装 Remi 仓库
dnf install https://rpms.remirepo.net/enterprise/remi-release-9.rpm -y
EPEL 和 Remi 仓库提供了许多官方仓库没有的软件包,特别是各种版本的 PHP。
3. 安装 Apache(httpd)
接下来安装 Apache 服务器:
dnf install httpd -y
4. 配置 PHP 环境
4.1 查看可用的 PHP 版本
dnf module list php
4.2 重置 PHP 模块(避免冲突)
dnf module reset php -y
4.3 启用 PHP 7.4
dnf module enable php:remi-7.4 -y
4.4 安装 PHP 及其扩展
dnf install php php-cli php-fpm php-mysqlnd php-zip php-devel php-gd \
php-mcrypt php-mbstring php-curl php-xml php-pear php-bcmath php-json -y
这些扩展包含了最常用的功能:
php-mysqlnd
: MySQL 支持php-zip
: ZIP 压缩支持php-gd
: 图像处理php-mbstring
: 多字节字符串支持php-curl
: CURL 支持- 等等…
5. 启动服务
5.1 启动并设置 Apache 自动启动
systemctl start httpd
systemctl enable httpd
5.2 启动并设置 PHP-FPM 自动启动
systemctl start php-fpm
systemctl enable php-fpm
6. 验证安装
创建一个测试文件来验证环境:
echo "" > /var/www/html/info.php
访问 http://你的服务器IP/info.php
来查看 PHP 信息页面。
7. 安全建议
- 完成测试后删除 info.php 文件:
rm /var/www/html/info.php
- 配置防火墙(如果需要):
firewall-cmd --permanent --add-service=http
firewall-cmd --reload
8. 常见问题解决
- 如果 Apache 无法启动,检查错误日志:
journalctl -u httpd
- 如果 PHP 页面无法解析,确认 PHP 模块已加载:
httpd -M | grep php
9. 处理 PHP 模块加载问题
有时候通过包管理器安装的 PHP 可能不会自动配置 Apache 的 PHP 模块。正常情况下,安装完成后应该能在 Apache 的模块目录(通常是 /etc/httpd/modules/
或 /usr/lib64/httpd/modules/
)下找到 libphp7.so
文件。
检查 PHP 模块是否存在
ls /usr/lib64/httpd/modules/libphp*.so
检查模块是否已加载
httpd -M | grep php
方案一:添加模块配置
如果 libphp7.so
文件存在但未加载,创建配置文件:
echo "LoadModule php_module modules/libphp7.so" > /etc/httpd/conf.modules.d/10-php.conf
别忘了在 /etc/httpd/conf/httpd.conf
中添加 PHP 文件处理器:
# 添加以下内容
SetHandler application/x-httpd-php
方案二:编译安装 PHP
如果 libphp7.so
文件确实缺失,则需要通过源代码编译安装:
# 安装编译所需依赖
dnf groupinstall "Development Tools" -y
dnf install httpd-devel autoconf automake libtool -y
# 下载 PHP 源码(以 7.4 为例)
wget https://www.php.net/distributions/php-7.4.33.tar.gz
tar xzf php-7.4.33.tar.gz
cd php-7.4.33
# 配置编译选项
./configure --with-apxs2=/usr/bin/apxs \
--with-zlib \
--enable-bcmath \
--with-curl \
--enable-gd \
--with-mysqli=mysqlnd \
--with-pdo-mysql=mysqlnd \
--enable-mbstring \
--with-xml
# 编译和安装
make
make install
# 复制配置文件
cp php.ini-production /etc/php.ini
编译安装后应该能在bin的文件目录下找到模块
复制模块到/etc/httpd/modules/即可
完成后重启 Apache:
systemctl restart httpd
再次检查模块是否加载:
httpd -M | grep php
注意事项:
- 编译安装耗时较长,请耐心等待
- 如果编译失败,请检查是否缺少其他依赖包*缺啥就装啥
- 编译安装后,建议保存编译参数,以便将来升级时使用
- 通过包管理器安装的 PHP 模块可能需要重新安装
记住:在生产环境中,优先使用包管理器安装,只有在特殊情况下才考虑编译安装。编译安装虽然灵活,但后期维护和升级都需要额外的工作,非常麻烦。
总结
至此,我们已经在 RHEL 9 上成功搭建了 Apache + PHP 环境。这个环境适合运行大多数 PHP 应用,如 WordPress、Laravel 等框架开发的项目。
记住要定期更新系统和软件包,以保持环境的安全性:
dnf update -y
如果在安装过程中遇到问题,欢迎在评论区留言交流!