在 Rocky Linux 上部署 LNMP 环境:从零到一的完整实践

举报
Chocola 发表于 2026/09/19 00:06:39 2026/09/19
【摘要】 LNMP(Linux + Nginx + MySQL/MariaDB + PHP)是最经典的 Web 服务架构之一,广泛用于个人博客、企业网站和各类 PHP 应用的部署。Rocky Linux 作为 CentOS 的替代品,继承了 RHEL 生态的稳定性,非常适合用作生产环境的服务器系统。本文将带你一步步在 Rocky Linux 9 上搭建一套完整的 LNMP 环境。 环境准备在开始之前,...

LNMP(Linux + Nginx + MySQL/MariaDB + PHP)是最经典的 Web 服务架构之一,广泛用于个人博客、企业网站和各类 PHP 应用的部署。Rocky Linux 作为 CentOS 的替代品,继承了 RHEL 生态的稳定性,非常适合用作生产环境的服务器系统。本文将带你一步步在 Rocky Linux 9 上搭建一套完整的 LNMP 环境。


环境准备

在开始之前,确保你有一台运行 Rocky Linux 9 的服务器,并拥有 root 权限或 sudo 权限。首先更新系统软件包,确保所有组件都是最新的:

sudo dnf update -y

如果你的服务器开启了防火墙和 SELinux,建议先做以下处理:

# 关闭防火墙(生产环境建议配置规则而非直接关闭)
sudo systemctl stop firewalld
sudo systemctl disable firewalld

# 关闭 SELinux
sudo setenforce 0
sudo sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config

安装 Nginx

Rocky Linux 默认仓库中的 Nginx 版本可能偏旧,推荐使用 Nginx 官方仓库来获取最新版本。首先创建 Nginx 的 YUM 源配置文件:

sudo vim /etc/yum.repos.d/nginx.repo

写入以下内容:

[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

然后安装 Nginx:

sudo dnf install -y nginx

启动 Nginx 并设置开机自启:

sudo systemctl enable --now nginx

验证安装是否成功:

nginx -v

在浏览器中访问服务器 IP,看到 “Welcome to nginx!” 页面即表示 Nginx 安装成功。


安装数据库

Rocky Linux 9 的 AppStream 仓库中默认提供了 MySQL 8.0 和 MariaDB,你可以根据需求选择其一。

方案一:安装 MySQL 8.0(推荐)

sudo dnf install -y mysql-server

启动并设置开机自启:

sudo systemctl enable --now mysqld

运行安全配置脚本,设置 root 密码、移除匿名用户、禁止 root 远程登录等:

sudo mysql_secure_installation

方案二:安装 MariaDB

如果你更倾向于使用 MariaDB,可以执行:

sudo dnf install -y mariadb-server mariadb
sudo systemctl enable --now mariadb
sudo mysql_secure_installation

验证数据库安装:

mysql --version

安装 PHP

Rocky Linux 默认仓库中的 PHP 版本较旧,推荐使用 Remi 仓库来安装较新的 PHP 版本(如 PHP 8.1 或 8.2)。

首先安装 EPEL 和 Remi 仓库:

sudo dnf install -y epel-release
sudo dnf install -y https://rpms.remirepo.net/enterprise/remi-release-9.rpm

重置 PHP 模块并启用 Remi 的 PHP 8.1 模块:

sudo dnf module reset php -y
sudo dnf module enable php:remi-8.1 -y

安装 PHP 及常用扩展:

sudo dnf install -y php-fpm php-mysqlnd php-gd php-cli php-curl \
    php-mbstring php-bcmath php-zip php-opcache php-xml php-json php-intl

启动 PHP-FPM 并设置开机自启:

sudo systemctl enable --now php-fpm

关键配置:修改 PHP-FPM 运行用户

默认情况下,PHP-FPM 以 apache 用户运行,但我们需要它配合 Nginx 工作,因此需要修改配置文件:

sudo vim /etc/php-fpm.d/www.conf

找到以下两行:

user = apache
group = apache

修改为:

user = nginx
group = nginx

同时确保 listen 指令使用的是 Unix Socket:

listen = /run/php-fpm/www.sock
listen.owner = nginx
listen.group = nginx

保存后重启 PHP-FPM:

sudo systemctl restart php-fpm

配置 Nginx 支持 PHP

接下来需要配置 Nginx,使其能够将 PHP 请求转发给 PHP-FPM 处理。创建或编辑 Nginx 的默认站点配置文件:

sudo vim /etc/nginx/conf.d/default.conf

写入以下配置:

server {
    listen       80;
    server_name  localhost;
    root         /usr/share/nginx/html;
    index        index.php index.html index.htm;

    location / {
        try_files $uri $uri/ =404;
    }

    location ~ \.php$ {
        include        fastcgi_params;
        fastcgi_pass   unix:/run/php-fpm/www.sock;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;
    }

    access_log /var/log/nginx/access.log;
    error_log  /var/log/nginx/error.log;
}

检查 Nginx 配置语法是否正确:

sudo nginx -t

确认无误后重启 Nginx:

sudo systemctl restart nginx

验证部署

创建一个 PHP 测试文件来验证整个 LNMP 环境是否正常工作:

sudo vim /usr/share/nginx/html/info.php

写入以下内容:

<?php
phpinfo();

在浏览器中访问 http://你的服务器IP/info.php,如果能看到 PHP 信息页面,说明 LNMP 环境已经部署成功!

安全提示: 测试完成后,记得删除 info.php 文件,避免泄露服务器敏感信息。

sudo rm /usr/share/nginx/html/info.php

常见问题排查

  • 502 Bad Gateway:通常是 PHP-FPM 未启动或 Socket 路径配置错误,检查 php-fpm 服务状态和 www.conf 中的 listen 路径。
  • PHP 文件被直接下载:Nginx 未正确配置 PHP 解析规则,检查 location ~ \.php$ 块是否正确。
  • 权限问题:确保网站目录的所有者为 nginx 用户:
    sudo chown -R nginx:nginx /usr/share/nginx/html
    sudo chmod -R 755 /usr/share/nginx/html
    

总结

通过以上步骤,你已经成功在 Rocky Linux 9 上部署了一套完整的 LNMP 环境。这套架构稳定、高效,足以支撑大多数 PHP 应用的运行需求。后续你还可以在此基础上配置 HTTPS(如使用 Let’s Encrypt)、安装 Redis 缓存、优化 Nginx 和 PHP 参数等,进一步提升服务器性能。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。