LNMP 架构作为 Linux+Nginx+MySQL/MariaDB+PHP 的经典 Web 服务组合,凭借 Nginx 高性能低资源占用的优势,成为中小型网站、博客及动态应用部署的首选方案。本文结合实操场景,从环境准备到组件配置、联调验证,完整拆解 LNMP 架构部署流程,适配运维新手与实战场景。
一、LNMP 架构核心认知
1.1 组件定义与分工
- Linux:底层操作系统,提供稳定运行环境,主流选用 CentOS 7/8、Ubuntu 20.04+;
- Nginx:高性能 Web 服务器 + 反向代理工具,负责处理 HTTP 请求、静态资源(HTML/CSS/ 图片),转发动态请求至 PHP-FPM;
- MySQL/MariaDB:关系型数据库,存储业务数据,MariaDB 为 MySQL 开源分支,兼容性与稳定性兼具;
- PHP:服务端脚本语言,PHP-FPM 为其进程管理器,是 Nginx 解析动态 PHP 脚本的核心桥梁。
1.2 核心工作流程
- 客户端发起 HTTP/HTTPS 请求,命中 Nginx 80/443 端口;
- Nginx 区分请求类型:静态资源直接返回,动态 PHP 请求转发至 127.0.0.1:9000(PHP-FPM 默认端口);
- PHP-FPM 调用 PHP 解释器执行脚本,需数据库操作时连接 MySQL;
- 数据处理完成后,结果经 PHP-FPM 返回 Nginx,最终响应给客户端。
二、环境准备(CentOS 7 为例)
2.1 系统初始化
bash
运行
# 1. 更新系统软件包
yum update -y
# 2. 关闭SELinux(测试环境,生产建议仅放行端口)
setenforce 0
sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
# 3. 关闭防火墙(测试环境,生产开放80/443/3306端口)
systemctl stop firewalld && systemctl disable firewalld
# 4. 安装基础依赖
yum install -y wget vim gcc gcc-c++ make pcre-devel zlib-devel openssl-devel
2.2 版本规划
表格
| 组件 | 推荐版本 | 核心优势 |
|---|---|---|
| Nginx | 1.24.0+ | 稳定版,支持 SSL 与反向代理 |
| MySQL | 8.0+ / MariaDB10.5 | 性能优化,兼容主流 PHP 程序 |
| PHP | 7.4+ / 8.0+ | 修复旧版漏洞,提升执行效率 |
三、组件分步部署
3.1 安装 Nginx
3.1.1 配置官方 YUM 源
bash
运行
cat > /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
EOF
3.1.2 安装与启动
bash
运行
# 安装Nginx
yum install -y nginx
# 启动并设置开机自启
systemctl start nginx && systemctl enable nginx
# 验证安装(浏览器访问服务器IP,出现默认页即成功)
nginx -v
3.2 安装 MySQL(以 MySQL 8.0 为例)
3.2.1 安装与初始化
bash
运行
# 安装MySQL官方源
wget https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm
rpm -ivh mysql80-community-release-el7-3.noarch.rpm
# 安装MySQL服务
yum install -y mysql-community-server
# 启动并开机自启
systemctl start mysqld && systemctl enable mysqld
3.2.2 安全配置
bash
运行
# 获取临时密码
grep 'temporary password' /var/log/mysqld.log
# 登录修改密码(替换临时密码与新密码)
mysql -uroot -p
ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码(含大小写+数字+特殊字符)';
FLUSH PRIVILEGES;
# 退出
exit
# 执行安全加固(移除匿名用户、禁止root远程登录等,生产必做)
mysql_secure_installation
3.3 安装 PHP 与 PHP-FPM
3.3.1 配置 Remi 源(获取高版本 PHP)
bash
运行
yum install -y https://mirrors.aliyun.com/remi/enterprise/remi-release-7.rpm
yum-config-manager --enable remi-php81 # 选择PHP 8.1版本
3.3.2 安装核心组件
bash
运行
# 安装PHP及常用扩展(mysqlnd为数据库驱动,gd为图片处理扩展)
yum install -y php php-fpm php-mysqlnd php-gd php-mbstring php-xml php-zip
# 启动并开机自启PHP-FPM
systemctl start php-fpm && systemctl enable php-fpm
# 验证版本
php -v
四、核心配置:Nginx 与 PHP-FPM 联动
4.1 配置 PHP-FPM(保持默认即可)
PHP-FPM 默认监听 127.0.0.1:9000,用户与组为 nginx,无需额外修改,若需优化可调整/etc/php-fpm.d/www.conf中进程数参数。
4.2 配置 Nginx 站点解析
4.2.1 备份默认配置
bash
运行
cp /etc/nginx/conf.d/default.conf /etc/nginx/conf.d/default.conf.bak
4.2.2 编写动态解析配置
bash
运行
cat > /etc/nginx/conf.d/default.conf << EOF
server {
listen 80;
server_name 服务器IP; # 替换为服务器公网IP或域名
root /usr/share/nginx/html; # 网站根目录
index index.php index.html index.htm; # 默认索引文件
# 静态文件请求处理
location / {
try_files \$uri \$uri/ =404;
}
# PHP动态请求转发(核心配置)
location ~ \.php\$ {
fastcgi_pass 127.0.0.1:9000; # 对应PHP-FPM监听地址
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME \$document_root\$fastcgi_script_name;
include fastcgi_params;
}
}
EOF
4.2.3 重启 Nginx 生效配置
bash
运行
systemctl restart nginx
五、联调验证
5.1 创建测试页面
bash
运行
cat > /usr/share/nginx/html/info.php << EOF
<?php
phpinfo(); // 输出PHP完整配置信息
?>
EOF
5.2 访问验证
浏览器访问http://服务器IP/info.php,若显示 PHP 配置页面,说明 Nginx 与 PHP-FPM 联动成功;访问http://服务器IP,若显示默认 Nginx 页,说明静态资源解析正常。
5.3 数据库连通性测试
bash
运行
# 登录MySQL创建测试库
mysql -uroot -p
CREATE DATABASE test_db;
exit
# 创建PHP测试文件验证数据库连接
cat > /usr/share/nginx/html/db_test.php << EOF
<?php
\$servername = "localhost";
\$username = "root";
\$password = "你的MySQL密码";
\$dbname = "test_db";
// 创建连接
\$conn = new mysqli(\$servername, \$username, \$password, \$dbname);
// 检测连接
if (\$conn->connect_error) {
die("连接失败: " . \$conn->connect_error);
}
echo "MySQL连接成功!";
\$conn->close();
?>
EOF
浏览器访问http://服务器IP/db_test.php,显示 "MySQL 连接成功!" 即数据库连通正常。
六、常见问题与解决方案
- 502 Bad Gateway :PHP-FPM 未启动或监听端口冲突,执行
systemctl start php-fpm排查; - 403 Forbidden :Nginx 网站目录权限不足,执行
chown -R nginx:nginx /usr/share/nginx/html; - MySQL 连接失败 :密码错误或权限不足,重新执行
mysql_secure_installation配置权限。
总结
LNMP 架构部署的核心在于组件版本兼容、Nginx 与 PHP-FPM 的联动配置,以及数据库权限的合理管控。本文实操流程覆盖环境准备、组件安装、配置联调全环节,适配 CentOS 7 系统,新手可按步骤快速搭建稳定的 Web 运行环境。后续可基于此架构部署 WordPress、Discuz 等应用,进一步拓展业务场景。