RockyLinux搭建LNMP

在 Rocky Linux 上手动编译 PHP 环境,核心是先把 Nginx 和 MySQL 装好,再用源码编译 PHP 并让 Nginx 通过 FastCGI 调用它。
本文按零基础可照做的顺序,覆盖依赖安装、编译参数、Nginx 与 PHP 联动、数据库初始化和效果验证,完成后你能得到一个可运行 PHP 页面的 LNMP 环境。

先装编译依赖和 Nginx、MySQL

Rocky Linux 默认软件源里没有 PHP 8 的完整开发包,手动编译前先把编译工具和 Nginx、MySQL 装好。

# 更新系统并安装编译依赖
sudo dnf update -y
sudo dnf groupinstall -y "Development Tools"
sudo dnf install -y wget vim epel-release
sudo dnf install -y nginx mariadb-server mariadb

# 安装 PHP 编译所需依赖
sudo dnf install -y libxml2-devel openssl-devel bzip2-devel \
  libcurl-devel libjpeg-turbo-devel libpng-devel freetype-devel \
  gmp-devel readline-devel libxslt-devel sqlite-devel oniguruma-devel

启动 Nginx 和 MariaDB,并设置开机自启:

sudo systemctl enable --now nginx
sudo systemctl enable --now mariadb

验证服务状态,看到 active (running) 即表示正常:

systemctl status nginx --no-pager
systemctl status mariadb --no-pager

注意
Rocky Linux 9 默认仓库中 PHP 相关依赖版本可能与旧版不同,
如果 dnf install 提示找不到某个包,
先执行 dnf search 包名 确认实际包名,
不要直接跳过。

下载 PHP 源码并配置编译参数

到 PHP 官方下载页获取稳定版源码包。
本文以 PHP 8.1 系列为例,实际版本号请以官网当前稳定版为准。

cd /usr/local/src
sudo wget https://www.php.net/distributions/php-8.1.27.tar.gz
sudo tar -zxvf php-8.1.27.tar.gz
cd php-8.1.27

配置编译参数。
这里把 PHP 安装到 /usr/local/php,并启用 FPM 和 MySQL 支持:

./configure --prefix=/usr/local/php \
  --with-config-file-path=/usr/local/php/etc \
  --enable-fpm --with-fpm-user=nginx --with-fpm-group=nginx \
  --with-mysqli --with-pdo-mysql --with-openssl \
  --with-curl --with-zlib --with-gd --with-jpeg \
  --with-freetype --enable-mbstring --enable-xml \
  --with-libxml --enable-sockets --enable-opcache

配置完成后编译并安装:

make -j$(nproc)
sudo make install

编译时间取决于服务器 CPU 核心数,
通常 10 到 30 分钟。make 报错时优先看第一条 error,
常见原因是缺少某个 -devel 包,
补装后重新执行 ./configuremake

配置 PHP-FPM 与 Nginx 联动

安装完成后复制配置文件和启动脚本:

sudo cp php.ini-production /usr/local/php/etc/php.ini
sudo cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf
sudo cp /usr/local/php/etc/php-fpm.d/www.conf.default /usr/local/php/etc/php-fpm.d/www.conf
sudo cp sapi/fpm/php-fpm.service /usr/lib/systemd/system/php-fpm.service

创建运行用户并启动 PHP-FPM:

sudo systemctl daemon-reload
sudo systemctl enable --now php-fpm
systemctl status php-fpm --no-pager

确认 PHP-FPM 监听端口,默认是 127.0.0.1:9000

ss -tlnp | grep 9000

修改 Nginx 站点配置,让 .php 请求交给 PHP-FPM 处理。
编辑 /etc/nginx/nginx.conf 或新建 /etc/nginx/conf.d/default.conf

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

    location ~ \.php$ {
        fastcgi_pass 127.0.0.1:9000;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }
}

检查配置并重载:

sudo nginx -t
sudo systemctl reload nginx

nginx -t 返回 syntax is oktest is successful 才算通过,否则按报错行号修改。

初始化数据库并验证运行结果

MariaDB 首次使用需要执行安全初始化:

sudo mysql_secure_installation

按提示设置 root 密码、移除匿名用户、禁止 root 远程登录。
然后登录数据库建一个测试库:

sudo mysql -u root -p
CREATE DATABASE testdb DEFAULT CHARACTER SET utf8mb4;
EXIT;

在网站根目录创建 PHP 测试文件:

sudo tee /usr/share/nginx/html/info.php <<'EOF'

浏览器访问 http:
//服务器IP/info.php

能看到 PHP 版本和模块信息页面,
说明 Nginx 已正确调用 PHP-FPM。验证完成后建议删除该文件
避免暴露环境信息:

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

再写一个连接数据库的测试脚本,确认 PHP 能连上 MariaDB:

sudo tee /usr/share/nginx/html/db.php <<'EOF'
connect_error) {
    die('连接失败: ' . $conn->connect_error);
}
echo '数据库连接成功';
EOF

访问该页面显示“数据库连接成功”,说明 LNMP 各组件已打通。

常见报错与避坑提醒

手动编译 PHP 环境最容易卡在依赖和权限上,下面几个问题出现频率较高。

  • configure: error: Package requirements ... were not met:说明缺少对应开发库,按提示补装 xxx-devel 后重新运行 ./configure
  • Nginx 访问 PHP 返回 502 Bad Gateway:多半是 PHP-FPM 没启动或端口不一致。用 ss -tlnp | grep 9000 确认监听,再检查 Nginx 里 fastcgi_pass 地址是否一致。
  • PHP-FPM 启动失败提示权限不足:确认 www.conf 中的 usergroup 与系统实际用户一致,Rocky Linux 上 Nginx 默认用户是 nginx
  • make 过程中内存不足被 kill:编译 PHP 比较吃内存,小内存机器可先加 swap,或去掉 -j$(nproc) 改用单线程 make
  • 修改 php.ini 后不生效:改完需要重启 PHP-FPM,执行 sudo systemctl restart php-fpm,而不是只重载 Nginx。

不要用 root 用户直接运行 PHP-FPMwww.conf 里保持 nginx 用户和组,这是基本安全底线。

几个新手常问的问题

如果只想快速上线,不追求特定 PHP 版本,用 dnf install php php-fpm php-mysqlnd 装仓库版本更省事;
手动编译适合需要指定版本、自定义扩展或学习编译流程的场景。

每次修改 php.iniwww.conf 或 Nginx 配置后,都要重启或重载对应服务,否则改动不会生效。
建议顺序是改 PHP 配置重启 php-fpm,改 Nginx 配置先 nginx -treload

LNMP 环境搭好后,
后续新增站点只需在 /etc/nginx/conf.d/ 下新建 .conf 文件,
root 指向新目录,
并确保该目录对 nginx 用户可读,
然后 nginx -t && systemctl reload nginx 即可。

整体流程可以概括为:依赖装全、编译参数按需启用、PHP-FPM 与 Nginx 端口对齐、数据库连通性单独验证。
按本文步骤完整执行后,再根据自己的项目扩展 PHP 模块或调整 Nginx 配置,遇到异常优先回看报错信息和高频问题部分。

分享到:
上一篇
Ubuntu宝塔面板安装,一键建站环境部署
下一篇
Windows Server IIS部署WordPress详
1
系统公告

机房迁移升级通知

尊敬的用户: IP 段 103.23.148.x、156.224.29.x 原香港一区线路波动、攻击频繁,平台定于 7 月 5 日凌晨分批迁移至香港 GIA 机房,硬件升级 AMD 铂金机型。 迁移均在凌晨操作,最大程度降低业务影响,迁移期间服务器临时关机; 升级后配置不降低、费用不涨价,数据默认同步迁移; 迁移后 IP 全部更换,请及时修改域名解析、防火墙白名单; 建议提前备份重要数据,有问题可联系在线客服。 感谢理解与支持! 泽御云科技 2026.06.30
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意