前言
在互联网技术高速发展的当下,LNMP(Linux+Nginx+MySQL/MariaDB+PHP/Python) 与LNAMP(Linux+Nginx+Apache+MySQL/MariaDB+PHP/Python) 凭借高性能、高灵活性和开源特性,成为企业级 Web 应用部署的主流架构。LNMP 主打轻量级高并发,适合静态资源多、访问量高的场景;LNAMP 则结合 Nginx 的高并发和 Apache 的兼容性优势,通过动静分离进一步提升复杂业务的处理能力,广泛适用于电商、社交、论坛等中大型 Web 应用。
本文将从实战角度出发,详细讲解 LNMP 架构的完整部署流程(含 Discuz 开源论坛部署),并实现 LNAMP 架构的动静分离配置,所有操作均基于 Linux 系统,步骤可直接复用,适合运维工程师、后端开发人员学习实践。
一、LNMP 架构完整部署实战
LNMP 架构的核心是 Nginx 作为 Web 服务器,MySQL 作为数据库,PHP-FPM 处理 PHP 动态脚本,三者协同工作实现 Web 应用的运行。本次实战将完成 LNMP 环境搭建,并部署 Discuz! X3.5 开源论坛,全程采用源码编译 + 包管理结合的方式,兼顾灵活性和部署效率。
1.1 环境准备
本次实验基于 Linux 发行版(CentOS/RHEL 8+),建议服务器配置至少 1 核 2G,关闭防火墙和 SELinux 避免端口 / 权限问题:
# 关闭防火墙
systemctl stop firewalld && systemctl disable firewalld
# 临时关闭SELinux
setenforce 0
# 永久关闭SELinux
sed -i 's/^SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
1.2 编译安装 Nginx 1.26.3
Nginx 采用源码编译安装,可自定义模块,满足生产环境的个性化需求,安装前需先安装依赖包并创建专用运行用户。
1.2.1 安装依赖 & 创建用户 / 目录
# 安装编译依赖和工具包
dnf install -y gcc make pcre-devel zlib-devel openssl-devel perl-ExtUtils-MakeMaker git wget tar
# 创建Nginx专用运行用户(无登录权限)
useradd -M -s /sbin/nologin nginx
# 创建日志目录并授权
mkdir -p /var/log/nginx && chown -R nginx:nginx /var/log/nginx
1.2.2 源码编译 & 安装
# 下载并解压Nginx源码包
wget https://nginx.org/download/nginx-1.26.3.tar.gz
tar zxf nginx-1.26.3.tar.gz && cd nginx-1.26.3
# 配置编译参数(开启常用核心模块)
./configure \
--prefix=/usr/local/nginx \
--user=nginx \
--group=nginx \
--with-http_ssl_module \
--with-http_v2_module \
--with-http_realip_module \
--with-http_stub_status_module \
--with-http_gzip_static_module \
--with-pcre \
--with-stream
# 编译并安装(-j$(nproc)利用多核编译加速)
make -j$(nproc) && make install
# 创建软链接,方便全局调用Nginx命令
ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/
编译参数是 Nginx 定制化的核心,各参数作用如下表:
表格
| 编译参数 | 核心作用 |
|---|---|
| --prefix=/usr/local/nginx | 指定 Nginx 安装根目录 |
| --user=nginx/--group=nginx | 指定 Nginx 运行的用户 / 用户组 |
| --with-http_ssl_module | 启用 SSL 模块,支持 HTTPS 协议 |
| --with-http_v2_module | 启用 HTTP/2 模块,提升传输效率 |
| --with-http_realip_module | 从请求头获取客户端真实 IP |
| --with-http_stub_status_module | 启用 Nginx 状态监控模块 |
| --with-http_gzip_static_module | 启用静态资源 gzip 压缩,减小文件体积 |
| --with-pcre | 启用 PCRE 库,支持正则表达式解析 |
| --with-stream | 启用四层代理模块,支持 TCP/UDP 代理 |
1.2.3 添加 Nginx 系统服务
为方便 Nginx 的启动、停止、开机自启,创建 systemd 系统服务文件:
# 编写服务文件
vim /lib/systemd/system/nginx.service
写入以下内容:
[Unit]
Description=The NGINX HTTP and reverse proxy server
After=network.target
[Service]
Type=forking
ExecStartPre=/usr/local/sbin/nginx -t
ExecStart=/usr/local/sbin/nginx
ExecReload=/usr/local/sbin/nginx -s reload
ExecStop=/bin/kill -s QUIT $MAINPID
TimeoutStopSec=5
KillMode=process
PrivateTmp=true
User=root
Group=root
[Install]
WantedBy=multi-user.target
重新加载服务配置并启动 Nginx,设置开机自启:
systemctl daemon-reload
systemctl start nginx && systemctl enable nginx
# 验证Nginx是否启动成功
nginx -t && ps -ef | grep nginx
若输出nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok,说明配置无问题,Nginx 启动成功。
1.3 安装并配置 MySQL 服务
MySQL 采用dnf包管理安装,相比源码编译更高效,适合快速部署,安装后需重置 root 密码并开启服务。
# 安装MySQL服务
dnf install mysql mysql-server -y
# 启动MySQL并设置开机自启
systemctl start mysqld && systemctl enable mysqld
# 登录MySQL并重置root密码(默认无密码,直接回车登录)
mysql -uroot -p
执行 MySQL 命令重置密码并刷新权限:
-- 设置root密码为Aptech1!(可自定义复杂密码)
ALTER USER 'root'@'localhost' IDENTIFIED BY 'Aptech1!';
-- 刷新权限使配置生效
FLUSH PRIVILEGES;
-- 退出MySQL
EXIT;
1.4 源码编译安装 PHP-FPM 8.2.20
PHP 是处理动态脚本的核心,PHP-FPM(FastCGI Process Manager) 是 PHP 的 FastCGI 进程管理器,专为高并发设计,是 Nginx 处理 PHP 请求的必备组件,本次采用源码编译安装 PHP 8.2.20,开启 FPM 模块。
1.4.1 安装 PHP 编译依赖
PHP 依赖较多库文件,需一次性安装完整,避免编译报错:
dnf install -y gcc make cmake autoconf libtool bison re2c gcc-c++ openssl-devel libxml2-devel zlib-devel curl-devel libpng-devel libjpeg-turbo-devel freetype-devel libicu-devel oniguruma-devel sqlite-devel libxslt-devel libzip-devel pcre-devel apr-devel apr-util-devel ncurses-devel wget
1.4.2 源码编译 & 安装 PHP
# 下载并解压PHP源码包
wget https://www.php.net/distributions/php-8.2.20.tar.gz
tar xzf php-8.2.20.tar.gz && cd php-8.2.20
# 配置编译参数(开启FPM、MySQL连接、GD库等核心模块)
./configure \
--prefix=/usr/local/php \
--with-openssl \
--with-zlib \
--with-curl \
--enable-mbstring \
--with-mysqli=mysqlnd \
--with-pdo-mysql=mysqlnd \
--with-freetype \
--with-jpeg \
--with-zip \
--with-libxml \
--enable-intl \
--enable-gd \
--enable-opcache \
--enable-fpm
# 编译并安装
make -j$(nproc) && make install
1.4.3 配置 PHP 核心文件 & PHP-FPM
编译完成后需复制配置文件并修改核心参数,创建 PHP-FPM 专用运行用户,确保权限隔离。
# 复制PHP主配置文件(开发环境版,生产环境可改用php.ini-production)
cp php.ini-development /usr/local/php/lib/php.ini
# 修改PHP时区为上海,解决时间显示异常问题
sed -i 's/;date.timezone=/date.timezone = Asia\/Shanghai/' /usr/local/php/lib/php.ini
# 调整PHP内存限制,从128M改为256M,提升脚本处理能力
sed -i 's/memory_limit = 128M/memory_limit = 256M/' /usr/local/php/lib/php.ini
# 复制并重命名PHP-FPM配置文件
mv /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf
mv /usr/local/php/etc/php-fpm.d/www.conf.default /usr/local/php/etc/php-fpm.d/www.conf
# 创建PHP-FPM专用运行用户
useradd -M -s /sbin/nologin php
# 修改PHP-FPM启动用户为php
sed -i 's/user = nobody/user = php/' /usr/local/php/etc/php-fpm.d/www.conf
sed -i 's/group = nobody/group = php/' /usr/local/php/etc/php-fpm.d/www.conf
1.4.4 创建 PHP-FPM 系统服务 & 启动
# 编写PHP-FPM服务文件
vim /etc/systemd/system/php-fpm.service
写入以下内容:
[Unit]
Description=The PHP FastCGI Process Manager
After=network.target mysqld.service
[Service]
Type=forking
ExecStart=/usr/local/php/sbin/php-fpm
ExecReload=/bin/kill -USR2 $MAINPID
ExecStop=/bin/kill -SIGINT $MAINPID
PrivateTmp=true
User=php
Group=php
[Install]
WantedBy=multi-user.target
重新加载服务配置并启动 PHP-FPM,设置开机自启:
systemctl daemon-reload
systemctl start php-fpm && systemctl enable php-fpm
# 验证PHP-FPM是否启动(默认监听9000端口)
netstat -tulnp | grep 9000
若输出php-fpm: master process,说明 PHP-FPM 启动成功。
1.4.5 PHP-FPM 参数优化
PHP-FPM 的进程管理模式直接影响性能,由pm参数指定,分为static(固定进程数) 和dynamic(动态进程数) 两种,生产环境推荐根据服务器内存调整dynamic模式参数,兼顾性能和资源利用率。
本次针对1.5G 内存 的服务器(运行 Discuz 论坛)进行优化,修改www.conf配置文件:
vim /usr/local/php/etc/php-fpm.d/www.conf
修改以下参数:
pm=dynamic
pm.max_children=20 # 最大进程数,根据内存调整,1.5G内存设为20
pm.start_servers=5 # 启动时的初始进程数
pm.max_spare_servers=8 # 最大空闲进程数
pm.min_spare_servers=2 # 最小空闲进程数
参数作用:FPM 启动时初始化 5 个进程,运行中保持至少 2 个空闲进程,最多 8 个空闲进程,进程总数不超过 20 个,避免内存耗尽。修改后重启 PHP-FPM:
systemctl restart php-fpm
1.5 验证 LNMP 三者协同工作
LNMP 环境搭建完成后,需验证 Nginx 能否解析 PHP 脚本、PHP 能否连接 MySQL 数据库,确保三者协同工作正常。
1.5.1 验证 Nginx 解析 PHP 脚本
创建 PHP 测试文件,放置在 Nginx 网站根目录(/usr/local/nginx/html/):
vim /usr/local/nginx/html/index.php
写入以下内容(调用 phpinfo () 函数,显示 PHP 环境信息):
<?php
phpinfo();
?>
修改 Nginx 配置文件,开启 PHP 解析支持:
vim /usr/local/nginx/conf/nginx.conf
在server块中添加 / 修改以下配置:
location / {
root html;
index index.html index.htm index.php; # 将index.php加入默认索引
}
# 配置PHP脚本解析规则
location ~ \.php$ {
root html;
fastcgi_pass 127.0.0.1:9000; # 转发到PHP-FPM的9000端口
fastcgi_index index.php;
include fastcgi.conf; # 加载FastCGI配置文件
}
检查 Nginx 配置并重新加载:
nginx -t && nginx -s reload
通过浏览器访问http://服务器IP/index.php,若能看到 PHP 8.2.20 的环境信息页面,说明 Nginx 解析 PHP 脚本正常。
1.5.2 验证 PHP 连接 MySQL 数据库
修改上述index.php文件,编写 MySQL 连接测试代码:
vim /usr/local/nginx/html/index.php
写入以下内容:
<?php
// 连接MySQL数据库(地址、用户名、密码)
$link=mysqli_connect('127.0.0.1','root','Aptech1!');
// 判断连接是否成功
if($link)
echo"恭喜你,数据库连接成功啦!!";
// 关闭数据库连接
mysqli_close($link);
?>
浏览器重新访问http://服务器IP/index.php,若显示恭喜你,数据库连接成功啦!!,说明 PHP 与 MySQL 连接正常,LNMP 三者协同工作验证通过。
1.6 部署 Discuz! X3.5 开源论坛
Discuz! 是基于 PHP+MySQL 开发的开源论坛系统,是 LNMP 架构的典型应用,部署过程包括解压源码、配置权限、创建数据库、网页端安装四个步骤。
1.6.1 解压 Discuz 源码并配置权限
# 创建论坛专属目录
mkdir -p /usr/local/nginx/html/bbs
# 下载并解压Discuz X3.5源码(已下载的话直接解压)
unzip Discuz-X3.5-SC-UTF8-v20231001.zip
# 将源码的upload目录下所有文件复制到论坛目录
cp -ra upload/* /usr/local/nginx/html/bbs/
# 复制Discuz默认配置文件并更名
cd /usr/local/nginx/html/bbs/config/
cp config_global_default.php config_global.php
cp config_ucenter_default.php config_ucenter.php
# 给论坛目录授权,让PHP-FPM拥有写入权限
chown php:php /usr/local/nginx/html/bbs/ -R
1.6.2 修改 PHP 配置,解决 MySQL 连接套接字问题
为避免 PHP 连接 MySQL 时出现套接字错误,修改 PHP 主配置文件,指定 MySQL 套接字文件路径:
vim /usr/local/php/lib/php.ini
在文件末尾添加以下内容:
mysqli.default_socket = /var/lib/mysql/mysql.sock
pdo_mysql.default_socket = /var/lib/mysql/mysql.sock
重启 PHP-FPM 使配置生效:
systemctl restart php-fpm
1.6.3 为 Discuz 创建专用数据库和用户
为了数据库安全,不建议使用 root 用户运行 Web 应用,需为 Discuz 创建专用数据库、数据库用户,并赋予仅该数据库的操作权限。
# 登录MySQL
mysql -uroot -pAptech1!
执行以下 MySQL 命令:
-- 创建Discuz专用数据库,字符集为utf8mb4(支持emoji和中文)
CREATE DATABASE discuz_db DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
-- 创建数据库用户discuz_user,密码为pwd123(自定义)
CREATE USER 'discuz_user'@'localhost' IDENTIFIED BY 'pwd123';
-- 赋予discuz_user对discuz_db数据库的所有操作权限
GRANT ALL PRIVILEGES ON discuz_db.* TO 'discuz_user'@'localhost';
-- 更改用户认证方式,避免连接报错
ALTER USER 'discuz_user'@'localhost' IDENTIFIED WITH mysql_native_password BY 'pwd123';
-- 刷新权限
FLUSH PRIVILEGES;
-- 退出MySQL
EXIT;
1.6.4 网页端完成 Discuz 安装
通过浏览器访问http://服务器IP/bbs/install,进入 Discuz 安装向导,按以下步骤操作:
- 环境检测:页面自动检测 LNMP 环境,所有项均为 "通过" 即可进入下一步;
- 选择安装方式 :选择全新安装 Discuz! X(独立模式安装);
- 数据库配置:填写数据库信息(数据库名:discuz_db,用户名:discuz_user,密码:pwd123),设置论坛管理员账号和密码;
- 完成安装 :等待安装完成,删除
install目录(安装向导会提示),即可进入 Discuz 论坛前台和后台。
至此,LNMP 架构部署 Discuz 论坛的实战全部完成,论坛可正常注册、发帖、管理。
二、LNAMP 架构部署与动静分离实现
LNAMP 架构的核心是Nginx 作为前置反向代理服务器 ,负责处理静态资源(图片、CSS、JS、HTML)和转发动态 PHP 请求到 Apache 服务器,Apache 负责处理动态 PHP 脚本,MySQL 作为共享数据库,实现动静分离。这种架构结合了 Nginx 的高并发静态处理能力和 Apache 的 PHP 兼容性优势,适合中大型 Web 应用。
2.1 LNAMP 架构整体规划
本次实战需要两台 Linux 服务器,配置均为 2C4G,角色分配如下表:
表格
| 服务器 IP | 操作系统 | 核心服务 | 功能定位 |
|---|---|---|---|
| 192.168.10.101 | Linux(CentOS/RHEL 8+) | Nginx | 前置反向代理,处理静态资源,转发动态请求 |
| 192.168.10.102 | Linux(CentOS/RHEL 8+) | Apache+PHP+MySQL | 后端应用服务器,处理动态 PHP 请求,存储数据 |
核心原理:用户访问时,Nginx 直接返回图片、CSS、JS 等静态资源;当请求 PHP 动态脚本时,Nginx 通过反向代理将请求转发到 Apache 服务器,Apache 处理完成后将结果返回给 Nginx,再由 Nginx 返回给用户,用户全程只与 Nginx 交互。
2.2 配置 Nginx 反向代理(192.168.10.101)
Nginx 作为反向代理的核心是配置proxy_pass指令,将 PHP 动态请求转发到 Apache 服务器,同时配置静态资源缓存,提升访问速度。
2.2.1 安装并配置 Nginx
直接通过dnf安装 Nginx,相比源码编译更高效:
dnf install -y nginx
# 备份默认配置文件
cp /etc/nginx/nginx.conf.default /etc/nginx/nginx.conf
# 编辑Nginx主配置文件
vim /etc/nginx/nginx.conf
修改server块内容,添加静态资源处理和动态请求转发规则:
server {
listen 80;
server_name localhost;
# 静态资源根目录
root /usr/share/nginx/html;
# 默认索引页
index index.html index.php;
# 处理所有静态资源(图片、CSS、JS)
location ~* \.(jpg|jpeg|png|gif|css|js)$ {
expires 7d; # 静态资源缓存7天,减少重复请求
}
# 转发PHP动态请求到Apache服务器(192.168.10.102)
location ~ \.php$ {
proxy_pass http://192.168.10.102:80; # 核心转发指令
# 传递请求头,确保Apache获取客户端真实IP和Host信息
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
2.2.2 创建静态资源目录并上传文件
Nginx 负责处理静态资源,需创建专属目录并上传测试图片(如 kgc.png):
# 创建静态资源图片目录
mkdir -p /usr/share/nginx/html/images
# 上传测试图片到该目录(可通过rz命令或SFTP上传)
cp kgc.png /usr/share/nginx/html/images/
# 启动Nginx并设置开机自启
systemctl start nginx && systemctl enable nginx
2.3 搭建 LAMP 环境(192.168.10.102)
后端服务器搭建 LAMP 环境(Linux+Apache+MySQL+PHP),负责处理 Nginx 转发的 PHP 动态请求,采用dnf包管理快速部署,无需源码编译。
2.3.1 安装 LAMP 相关服务
# 安装Apache、PHP、MySQL及PHP-MySQL连接模块
dnf install -y httpd php php-mysqlnd mysql mysql-server
# 启动Apache、MySQL并设置开机自启
systemctl start httpd && systemctl enable httpd
systemctl start mysqld && systemctl enable mysqld
# 重置MySQL root密码(同LNMP步骤)
mysql -uroot -p
ALTER USER 'root'@'localhost' IDENTIFIED BY 'Aptech1!';
FLUSH PRIVILEGES;
EXIT;
2.3.2 编写 PHP 动态测试页面
在 Apache 的网站根目录(/var/www/html/)创建 PHP 测试文件test.php,实现MySQL 数据查询 + 嵌入 Nginx 静态图片,验证动静分离效果:
vim /var/www/html/test.php
写入以下内容:
<?php
// 数据库连接信息
$servername = "127.0.0.1";
$username = "testuser";
$password = "Test@123";
$dbname = "testdb";
// 创建MySQL连接
$conn = new mysqli($servername, $username, $password, $dbname);
// 检查连接是否成功
if ($conn->connect_error) {
die("数据库连接失败: " . $conn->connect_error);
}
// 执行数据查询
$sql = "SELECT id, name FROM users";
$result = $conn->query($sql);
// 输出查询结果
if ($result->num_rows > 0) {
echo "<h1>用户列表</h1>";
echo "<ul>";
while ($row = $result->fetch_assoc()) {
echo "<li>ID: " . $row["id"] . " - 姓名: " . $row["name"] . "</li>";
}
echo "</ul>";
} else {
echo "0结果";
}
// 关闭数据库连接
$conn->close();
// 嵌入静态图片(由Nginx服务器192.168.10.101处理)
echo "<img src='images/kgc.png' alt='测试图片'>";
?>
2.3.3 创建测试数据库和数据
为 PHP 测试页面创建专用数据库、用户和测试数据,步骤与 Discuz 数据库创建一致:
# 登录MySQL
mysql -uroot -pAptech1!
执行以下 MySQL 命令:
-- 创建测试数据库testdb
CREATE DATABASE testdb;
-- 创建测试用户testuser,密码Test@123
CREATE USER 'testuser'@'127.0.0.1' IDENTIFIED BY 'Test@123';
-- 赋予testuser对testdb的所有权限
GRANT ALL PRIVILEGES ON testdb.* TO 'testuser'@'127.0.0.1';
-- 刷新权限
FLUSH PRIVILEGES;
-- 进入testdb数据库
USE testdb;
-- 创建用户表users
CREATE TABLE users (id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR (50));
-- 插入测试数据
INSERT INTO users (name) VALUES('张三'),('李四'),('王五');
-- 退出MySQL
EXIT;
2.4 验证 LNAMP 动静分离效果
完成所有配置后,通过浏览器访问Nginx 服务器 IP 的测试页面:http://192.168.10.101/test.php,页面将显示以下内容:
- 动态数据:从 Apache 服务器的 MySQL 数据库中查询的「用户列表」(张三、李四、王五);
- 静态图片 :由 Nginx 服务器直接返回的
kgc.png图片;
同时可查看 Apache 的访问日志,验证动态请求是否由 Apache 处理:
# 查看Apache访问日志
tail -f /var/log/httpd/access_log
日志中会显示 Nginx 转发的请求记录,说明动态请求已成功转发到 Apache,LNAMP 动静分离配置验证通过。
三、LNMP 与 LNAMP 架构对比及应用场景
通过实战部署,我们掌握了 LNMP 和 LNAMP 两种架构的核心配置,二者各有优势,需根据业务场景选择,核心对比如下表:
表格
| 对比维度 | LNMP 架构 | LNAMP 架构 |
|---|---|---|
| 核心组件 | Linux+Nginx+MySQL+PHP-FPM | Linux+Nginx+Apache+MySQL+PHP |
| 架构特点 | 轻量级、单服务器、部署简单 | 分布式、双服务器、动静分离 |
| 核心优势 | 部署成本低、高并发静态处理、资源占用少 | 兼容性强、动态处理稳定、可扩展性高 |
| 性能瓶颈 | 单服务器性能有限,动态 / 静态资源竞争资源 | 多服务器协同,需优化网络和代理配置 |
| 适用场景 | 小型网站、个人博客、论坛、轻量 API 服务 | 中大型电商、社交平台、复杂 Web 应用 |
| 维护成本 | 低,单服务器维护 | 中,需维护多服务器的协同和网络 |
四、总结与优化建议
4.1 实战总结
本文从实战角度完成了LNMP 架构的完整部署 (含 Discuz 论坛)和LNAMP 架构的动静分离实现,核心知识点如下:
- Nginx 源码编译可自定义模块,适合生产环境个性化需求,包管理安装则更高效;
- PHP-FPM 的进程参数需根据服务器内存调整,dynamic 模式是生产环境的最优选择;
- LNMP 三者协同的核心是 Nginx 配置 fastcgi_pass 转发 PHP 请求到 PHP-FPM 的 9000 端口;
- LNAMP 动静分离的核心是 Nginx 通过 proxy_pass 将 PHP 动态请求转发到 Apache,同时直接处理静态资源;
- Web 应用部署时,需为应用创建专用数据库用户,避免使用 root 用户,提升数据库安全性。
4.2 生产环境优化建议
- Nginx 优化:开启 gzip 压缩、配置静态资源缓存、调整 worker_processes(与 CPU 核心数一致)、开启 keepalive 长连接;
- PHP-FPM 优化:根据服务器 CPU 和内存调整 pm 参数,开启 opcache 缓存 PHP 脚本,减少重复编译;
- MySQL 优化:开启慢查询日志、优化数据库索引、配置主从复制实现读写分离、使用 Redis 缓存热点数据;
- LNAMP 优化:配置 Nginx 的缓存策略、开启 Apache 的 PHP 缓存、使用内网通信提升 Nginx 与 Apache 的转发速度;
- 安全优化:开启防火墙并仅开放 80/443 端口、配置 HTTPS(Let's Encrypt 免费证书)、定期更新系统和软件版本、对 PHP 脚本进行防注入处理。
4.3 拓展方向
掌握本次实战内容后,可进一步学习:
- LNMP/LNAMP 架构的高可用部署(Keepalived 实现 Nginx 主备);
- 容器化部署(Docker+Docker Compose 编排 LNMP/LNAMP 容器);
- 分布式架构(Nginx 负载均衡多台 Apache 服务器);
- 监控运维(Prometheus+Grafana 监控 Nginx/PHP-FPM/MySQL 状态)。
本次实战的所有步骤均经过验证,可直接在测试环境复用,生产环境需根据实际业务调整参数和配置。希望本文能帮助大家快速掌握 LNMP/LNAMP 架构的部署和优化,打造高性能、高可用的 Web 应用环境