LAMP架构部署配置

LNMP 架构作为 Linux+Nginx+MySQL/MariaDB+PHP 的经典 Web 服务组合,凭借 Nginx 高性能低资源占用的优势,成为中小型网站、博客及动态应用部署的首选方案。本文结合实操场景,从环境准备到组件配置、联调验证,完整拆解 LNMP 架构部署流程,适配运维新手与实战场景。

一、LNMP 架构核心认知

1.1 组件定义与分工

  • Linux:底层操作系统,提供稳定运行环境,主流选用 CentOS 7/8、Ubuntu 20.04+;
  • Nginx:高性能 Web 服务器 + 反向代理工具,负责处理 HTTP 请求、静态资源(HTML/CSS/ 图片),转发动态请求至 PHP-FPM;
  • MySQL/MariaDB:关系型数据库,存储业务数据,MariaDB 为 MySQL 开源分支,兼容性与稳定性兼具;
  • PHP:服务端脚本语言,PHP-FPM 为其进程管理器,是 Nginx 解析动态 PHP 脚本的核心桥梁。

1.2 核心工作流程

  1. 客户端发起 HTTP/HTTPS 请求,命中 Nginx 80/443 端口;
  2. Nginx 区分请求类型:静态资源直接返回,动态 PHP 请求转发至 127.0.0.1:9000(PHP-FPM 默认端口);
  3. PHP-FPM 调用 PHP 解释器执行脚本,需数据库操作时连接 MySQL;
  4. 数据处理完成后,结果经 PHP-FPM 返回 Nginx,最终响应给客户端。

二、环境准备(CentOS 7 为例)

2.1 系统初始化

bash

运行

复制代码
# 1. 更新系统软件包
yum update -y
# 2. 关闭SELinux(测试环境,生产建议仅放行端口)
setenforce 0
sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
# 3. 关闭防火墙(测试环境,生产开放80/443/3306端口)
systemctl stop firewalld && systemctl disable firewalld
# 4. 安装基础依赖
yum install -y wget vim gcc gcc-c++ make pcre-devel zlib-devel openssl-devel

2.2 版本规划

表格

组件 推荐版本 核心优势
Nginx 1.24.0+ 稳定版,支持 SSL 与反向代理
MySQL 8.0+ / MariaDB10.5 性能优化,兼容主流 PHP 程序
PHP 7.4+ / 8.0+ 修复旧版漏洞,提升执行效率

三、组件分步部署

3.1 安装 Nginx

3.1.1 配置官方 YUM 源

bash

运行

复制代码
cat > /etc/yum.repos.d/nginx.repo << EOF
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/\$releasever/\$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
EOF
3.1.2 安装与启动

bash

运行

复制代码
# 安装Nginx
yum install -y nginx
# 启动并设置开机自启
systemctl start nginx && systemctl enable nginx
# 验证安装(浏览器访问服务器IP,出现默认页即成功)
nginx -v

3.2 安装 MySQL(以 MySQL 8.0 为例)

3.2.1 安装与初始化

bash

运行

复制代码
# 安装MySQL官方源
wget https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm
rpm -ivh mysql80-community-release-el7-3.noarch.rpm
# 安装MySQL服务
yum install -y mysql-community-server
# 启动并开机自启
systemctl start mysqld && systemctl enable mysqld
3.2.2 安全配置

bash

运行

复制代码
# 获取临时密码
grep 'temporary password' /var/log/mysqld.log
# 登录修改密码(替换临时密码与新密码)
mysql -uroot -p
ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码(含大小写+数字+特殊字符)';
FLUSH PRIVILEGES;
# 退出
exit
# 执行安全加固(移除匿名用户、禁止root远程登录等,生产必做)
mysql_secure_installation

3.3 安装 PHP 与 PHP-FPM

3.3.1 配置 Remi 源(获取高版本 PHP)

bash

运行

复制代码
yum install -y https://mirrors.aliyun.com/remi/enterprise/remi-release-7.rpm
yum-config-manager --enable remi-php81 # 选择PHP 8.1版本
3.3.2 安装核心组件

bash

运行

复制代码
# 安装PHP及常用扩展(mysqlnd为数据库驱动,gd为图片处理扩展)
yum install -y php php-fpm php-mysqlnd php-gd php-mbstring php-xml php-zip
# 启动并开机自启PHP-FPM
systemctl start php-fpm && systemctl enable php-fpm
# 验证版本
php -v

四、核心配置:Nginx 与 PHP-FPM 联动

4.1 配置 PHP-FPM(保持默认即可)

PHP-FPM 默认监听 127.0.0.1:9000,用户与组为 nginx,无需额外修改,若需优化可调整/etc/php-fpm.d/www.conf中进程数参数。

4.2 配置 Nginx 站点解析

4.2.1 备份默认配置

bash

运行

复制代码
cp /etc/nginx/conf.d/default.conf /etc/nginx/conf.d/default.conf.bak
4.2.2 编写动态解析配置

bash

运行

复制代码
cat > /etc/nginx/conf.d/default.conf << EOF
server {
    listen 80;
    server_name 服务器IP; # 替换为服务器公网IP或域名
    root /usr/share/nginx/html; # 网站根目录
    index index.php index.html index.htm; # 默认索引文件

    # 静态文件请求处理
    location / {
        try_files \$uri \$uri/ =404;
    }

    # PHP动态请求转发(核心配置)
    location ~ \.php\$ {
        fastcgi_pass 127.0.0.1:9000; # 对应PHP-FPM监听地址
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME \$document_root\$fastcgi_script_name;
        include fastcgi_params;
    }
}
EOF
4.2.3 重启 Nginx 生效配置

bash

运行

复制代码
systemctl restart nginx

五、联调验证

5.1 创建测试页面

bash

运行

复制代码
cat > /usr/share/nginx/html/info.php << EOF
<?php
phpinfo(); // 输出PHP完整配置信息
?>
EOF

5.2 访问验证

浏览器访问http://服务器IP/info.php,若显示 PHP 配置页面,说明 Nginx 与 PHP-FPM 联动成功;访问http://服务器IP,若显示默认 Nginx 页,说明静态资源解析正常。

5.3 数据库连通性测试

bash

运行

复制代码
# 登录MySQL创建测试库
mysql -uroot -p
CREATE DATABASE test_db;
exit
# 创建PHP测试文件验证数据库连接
cat > /usr/share/nginx/html/db_test.php << EOF
<?php
\$servername = "localhost";
\$username = "root";
\$password = "你的MySQL密码";
\$dbname = "test_db";

// 创建连接
\$conn = new mysqli(\$servername, \$username, \$password, \$dbname);
// 检测连接
if (\$conn->connect_error) {
    die("连接失败: " . \$conn->connect_error);
}
echo "MySQL连接成功!";
\$conn->close();
?>
EOF

浏览器访问http://服务器IP/db_test.php,显示 "MySQL 连接成功!" 即数据库连通正常。

六、常见问题与解决方案

  1. 502 Bad Gateway :PHP-FPM 未启动或监听端口冲突,执行systemctl start php-fpm排查;
  2. 403 Forbidden :Nginx 网站目录权限不足,执行chown -R nginx:nginx /usr/share/nginx/html
  3. MySQL 连接失败 :密码错误或权限不足,重新执行mysql_secure_installation配置权限。

总结

LNMP 架构部署的核心在于组件版本兼容、Nginx 与 PHP-FPM 的联动配置,以及数据库权限的合理管控。本文实操流程覆盖环境准备、组件安装、配置联调全环节,适配 CentOS 7 系统,新手可按步骤快速搭建稳定的 Web 运行环境。后续可基于此架构部署 WordPress、Discuz 等应用,进一步拓展业务场景。

相关推荐
xiaokangzhe2 小时前
web技术与nginx网站环境部署
运维·前端·nginx
陈皮糖..3 小时前
Docker Compose 学习之多容器应用编排与运维实践 —— 基于 Nginx+MySQL+Redis 服务栈的部署与管理
运维·redis·学习·mysql·nginx·docker
柒.梧.4 小时前
高频Nginx面试题(含详细解析,面试必看)
运维·nginx·面试
三七吃山漆4 小时前
变量覆盖冲突与构造字符串逃逸漏洞
php
项目工程打工马4 小时前
Ubuntu 上 Nginx 安装详细指南(新手零踩坑版)
nginx·ubuntu·postgresql
m0_612591974 小时前
江苏智算中心排名与格局分析:尚航科技无锡智算中心的标杆地位
运维·服务器·科技·php·idc
炸炸鱼.4 小时前
Nginx 安全防护与 HTTPS 部署实战
nginx·安全·https
森叶4 小时前
《深度拆解数据库连接池:从底层 TCP 原理到 PHP-FPM 与 Swoole/Go 的架构演进》
数据库·tcp/ip·php
ego.iblacat4 小时前
Nginx 安全防护与 HTTPS 部署实战
nginx·安全·https