在 Alibaba Cloud Linux 3 (ACL3) 上搭建 LAMP(Linux, Apache, MySQL/MariaDB, PHP)环境,和传统的 CentOS 7 或 Ubuntu 有些许不同。最大的变化在于包管理器和默认的软件源版本。
ACL3 基于 Red Hat Enterprise Linux 8 (RHEL 8),所以它使用的是 dnf 而不是 yum,并且默认源里的软件版本通常较新。对于新手来说,直接拉取官方仓库是最稳妥、最省心的方式,不需要折腾第三方源,也能保证系统安全性。
下面是一份经过实战验证的“极简主义”搭建指南,去掉了那些花里胡哨的配置,只保留核心步骤。
第一步:准备工作
- 登录服务器:通过 SSH 连接到你的 ECS 实例。
- 更新系统:确保基础组件是最新的。
sudo dnf update -y - 安装 EPEL 源(可选但推荐):虽然 ACL3 自带很多包,但装个 EPEL 能解决后续可能遇到的依赖缺失问题。
sudo dnf install epel-release -y
第二步:安装 Apache (httpd)
在 RHEL 8/ACL3 体系中,Apache 的服务名依然是 httpd。
-
安装:
sudo dnf install httpd -y -
启动并设置开机自启:
sudo systemctl start httpd sudo systemctl enable httpd -
检查状态:
sudo systemctl status httpd如果看到绿色的
active (running),说明 Web 服务已就绪。 -
放行端口:
这是新手最容易踩坑的地方。阿里云 ECS 有安全组,服务器内部也有防火墙。你需要做两件事:- 阿里云控制台:在 ECS 实例的“安全组”规则中,添加入方向规则,协议选 TCP,端口范围填
80,授权对象0.0.0.0/0。 - 服务器内部防火墙:
sudo firewall-cmd --permanent --add-service=http sudo firewall-cmd --reload此时,你可以尝试在浏览器访问你的公网 IP,应该能看到 Apache 的欢迎页面。
- 阿里云控制台:在 ECS 实例的“安全组”规则中,添加入方向规则,协议选 TCP,端口范围填
第三步:安装 MariaDB (MySQL 分支)
在 RHEL 8 系列中,默认的数据库不再是 MySQL 5.7,而是 MariaDB 10.3+。MariaDB 与 MySQL 高度兼容,对于大多数 LAMP 项目(如 WordPress、Discuz 等)完全够用,且性能更好。
-
安装:
sudo dnf install mariadb-server mariadb -y -
启动并设置开机自启:
sudo systemctl start mariadb sudo systemctl enable mariadb -
初始化安全配置:
执行这个脚本,它会引导你设置 root 密码、移除匿名用户、禁止远程 root 登录等。新手建议一路回车确认,但在设置密码时务必记住。sudo mysql_secure_installation
第四步:安装 PHP
这里有个关键点:不要只装 php。你需要安装 php-mysqlnd(连接数据库的驱动)和 php-cli(命令行工具),否则网站连不上数据库,或者某些命令无法执行。
-
安装 PHP 及相关模块:
ACL3 默认源里通常是 PHP 8.0 或 8.1(取决于具体小版本)。如果你需要特定版本(比如为了兼容老代码需要 PHP 7.4),则需要添加 Remi 源,但为了简单起见,我们先用默认源。sudo dnf install php php-mysqlnd php-fpm php-json php-common php-mbstring php-xml php-gd php-zip -y注:
php-fpm是 FastCGI Process Manager,Apache 处理 PHP 请求时通常需要它配合工作,或者直接使用 mod_php。但在现代部署中,启用 FPM 并通过 Apache 的 proxy_fcgi 模块调用是更主流的做法。不过,为了“快速”和“简单”,我们可以先测试最简单的模式。简化方案(直接加载模块):
如果你不想配置复杂的 FPM,可以直接让 Apache 加载 PHP 模块。上述安装的包已经包含了必要的模块。重启 Apache 即可生效。 -
重启 Apache 以加载 PHP 支持:
sudo systemctl restart httpd
第五步:验证环境
-
创建测试文件:
进入 Apache 的默认网页目录/var/www/html/。cd /var/www/html/ sudo vi info.php按
i进入编辑模式,输入以下内容:<?php phpinfo(); ?>按
Esc,输入:wq保存退出。 -
浏览器访问:
打开浏览器,访问http://你的公网IP/info.php。- 如果看到了满屏的 PHP 信息表格,说明 PHP 工作正常。
- 滚动到底部,查看 "mysqlnd" 部分,如果有显示,说明数据库扩展也加载成功了。
-
测试数据库连接(可选但推荐):
创建一个简单的测试页db_test.php:<?php $link = mysqli_connect("localhost", "root", "你的数据库root密码"); if ($link) { echo "数据库连接成功!"; } else { echo "数据库连接失败:" . mysqli_error($link); } ?>访问该页面,如果显示“数据库连接成功”,恭喜,LAMP 环境彻底打通。
第六步:清理与安全加固(重要)
-
删除测试文件:
生产环境中千万不要留info.php,这会泄露大量服务器信息。sudo rm /var/www/html/info.php /var/www/html/db_test.php -
调整文件权限:
确保网站目录权限正确。通常建议将网站根目录的所有者改为apache(ACL3 中 Apache 用户名为 apache)。sudo chown -R apache:apache /var/www/html sudo chmod -R 755 /var/www/html
常见问题排查
-
访问 403 Forbidden:
通常是 SELinux 或防火墙问题。- 临时关闭 SELinux 测试:
sudo setenforce 0。如果恢复正常,说明是 SELinux 策略问题。建议不要长期关闭 SELinux,而是使用semanage fcontext来修复上下文标签,或者安装policycoreutils-python-utils并使用restorecon -rv /var/www/html。 - 检查防火墙是否真的放行了 80 端口。
- 临时关闭 SELinux 测试:
-
PHP 不解析,直接下载文件:
说明 Apache 没有加载 PHP 模块。检查sudo dnf list installed | grep php,确保安装了php主包。如果是通过 FPM 方式运行,需要修改 Apache 配置文件加载proxy_fcgi模块。 -
为什么不用 MySQL 而用 MariaDB?
因为阿里云官方镜像默认集成的是 MariaDB,稳定性好,社区活跃,且完全开源。除非你有特定的 MySQL 专有功能需求,否则 MariaDB 是最佳选择。
总结
在 Alibaba Cloud Linux 3 上搭建 LAMP,核心逻辑就是:
- 用
dnf装httpd。 - 用
dnf装mariadb-server。 - 用
dnf装php及其扩展。 - 记得开安全组和防火墙端口。
- 重启服务。
这套流程避开了编译安装的繁琐,利用了云原生操作系统的优化特性,适合绝大多数中小型网站和开发测试环境。
云技术博客