LNMP架构学习笔记

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. 关闭防火墙(测试环境,生产环境需配置端口放行)
bash 复制代码
systemctl stop firewalld
systemctl disable firewalld
  1. 关闭SELinux
bash 复制代码
setenforce 0  # 临时关闭
sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config  # 永久关闭
  1. 安装基础依赖(用于编译安装和组件运行)
bash 复制代码
yum install -y gcc gcc-c++ make pcre pcre-devel zlib zlib-devel openssl openssl-devel

安装Nginx

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

bash 复制代码
# 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,更轻量)

bash 复制代码
# 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

bash 复制代码
# 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)

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

bash 复制代码
vim /etc/nginx/conf.d/default.conf

修改内容(关键部分)

bash 复制代码
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生效:

bash 复制代码
systemctl restart nginx

测试LNMP架构是否正常运行

测试静态页面

html 复制代码
<!DOCTYPE html>
静态页面测试LNMP静态页面测试成功!

测试PHP页面

php 复制代码
<?php
phpinfo();
?>

测试PHP连接MySQL

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

常用命令汇总

Nginx相关

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

MariaDB相关

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

PHP-FPM相关

bash 复制代码
systemctl start php-fpm    # 启动PHP-FPM
systemctl stop php-fpm     # 停止PHP-FPM
systemctl restart php-fpm  # 重启PHP-FPM
systemctl status php-fpm   # 查看PHP-FPM状态
相关推荐
yangyanping201086 小时前
Go语言学习之对象关系映射GORM
jvm·学习·golang
网络工程小王6 小时前
【Transformer架构详解】(学习笔记)
笔记·学习
北风toto6 小时前
前端CSS样式详细笔记
前端·css·笔记
KaneLogger7 小时前
如何把AI方面的先发优势转化为结构优势
人工智能·程序员·架构
Heartache boy7 小时前
野火STM32_HAL库版课程笔记-手动建立工程模板与CubeMX后续用法(重要)
笔记·stm32·单片机·嵌入式硬件
倒酒小生8 小时前
今日算法学习小结
学习
醇氧8 小时前
【学习】【说人话版】子网划分
学习
不灭锦鲤9 小时前
网络安全学习(面试)
学习·安全·web安全
世人万千丶10 小时前
Flutter 框架跨平台鸿蒙开发 - 鸿蒙版本五子棋游戏应用
学习·flutter·游戏·华为·harmonyos·鸿蒙
DoUfp0bgq10 小时前
解决RDK X5(ARM64架构)板卡Remote-SSH运行Antigravity AI崩溃(SIGILL):Samba网络盘本地挂载方案
人工智能·架构·ssh