在 Alibaba Cloud Linux 3 上搭建 LAMP(Linux + Apache + MySQL/MariaDB + PHP)环境,核心逻辑和 CentOS/RHEL 8+ 体系是一致的。因为 Alibaba Cloud Linux 3 基于社区版 RHEL/CentOS 8 构建,所以大部分命令和配置逻辑可以直接复用。
下面我按最稳妥、最通用的方式,一步步带你把环境跑起来。这里我们选用 Apache、MariaDB(MySQL 的开源分支,兼容性更好且默认源支持好)和 PHP 7.4/8.0+。
1. 前置准备:系统更新与安全组
登录到你的 ECS 实例后,先执行系统更新,确保内核和基础包是最新的。
sudo dnf update -y
重要提醒: 在开始之前,请确认阿里云控制台的安全组规则已经放行了以下端口:
80(HTTP)443(HTTPS)3306(MySQL/MariaDB,建议仅对特定 IP 开放,不要对 0.0.0.0/0 开放)
2. 安装 Apache Web Server
Alibaba Cloud Linux 3 的 AppStream 仓库中包含了稳定的 Apache 版本。
sudo dnf install httpd -y
安装完成后,启动服务并设置开机自启:
sudo systemctl start httpd
sudo systemctl enable httpd
验证 Apache 是否运行正常:
systemctl status httpd
如果状态是 active (running),你可以访问 http://<你的公网IP> 看到 Apache 的欢迎页面。
注意: 如果你需要修改默认的 Web 根目录或监听端口,配置文件位于
/etc/httpd/conf/httpd.conf。
3. 安装 MariaDB (作为 MySQL 替代)
在 RHEL/CentOS 系列中,直接使用 mysql-server 包可能会遇到依赖问题或版本过旧的问题。推荐使用 mariadb-server,它完全兼容 MySQL 客户端协议。
sudo dnf install mariadb-server -y
启动并设置开机自启:
sudo systemctl start mariadb
sudo systemctl enable mariadb
安全加固(必做)
默认安装的 MariaDB 安全性较低,运行以下脚本进行交互式安全配置:
sudo mysql_secure_installation
按照提示操作:
- 输入当前 root 密码(直接回车,默认为空)。
- 设置 root 密码?选
Y。 - 移除匿名用户?选
Y。 - 禁止远程 root 登录?选
Y(生产环境强烈建议)。 - 移除 test 数据库?选
Y。 - 立即重新加载权限表?选
Y。
4. 安装 PHP
这是最关键的一步。Alibaba Cloud Linux 3 默认可能提供较新的 PHP 版本(如 8.0 或更高),但为了兼容性,我们通常使用 remi 源或者直接使用系统默认源。
方案 A:使用系统默认源(推荐,简单稳定)
sudo dnf install php php-mysqlnd php-gd php-json php-mbstring php-xml php-zip -y
这里的 php-mysqlnd 是 PHP 连接 MySQL/MariaDB 的必要驱动。其他扩展根据实际需求添加(比如 WordPress 通常需要 GD、JSON、MBString 等)。
方案 B:如果需要特定版本(如 PHP 8.1/8.2)
如果默认源版本不满足需求,可以启用 Remi 仓库(需先安装 EPEL 和 Remi 源):
sudo dnf install epel-release -y
sudo dnf install https://rpms.remirepo.net/enterprise/remi-release-8.rpm -y
sudo dnf module list php
# 查看可用模块,例如安装 php81
sudo dnf module install php:remi-8.1 -y
注:对于大多数国内用户,方案 A 足够覆盖 90% 的场景。
安装完成后,重启 Apache 以加载 PHP 模块:
sudo systemctl restart httpd
测试 PHP
创建一个测试文件:
echo "<?php phpinfo(); ?>" | sudo tee /var/www/html/info.php
浏览器访问 http://<你的公网IP>/info.php。如果能看到 PHP 信息页面,说明 LAMP 环境配置成功。
安全警告: 测试完成后,务必删除该文件,防止泄露服务器信息:
sudo rm /var/www/html/info.php
5. 防火墙配置
确保 firewalld 允许 HTTP 和 HTTPS 流量通过:
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --reload
6. 常见问题与优化建议
Q1: 为什么上传大文件失败?
检查 /etc/php.ini 中的以下参数,根据需求调整:
upload_max_filesize = 20M
post_max_size = 20M
max_execution_time = 300
修改后重启 Apache:sudo systemctl restart httpd
Q2: 如何设置虚拟主机(Virtual Host)?
默认网站根目录是 /var/www/html。如果你想部署多个站点,建议在 /etc/httpd/conf.d/ 下创建独立的 .conf 文件。
例如,创建 /etc/httpd/conf.d/example.com.conf:
<VirtualHost *:80>
ServerName www.example.com
DocumentRoot /var/www/example.com/public_html
<Directory /var/www/example.com/public_html>
AllowOverride All
Require all granted
</Directory>
ErrorLog /var/log/httpd/example.com-error.log
CustomLog /var/log/httpd/example.com-access.log combined
</VirtualHost>
然后在 /var/www/ 下创建对应目录结构,并确保 SELinux 上下文正确(见下文)。
Q3: SELinux 导致权限问题?
Alibaba Cloud Linux 3 默认开启 SELinux。如果你自定义了 Web 目录,可能需要设置上下文:
sudo semanage fcontext -a -t httpd_sys_content_t "/var/www/example.com(/.*)?"
sudo restorecon -Rv /var/www/example.com
如果不想折腾 SELinux,且处于开发测试环境,可以临时关闭(不推荐生产环境):
sudo setenforce 0
总结
在 Alibaba Cloud Linux 3 上配置 LAMP 的核心步骤就是:
dnf install httpd→ 启动 Apachednf install mariadb-server→ 初始化并加固 MariaDBdnf install php php-mysqlnd ...→ 安装 PHP 及必要扩展- 重启所有服务,配置防火墙
这套流程在国内主流云厂商的 ECS 实例上通用性极强。如果遇到具体报错,通常是端口占用、SELinux 权限或 PHP 扩展缺失导致的,按需排查即可。
云技术博客