努力
加油

如何在Alibaba Cloud Linux 3上配置LAMP环境?

在 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

按照提示操作:

  1. 输入当前 root 密码(直接回车,默认为空)。
  2. 设置 root 密码?选 Y。
  3. 移除匿名用户?选 Y。
  4. 禁止远程 root 登录?选 Y(生产环境强烈建议)。
  5. 移除 test 数据库?选 Y。
  6. 立即重新加载权限表?选 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 的核心步骤就是:

  1. dnf install httpd → 启动 Apache
  2. dnf install mariadb-server → 初始化并加固 MariaDB
  3. dnf install php php-mysqlnd ... → 安装 PHP 及必要扩展
  4. 重启所有服务,配置防火墙

这套流程在国内主流云厂商的 ECS 实例上通用性极强。如果遇到具体报错,通常是端口占用、SELinux 权限或 PHP 扩展缺失导致的,按需排查即可。