Alibaba Cloud Linux 3.2104 LTS 安装lnmp?

在 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 配置成功!


🔒 第七步:安全建议(生产环境必做)

  1. 删除 info.php

    sudo rm /usr/share/nginx/html/info.php
  2. 配置防火墙仅开放必要端口

    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
  3. 禁用不必要的服务

    sudo systemctl disable --now postfix
    sudo systemctl disable --now cups
  4. 定期更新系统

    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 化部署,也可进一步提供。