LNMP部署核心是确保Nginx、MySQL、PHP 8.4正确通信与安全协同:需启用Remi或ondrej源安装PHP 8.4,按Nginx→MySQL→PHP顺序安装,配置php-fpm监听127.0.0.1:9000,Nginx通过fastcgi_pass对接,并完成PHP解析、MySQL连接、权限及安全基线三步验证。

直接在云服务器上从零部署 PHP 8.4 并搭好 LNMP(Linux + Nginx + MySQL + PHP),关键不是“装齐四个软件”,而是让它们能正确通信、权限合理、端口通畅、安全可用。下面按生产级实操逻辑分步说明,适用于阿里云 ECS、华为云 ECS 或其他主流 Linux 云服务器(CentOS 7/8、Alibaba Cloud Linux、Ubuntu 22.04+ 均适配)。
选对系统和源,避免版本冲突
PHP 8.4 是较新版本,官方仓库默认不提供。必须启用高质量第三方软件源:
-
CentOS 7 / Alibaba Cloud Linux 3:启用 Remi 源并启用 php84 模块
yum install -y https://rpms.remirepo.net/enterprise/remi-release-7.rpmyum-config-manager --enable remi-php84 -
Ubuntu 22.04+:添加 ondrej PPA(经长期验证稳定)
sudo add-apt-repository ppa:ondrej/phpsudo apt update - 安装前先清理旧 PHP:
yum remove php* -y或apt purge php* -y,防止扩展冲突
装 Nginx + MySQL 8.4 + PHP 8.4 核心组件
三者要协同工作,顺序建议:Nginx → MySQL → PHP(含 php-fpm)
修复 Core bailout 状态损坏安全问题,以及 BZ2、DOM、PDO、Opcache/JIT 内存与执行错误,改进 Unicode 字素处理、URL 解析、TLS 流状态、信号分发及会话错误处理。
-
Nginx:用官方源安装稳定版(如 nginx-1.26+)
CentOS:yum install -y nginx;Ubuntu:apt install -y nginx
启动:systemctl enable --now nginx,确认curl -I http://127.0.0.1返回 200 -
MySQL 8.4:优先使用官方 RPM/DEB 包(非 mariadb)
CentOS:rpm -Uvh https://repo.mysql.com/mysql84-community-release-el7-1.noarch.rpm→yum install -y mysql-server
Ubuntu:直接apt install -y mysql-server(新版 apt 默认含 8.4)
初始化后务必运行mysql_secure_installation,禁用匿名用户、禁止 root 远程登录 -
PHP 8.4 及关键扩展:
CentOS:yum install -y php php-fpm php-mysqlnd php-gd php-xml php-mbstring php-json php-opcache php-curl php-zip
Ubuntu:apt install -y php8.4-fpm php8.4-mysql php8.4-gd php8.4-xml php8.4-mbstring php8.4-json php8.4-opcache php8.4-curl php8.4-zip
启动:systemctl enable --now php-fpm
配置 PHP-FPM 与 Nginx 对接
这是最容易出错的环节:Nginx 必须把 .php 请求准确交给 PHP-FPM 处理。
立即学习“PHP免费学习笔记(深入)”;
- 编辑
/etc/php-fpm.d/www.conf(CentOS)或/etc/php/8.4/fpm/pool.d/www.conf(Ubuntu):
确保listen = 127.0.0.1:9000(不推荐 unix socket,云环境调试更直观)
设置user = nginx(CentOS)或user = www-data(Ubuntu),group同理 - 修改 Nginx 网站配置(如
/etc/nginx/conf.d/default.conf):
在server块内加入 location 块: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; } - 重启服务:
systemctl restart nginx php-fpm,再测试
验证连通性:三步测试法
不要只看首页,要逐层验证数据流是否打通:
-
PHP 解析:在
/usr/share/nginx/html/下建info.php,内容为<?php phpinfo(); ?>,访问http://公网IP/info.php应显示 PHP 8.4 页面 -
MySQL 连接:在 info.php 同目录新建
dbtest.php,写简单 PDO 连接代码(host=127.0.0.1, user=root, 密码为 secure_installation 设置的密码),访问应无报错 -
写入权限 & 安全基线:确认网站目录属主为
nginx:nginx或www-data:www-data,chmod 755目录、644文件;关闭expose_php = Off,禁用危险函数如exec, system, passthru(在 php.ini 中设disable_functions)


















