LNMP网络服务搭建

一、核心架构概述

表格

架构 组成组件 核心特点 适用场景
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.confserver块中添加 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 日志,仅记录动态请求,确认动静分离生效。

四、本章核心总结

  1. LNMP 架构的核心是Nginx+PHP-FPM 协同,PHP-FPM 通过进程池管理提升 PHP 解析性能,适用于高并发、轻量级场景;
  2. LNAMP 架构的核心是动静分离,利用 Nginx 的高并发静态资源处理能力和 Apache 的 PHP 兼容性,兼顾性能与稳定性,适用于复杂业务;
  3. 部署关键:组件权限配置(专用运行用户)、参数优化(PHP-FPM 进程数、Nginx 缓存)、数据库安全(专用授权用户,避免 root 直接连接);
  4. 实战价值:通过 Discuz 部署掌握 PHP 应用上线流程,通过动静分离理解架构优化思路,可根据业务场景灵活选择两种架构。
相关推荐
starvapour2 小时前
将Ubuntu设置为不使用独显渲染桌面
linux·ubuntu
爱吃土豆的马铃薯ㅤㅤㅤㅤㅤㅤㅤㅤㅤ4 小时前
ubuntu 安装部署docker教程
linux·ubuntu·docker
YMWM_4 小时前
安装dora-rs的CLI
linux
流水迢迢lst5 小时前
靶场练习day15--php反序列化
开发语言·php
SongYuLong的博客6 小时前
Linux IPC进程通信几种方法
linux·运维·算法
C++ 老炮儿的技术栈6 小时前
Linux 文件系统目录架构全解析
linux·服务器·c语言·开发语言·c++
yiwenrong6 小时前
安全审计-Ubuntu-ufw防火墙
linux·运维·ubuntu
默|笙6 小时前
【Linux】进程间通信(3)_命令管道
linux
小比特_蓝光6 小时前
Linux:基本指令
linux·运维·服务器