一、核心架构概述
表格
| 架构 | 组成组件 | 核心特点 | 适用场景 |
|---|---|---|---|
| LNMP | Linux + Nginx + MySQL + PHP-FPM | 轻量级、高并发,Nginx 直接通过 PHP-FPM 解析 PHP,资源消耗低 | 高并发场景、静态资源较多的 Web 应用(如论坛、博客) |
| LNAMP | Linux + Nginx + Apache + MySQL + PHP | 混合架构,Nginx 处理静态资源,Apache 解析动态 PHP,兼顾兼容性与性能 | 复杂业务、需兼容 Apache 生态的中大型应用(如电商) |
二、LNMP 架构部署(核心步骤)
LNMP 是轻量级高并发架构的核心,部署重点是 Nginx、MySQL、PHP-FPM 的协同配置,最终实现 PHP 解析与数据库连接。
1. 组件部署与配置
(1)编译安装 Nginx
- 前置依赖:安装
gcc、pcre-devel、zlib-devel、openssl-devel等编译依赖; - 创建专用用户:
useradd -M -s /sbin/nologin nginx,创建日志目录并授权; - 核心编译参数:指定安装目录(
--prefix=/usr/local/nginx)、运行用户组,启用 SSL、HTTP/2、stream(四层代理)等模块; - 系统服务配置:编写
nginx.service文件,设置开机自启,通过systemctl管理启动 / 重载。
(2)安装 MySQL
- 采用
dnf快速安装:dnf install mysql mysql-server -y,启动服务并设置开机自启; - 初始化配置:默认密码为空,登录后重置 root 密码(如
Aptech1!),刷新权限。
(3)编译安装 PHP-FPM
- PHP-FPM 是 Nginx 解析 PHP 的核心组件,负责管理 PHP 进程池,提升并发处理能力;
- 依赖安装:安装
libxml2-devel、curl-devel、libzip-devel等依赖库; - 编译参数:指定安装目录,启用 MySQL 连接(
--with-mysqli=mysqlnd)、GD 库、FPM 模块(--enable-fpm); - 配置优化:
- 复制并修改
php.ini,设置时区(Asia/Shanghai)、内存限制(如256M); - 调整
php-fpm.d/www.conf,创建专用运行用户php,优化进程池参数(动态模式:pm=dynamic,设置最小 / 最大空闲进程数、最大进程数)。
- 复制并修改
2. 组件协同配置与测试
(1)Nginx 支持 PHP 解析
在nginx.conf的server块中添加 PHP 匹配规则,通过fastcgi_pass转发至 PHP-FPM 的 9000 端口:
nginx
location ~ \.php$ {
root html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include fastcgi.conf;
}
同时在location /中添加index.php作为默认首页。
(2)测试验证
- PHP 环境测试:在网站根目录创建
index.php,写入phpinfo(),浏览器访问验证 PHP 解析正常; - 数据库连接测试:修改
index.php,通过mysqli_connect连接 MySQL,验证数据库连接成功。
3. 实战:部署 Discuz 论坛
Discuz 是 PHP+MySQL 架构的开源论坛,用于验证 LNMP 架构的实际应用:
- 解压源码:将 Discuz 的
upload目录文件复制到网站根目录(如/usr/local/nginx/html/bbs),授权给php用户; - 数据库准备:创建专用数据库(
discuz_db)、授权用户(discuz_user),分配全权限; - 网页安装:访问
http://IP/bbs/install,按向导完成环境检测、数据库配置、管理员信息设置,最终完成部署。
三、LNAMP 架构:动静分离实现
LNAMP 的核心是动静分离,由 Nginx 处理静态资源(图片、CSS、JS),Apache 处理动态 PHP 请求,降低单一服务器负载,提升响应速度。
1. 部署架构(两台主机)
- 主机 1(Nginx 服务器):负责接收客户端请求,直接返回静态资源,转发动态请求至 Apache 服务器;
- 主机 2(Apache+MySQL 服务器):搭建 LAMP 环境,解析 PHP 动态请求,连接 MySQL 提供数据支持。
2. 核心配置
(1)Nginx 反向代理与静态资源配置
在nginx.conf中添加规则,匹配静态资源后缀(jpg、png、css、js)直接处理,PHP 请求转发至 Apache:
nginx
# 静态资源处理:缓存7天
location ~* \.(jpg|jpeg|png|gif|css|js)$ {
root /usr/share/nginx/html;
expires 7d;
}
# 动态请求转发至Apache服务器(192.168.10.102)
location ~ \.php$ {
proxy_pass http://192.168.10.102:80;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
(2)LAMP 环境搭建(主机 2)
- 快速安装:
dnf install httpd php php-mysqlnd mysql mysql-server -y,启动 Apache、MySQL 服务; - 数据库配置:创建测试数据库(
testdb)、用户(testuser),创建users表并插入测试数据; - 编写动态页面:创建
test.php,实现数据库查询(动态内容)和静态图片嵌入(img标签指向 Nginx 静态目录)。
3. 验证效果
浏览器访问http://Nginx服务器IP/test.php,可同时看到:
- 动态内容:从 MySQL 查询的用户列表(由 Apache 解析返回);
- 静态内容:Nginx 直接返回的图片资源;
- 日志验证:查看 Apache 日志,仅记录动态请求,确认动静分离生效。
四、本章核心总结
- LNMP 架构的核心是Nginx+PHP-FPM 协同,PHP-FPM 通过进程池管理提升 PHP 解析性能,适用于高并发、轻量级场景;
- LNAMP 架构的核心是动静分离,利用 Nginx 的高并发静态资源处理能力和 Apache 的 PHP 兼容性,兼顾性能与稳定性,适用于复杂业务;
- 部署关键:组件权限配置(专用运行用户)、参数优化(PHP-FPM 进程数、Nginx 缓存)、数据库安全(专用授权用户,避免 root 直接连接);
- 实战价值:通过 Discuz 部署掌握 PHP 应用上线流程,通过动静分离理解架构优化思路,可根据业务场景灵活选择两种架构。