在 Alibaba Cloud Linux 3.2104 LTS(基于 RHEL/CentOS 8 体系)上安装 LNMP(Linux + Nginx + MySQL/MariaDB + PHP),推荐使用 官方 YUM/DNF 源 或 编译安装。以下是使用 DNF/YUM 包管理器 的标准化、生产环境友好型安装指南。
✅ 前提条件
- 系统:Alibaba Cloud Linux 3.2104 LTS(内核 5.10+,基于 CentOS/RHEL 8)
- 权限:root 或具有 sudo 权限的用户
- 网络:可访问互联网以安装软件包
- 防火墙已开放必要端口(80, 443, 3306/6379 等)
# 检查系统版本
cat /etc/os-release
📦 第一步:更新系统并安装基础工具
sudo dnf update -y
sudo dnf install -y epel-release
sudo dnf install -y vim wget curl git net-tools firewalld
🌐 第二步:安装 Nginx
Alibaba Cloud Linux 3 默认仓库包含 Nginx,但版本可能较旧。建议使用官方 Nginx 源获取最新版本。
方法一:使用 EPEL 源中的 Nginx(推荐简单部署)
sudo dnf install -y nginx
sudo systemctl enable nginx
sudo systemctl start nginx
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --reload
方法二:使用 Nginx 官方源(获取最新版)
# 创建 repo 文件
sudo tee /etc/yum.repos.d/nginx.repo <<EOF
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true
EOF
# 导入 GPG key
sudo rpm --import https://nginx.org/keys/nginx_signing.key
# 安装
sudo dnf install -y nginx
sudo systemctl enable nginx
sudo systemctl start nginx
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --reload
✅ 验证 Nginx:浏览器访问
http://<your-server-ip>,应显示 "Welcome to nginx!"
🗄️ 第三步:安装 MariaDB(MySQL 兼容替代品)
Alibaba Cloud Linux 3 默认提供 MariaDB 作为 MySQL 替代方案。
sudo dnf install -y mariadb-server mariadb
sudo systemctl enable mariadb
sudo systemctl start mariadb
安全加固
sudo mysql_secure_installation
按提示设置 root 密码、删除匿名用户、禁止远程 root 登录等。
✅ 验证 MariaDB:
mysql -u root -p # 输入密码后进入 SQL 提示符 exit;
🐘 第四步:安装 PHP 及常用扩展
Alibaba Cloud Linux 3 默认 PHP 版本为 8.0 或 8.1。如需特定版本,可使用 Remi 源或源码编译。
方法一:使用默认 DNF 源安装 PHP 8.0/8.1
# 查看可用 PHP 模块
dnf module list php
# 启用 PHP 8.1 模块(示例)
sudo dnf module install php:remi-8.1 -y
# 安装常用扩展
sudo dnf install -y php-fpm php-mysqlnd php-pdo php-gd php-mbstring php-json php-zip php-opcache php-xml php-curl php-intl
# 启动 PHP-FPM
sudo systemctl enable php-fpm
sudo systemctl start php-fpm
⚠️ 注意:
php-fpm是 FastCGI Process Manager,Nginx 通过它运行 PHP。
方法二:使用 Remi 源安装更高版本 PHP(如 8.2/8.3)
# 安装 Remi 源
sudo dnf install -y https://rpms.remirepo.net/enterprise/remi-release-8.rpm
sudo dnf config-manager --set-enabled remi-php82 # 或 remi-php83
# 安装 PHP
sudo dnf install -y php php-fpm php-mysqlnd php-gd php-mbstring php-json php-zip php-opcache php-xml php-curl php-intl
sudo systemctl enable php-fpm
sudo systemctl start php-fpm
🔗 第五步:配置 Nginx 与 PHP-FPM 协同工作
编辑 Nginx 默认站点配置:
sudo vim /etc/nginx/conf.d/default.conf
替换为以下内容(简化版):
server {
listen 80;
server_name _;
root /usr/share/nginx/html;
index index.php index.html index.htm;
location / {
try_files $uri $uri/ =404;
}
location ~ .php$ {
fastcgi_pass unix:/run/php-fpm/www.sock; # 确保 socket 路径正确
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
location ~ /.ht {
deny all;
}
}
✅ 检查 socket 路径:
ls -l /run/php-fpm/www.sock # 或查看 php-fpm 配置:grep "listen" /etc/php-fpm.d/www.conf
测试并重启 Nginx:
sudo nginx -t
sudo systemctl restart nginx
🧪 第六步:测试 PHP 是否正常工作
创建测试文件:
echo "<?php phpinfo(); ?>" | sudo tee /usr/share/nginx/html/info.php
浏览器访问:http://<your-server-ip>/info.php
✅ 如果看到 PHP 信息页面,说明 LNMP 配置成功!
🔒 第七步:安全建议(生产环境必做)
-
删除 info.php
sudo rm /usr/share/nginx/html/info.php -
配置防火墙仅开放必要端口
sudo firewall-cmd --permanent --remove-service=http sudo firewall-cmd --permanent --remove-service=https # 只开放 SSH (22), HTTP (80), HTTPS (443) sudo firewall-cmd --permanent --add-port=22/tcp sudo firewall-cmd --permanent --add-port=80/tcp sudo firewall-cmd --permanent --add-port=443/tcp sudo firewall-cmd --reload -
禁用不必要的服务
sudo systemctl disable --now postfix sudo systemctl disable --now cups -
定期更新系统
sudo dnf update -y
📁 目录结构参考
| 组件 | 主要配置文件 | Web 根目录 |
|---|---|---|
| Nginx | /etc/nginx/nginx.conf |
/usr/share/nginx/html |
| PHP-FPM | /etc/php-fpm.d/www.conf |
同上 |
| MariaDB | /etc/my.cnf |
数据目录 /var/lib/mysql |
❓ 常见问题排查
Q1: Nginx 返回 403 Forbidden?
- 检查文件权限:
sudo chown -R nginx:nginx /usr/share/nginx/html - 检查 SELinux:
sudo setsebool -P httpd_can_network_connect 1(如果需要连接后端)
Q2: PHP 无法执行,显示源码?
- 确认
php-fpm正在运行 - 确认 Nginx 配置中
location ~ .php$块存在且正确 - 检查
fastcgi_pass指向正确的 socket 或 TCP 地址
Q3: MariaDB 连接失败?
- 检查服务状态:
systemctl status mariadb - 检查用户权限和主机限制
- 确认客户端能连接:
mysql -u root -p -h 127.0.0.1
✅ 总结
你已成功在 Alibaba Cloud Linux 3.2104 LTS 上搭建完整的 LNMP 环境:
- ✅ Nginx 作为 Web 服务器
- ✅ MariaDB 作为数据库
- ✅ PHP-FPM 处理动态请求
- ✅ 安全加固完成
后续可部署 WordPress、Laravel、ThinkPHP 等项目。
如需自动化脚本或 Docker 化部署,也可进一步提供。
PHPWP博客