在 Alibaba Cloud Linux 3.2104 LTS(基于 RHEL/CentOS 8 体系)上安装 LAMP(Linux, Apache, MariaDB/MySQL, PHP)堆栈,推荐使用系统自带的 AppStream 仓库进行安装,以确保兼容性和安全性。
以下是完整、分步的安装指南:
✅ 一、前置准备
# 更新系统包
sudo dnf update -y
# 确保 EPEL 源已启用(可选,用于额外软件如 phpmyadmin)
sudo dnf install epel-release -y
✅ 二、安装 Apache HTTP Server
sudo dnf install httpd -y
# 启动 Apache 并设置开机自启
sudo systemctl start httpd
sudo systemctl enable httpd
# 检查状态
sudo systemctl status httpd
🔍 验证 Apache 是否运行:浏览器访问
http://<你的服务器IP>,应看到 Apache 测试页。
✅ 三、安装 MariaDB(MySQL 兼容数据库)
Alibaba Cloud Linux 3 默认使用 MariaDB 作为 MySQL 替代品:
sudo dnf install mariadb-server mariadb -y
# 启动并启用 MariaDB
sudo systemctl start mariadb
sudo systemctl enable mariadb
# 初始化数据库安全配置(交互式)
sudo mysql_secure_installation
mysql_secure_installation 建议选项:
- 设置 root 密码:✅ 是
- 删除匿名用户:✅ 是
- 禁止远程 root 登录:✅ 是
- 删除测试数据库:✅ 是
- 重新加载权限表:✅ 是
✅ 四、安装 PHP 及常用扩展
Alibaba Cloud Linux 3 默认提供 PHP 8.0 或 PHP 8.1(取决于具体小版本)。我们安装 PHP 8.0 及常用模块:
sudo dnf install php php-mysqlnd php-fpm php-json php-common php-mbstring php-xml php-gd php-curl php-zip -y
验证 PHP 安装:
php -v
输出示例:
PHP 8.0.x (cli) (built: ...)
Copyright (c) ...
✅ 五、配置 Apache 支持 PHP
确保 Apache 能解析 .php 文件:
# 编辑 Apache 配置文件
sudo vi /etc/httpd/conf.d/php.conf
确认以下内容存在(通常已自动配置):
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
⚠️ 如果
/etc/httpd/conf.modules.d/00-base.conf中未加载 PHP 模块,请检查是否有如下行:LoadModule php_module modules/libphp.so
重启 Apache 使配置生效:
sudo systemctl restart httpd
✅ 六、测试 LAMP 环境
创建测试文件:
sudo bash -c 'echo "<?php phpinfo(); ?>" > /var/www/html/info.php'
浏览器访问:http://<你的服务器IP>/info.php
✅ 如果显示 PHP 信息页面,说明 LAMP 安装成功!
✅ 七、防火墙与安全组配置(阿里云 ECS 必看)
1. 开放端口(firewalld)
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --reload
2. 阿里云安全组
在 ECS 控制台 → 实例详情 → 安全组 → 添加入方向规则:
| 协议 | 端口范围 | 授权对象 | 描述 |
|---|---|---|---|
| TCP | 80 | 0.0.0.0/0 | HTTP |
| TCP | 443 | 0.0.0.0/0 | HTTPS |
| TCP | 3306 | 仅内网IP | MySQL(不建议公网开放) |
🔒 严禁将 MySQL 端口 3306 对公网开放!
✅ 八、可选:安装 phpMyAdmin(管理数据库)
# 安装依赖
sudo dnf install php-mbstring php-xml php-zip -y
# 下载 phpMyAdmin
cd /tmp
wget https://files.phpmyadmin.net/phpMyAdmin/5.2.1/phpMyAdmin-5.2.1-all-languages.tar.gz
tar xzf phpMyAdmin-5.2.1-all-languages.tar.gz
sudo mv phpMyAdmin-5.2.1-all-languages /usr/share/phpmyadmin
# 创建符号链接
sudo ln -s /usr/share/phpmyadmin /var/www/html/phpmyadmin
# 修改权限
sudo chown -R apache:apache /usr/share/phpmyadmin
sudo chmod -R 755 /usr/share/phpmyadmin
# 生成 blowfish_secret
sudo cp /usr/share/phpmyadmin/config.sample.inc.php /usr/share/phpmyadmin/config.inc.php
sudo sed -i "s/$cfg['blowfish_secret'] = '';/$cfg['blowfish_secret'] = '$(openssl rand -base64 32)';/" /usr/share/phpmyadmin/config.inc.php
# 重启 Apache
sudo systemctl restart httpd
访问:http://<你的服务器IP>/phpmyadmin
✅ 九、常见问题排查
| 问题 | 解决方案 |
|---|---|
| Apache 无法启动 | 检查端口占用:sudo lsof -i :80;查看日志:sudo journalctl -u httpd |
| PHP 不生效 | 确认 libphp.so 模块已加载;重启 Apache |
| MariaDB 连接失败 | 检查服务状态:systemctl status mariadb;检查防火墙 |
| 权限错误 | 确保 /var/www/html 所有者为 apache:apache |
✅ 十、最佳实践建议
- 禁用目录浏览:在 Apache 配置中添加
Options -Indexes - 隐藏 PHP 版本信息:在
php.ini中设置expose_php = Off - 使用 SELinux:保持启用,如需自定义策略请使用
semanage而非关闭 SELinux - 定期更新:
sudo dnf update -y每月执行一次 - 备份数据库:使用
mysqldump定期备份
📌 总结命令速查
# 一键安装 LAMP(部分需交互)
sudo dnf install httpd mariadb-server mariadb php php-mysqlnd php-fpm php-json php-mbstring php-xml php-gd php-curl php-zip -y
# 启动所有服务
sudo systemctl enable --now httpd mariadb
# 开放防火墙端口
sudo firewall-cmd --permanent --add-service={http,https} && sudo firewall-cmd --reload
如有特定需求(如使用 MySQL 而非 MariaDB、PHP 8.2、HTTPS 证书等),可进一步定制。欢迎继续提问!
PHPWP博客