LNMP架构概述

定义

LNMP是一套开源的Web服务器架构 由四个核心组件组成 均为免费开源软件 广泛应用于中小型网站部署 具有轻量 高效 稳定的特点 是Linux系统下最常用的Web架构之一

核心组件对应:L(Linux)N(Nginx)M(MySQL/MariaDB)P(PHP)各组件各司其职协同工作 构成完整的Web服务运行环境

各组件作用

  • Linux:底层操作系统,提供稳定的运行环境,是整个架构的基础,常用发行版为CentOS、Ubuntu、Debian
  • Nginx:高性能的HTTP和反向代理服务器,负责接收用户的HTTP请求,处理静态资源(HTML、CSS、JS、图片等),将动态请求(PHP脚本)转发给PHP-FPM处理,提升并发处理能力
  • MySQL/MariaDB:关系型数据库,用于存储网站的动态数据(如用户信息、文章内容、订单数据等),提供数据的增删改查操作支持
  • PHP:服务器端脚本语言,用于编写动态网页逻辑,接收Nginx转发的请求,连接数据库获取数据,处理完成后将结果返回给Nginx,再由Nginx响应给用户

工作流程

1. 用户通过浏览器发送HTTP请求到服务器的80(HTTP)或443(HTTPS)端口

2. Nginx接收请求 判断请求类型 若是静态资源 直接读取服务器本地文件 返回给用户 若是动态请求(如.php后缀)则通过fastcgi协议转发给PHP-FPM

3. PHP-FPM启动PHP进程 执行PHP脚本 脚本需要读取数据时 连接MySQL数据库 获取数据并处理

4. PHP将处理后的结果(通常是HTML页面)返回给Nginx

5. Nginx将最终结果响应给用户浏览器 完成一次请求闭环

LNMP各组件安装

安装顺序:Linux系统准备 → 安装Nginx → 安装MySQL/MariaDB → 安装PHP及PHP-FPM → 配置联动 → 测试运行

系统准备

1. 关闭防火墙(测试环境,生产环境需配置端口放行)

systemctl stop firewalld
systemctl disable firewalld

2. 关闭SELinux

setenforce 0  # 临时关闭
sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config  # 永久关闭

3. 安装基础依赖(用于编译安装和组件运行)

yum install -y gcc gcc-c++ make pcre pcre-devel zlib zlib-devel openssl openssl-devel

安装Nginx

方式:yum安装(简单快捷,适合新手)也可源码编译安装(自定义配置更灵活)

# 1. 安装Nginx官方yum源
rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm

# 2. 安装Nginx
yum install -y nginx

# 3. 启动并设置开机自启
systemctl start nginx
systemctl enable nginx

# 4. 验证安装(浏览器访问服务器IP,出现Nginx默认页面即为成功)
curl http://localhost

安装MariaDB(MySQL的分支,兼容MySQL,更轻量)

# 1. 安装MariaDB
yum install -y mariadb mariadb-server mariadb-devel

# 2. 启动并设置开机自启
systemctl start mariadb
systemctl enable mariadb

# 3. 初始化数据库(设置root密码,删除匿名用户,禁止远程空密码登录)
mysql_secure_installation

# 4. 验证安装(登录数据库)
mysql -u root -p  # 输入设置的root密码,登录成功即为安装完成

核心配置文件:/etc/my.cnf(数据库主配置)

常用命令:启动(systemctl start mariadb)停止(systemctl stop mariadb)重启(systemctl restart mariadb)查看状态(systemctl status mariadb)

安装PHP及PHP-FPM

# 1. 安装第三方yum源
yum install -y epel-release
rpm -Uvh https://rpms.remirepo.net/enterprise/remi-release-7.rpm

# 2. 启用PHP 7.4仓库
yum install -y yum-utils
yum-config-manager --enable remi-php74

# 3. 安装PHP及所需扩展(php-fpm必须安装,其他扩展根据需求选择)
yum install -y php php-fpm php-mysql php-gd php-xml php-mbstring php-json php-cli

# 4. 启动并设置开机自启
systemctl start php-fpm
systemctl enable php-fpm

# 5. 验证安装(查看PHP版本)
php -v

LNMP组件联动配置

核心:配置Nginx 让其能识别PHP动态请求 并转发给PHP-FPM处理 配置PHP 让其能连接MySQL数据库

Nginx配置(关联PHP-FPM)

编辑默认站点配置文件 修改动态请求转发规则:

vim /etc/nginx/conf.d/default.conf

修改内容(关键部分)

server {
    listen       80;
    server_name  localhost;  # 可改为自己的域名,如www.example.com

    # 静态资源根目录(可自定义,如/www/html)
    root   /usr/share/nginx/html;
    index  index.html index.htm index.php;  # 新增index.php,优先解析PHP首页

    # 处理PHP动态请求
    location ~ \.php$ {
        root           /usr/share/nginx/html;  # 与上面的root一致
        fastcgi_pass   127.0.0.1:9000;  # PHP-FPM默认监听端口(9000)
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;  # 关键参数,指定PHP脚本路径
        include        fastcgi_params;
    }
}

配置完成后,重启Nginx生效:

systemctl restart nginx

测试LNMP架构是否正常运行

测试静态页面

<!DOCTYPE html>
静态页面测试LNMP静态页面测试成功!

测试PHP页面

<?php
phpinfo();
?>

测试PHP连接MySQL

浏览器访问之前创建的test.php(http://服务器IP/test.php)显示“PHP连接MySQL成功!” 即为联动正常

常用命令汇总

 Nginx相关

systemctl start nginx    # 启动Nginx
systemctl stop nginx     # 停止Nginx
systemctl restart nginx  # 重启Nginx
systemctl status nginx   # 查看Nginx状态
nginx -t                 # 检查Nginx配置文件语法是否正确

MariaDB相关

systemctl start mariadb    # 启动MariaDB
systemctl stop mariadb     # 停止MariaDB
systemctl restart mariadb  # 重启MariaDB
systemctl status mariadb   # 查看MariaDB状态
mysql -u root -p           # 登录数据库

PHP-FPM相关

systemctl start php-fpm    # 启动PHP-FPM
systemctl stop php-fpm     # 停止PHP-FPM
systemctl restart php-fpm  # 重启PHP-FPM
systemctl status php-fpm   # 查看PHP-FPM状态
Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐