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响应给用户
工作流程
-
用户通过浏览器发送HTTP请求到服务器的80(HTTP)或443(HTTPS)端口
-
Nginx接收请求 判断请求类型 若是静态资源 直接读取服务器本地文件 返回给用户 若是动态请求(如.php后缀)则通过fastcgi协议转发给PHP-FPM
-
PHP-FPM启动PHP进程 执行PHP脚本 脚本需要读取数据时 连接MySQL数据库 获取数据并处理
-
PHP将处理后的结果(通常是HTML页面)返回给Nginx
-
Nginx将最终结果响应给用户浏览器 完成一次请求闭环
LNMP各组件安装
安装顺序:Linux系统准备 → 安装Nginx → 安装MySQL/MariaDB → 安装PHP及PHP-FPM → 配置联动 → 测试运行
系统准备
- 关闭防火墙(测试环境,生产环境需配置端口放行)
bash
systemctl stop firewalld
systemctl disable firewalld
- 关闭SELinux
bash
setenforce 0 # 临时关闭
sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config # 永久关闭
- 安装基础依赖(用于编译安装和组件运行)
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状态