Debian LNMP集群搭建指南
导读:架构与前置准备 架构建议:至少准备2台Web节点(运行 Nginx + PHP-FPM)、2台数据库节点(运行 MariaDB/MySQL 主从复制)、1–2台负载均衡/高可用节点(运行 Nginx/HAProxy,可叠加 Keepali...
架构与前置准备
- 架构建议:至少准备2台Web节点(运行 Nginx + PHP-FPM)、2台数据库节点(运行 MariaDB/MySQL 主从复制)、1–2台负载均衡/高可用节点(运行 Nginx/HAProxy,可叠加 Keepalived VIP)。Web节点与应用文件需保持一致(共享存储或代码同步)。
- 系统与源:以 Debian 12(bookworm) 为例,建议先配置国内镜像源并更新系统;安装常用工具(如 chrony 做时间同步)。
- 基础安全:启用防火墙(如 ufw),仅开放 SSH/HTTP/HTTPS;SSH 使用密钥登录、禁用 root 远程登录;数据库执行安全初始化。
- 版本选择:Debian 12 仓库通常提供 PHP 8.2,组件安装命令与路径以该版本为主(如 php8.2-fpm)。
单节点LNMP部署步骤
- 安装组件(Debian 12 示例):
- Nginx:
sudo apt install nginx -y & & sudo systemctl enable --now nginx - MariaDB:
sudo apt install mariadb-server -y & & sudo systemctl enable --now mariadb & & sudo mysql_secure_installation - PHP 8.2(按需增减扩展):
sudo apt install php8.2 php8.2-fpm php8.2-mysql php8.2-gd php8.2-curl php8.2-mbstring php8.2-xml php8.2-zip php8.2-opcache -y
- Nginx:
- 配置 Nginx 处理 PHP:编辑站点配置(如 /etc/nginx/sites-available/default)
- 关键片段:
server { listen 80 default_server; root /var/www/html; index index.php index.html; location / { try_files $uri $uri/ =404; } location ~ \.php$ { include snippets/fastcgi-php.conf; fastcgi_pass unix:/run/php/php8.2-fpm.sock; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } location ~ /\.ht { deny all; } } - 检查并重载:
sudo nginx -t & & sudo systemctl reload nginx
- 关键片段:
- 配置 PHP-FPM:编辑 /etc/php/8.2/fpm/pool.d/www.conf,确保监听为 /run/php/php8.2-fpm.sock;重启服务:
sudo systemctl restart php8.2-fpm - 验证:创建 /var/www/html/info.php(
< ?php phpinfo(); ?>),访问http://服务器IP/info.php应看到 PHP 信息页。
构建高可用集群
- 负载均衡(以 Nginx 为例):在 LB 节点配置 upstream 分发到后端 Web 节点
重载 Nginx 生效。也可使用 HAProxy 实现四层/七层负载均衡。http { upstream backend { server 10.0.0.11:80; server 10.0.0.12:80; } server { listen 80; location / { proxy_pass http://backend; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } } } - 数据库高可用(MariaDB 主从复制):
- 主库 my.cnf:启用
server-id=1、log_bin,创建复制用户并授权;记录SHOW MASTER STATUS的 File/Position。 - 从库 my.cnf:
server-id=2、relay_log,执行CHANGE MASTER TO ...指向主库,启动复制START SLAVE;。 - 读写分离可在应用或中间件层实现(从库仅读)。
- 主库 my.cnf:启用
- 故障转移与 VIP(Keepalived):在两台 LB 上部署 Keepalived,配置 VRRP 与 健康检查脚本(如检测 Nginx),实现 虚拟IP漂移,对外提供稳定入口。
- 会话与文件一致性:
- 会话保持:使用 Redis 集中存储 PHP Session,或在负载均衡开启 ip_hash/sticky(权衡可用性与均衡性)。
- 文件一致:使用 NFS/对象存储(如 S3 兼容) 或 rsync + inotify 做发布与同步,避免单点。
安全与稳定性加固
- 系统与网络:仅开放必要端口(如 22/80/443),使用 ufw 或云安全组;SSH 密钥登录、禁用 root 远程;关键节点间通信尽量走内网/VPC。
- 组件安全:Nginx 隐藏版本、限制请求方法、启用 TLS/HTTPS;PHP 关闭 expose_php,设置 open_basedir,开启 OPcache 并合理调优;数据库仅监听内网、限制来源、定期审计账号权限。
- 稳定性实践:保持系统与软件及时更新;配置合理的 worker_processes/连接数/缓存;启用 监控与日志分析(如 Prometheus + Grafana 采集 Nginx/PHP-FPM/DB 指标与日志),并建立定期备份与恢复演练。
部署与验证清单
- 基础连通:LB → Web(HTTP 200/301/302 符合预期);Web → DB(仅内网可达,账号权限正确)。
- 健康检查:后端宕机时自动摘除;恢复后自动回切;数据库复制 Seconds_Behind_Master≈0。
- 应用验证:登录/下单/上传等核心流程正常;静态资源与动态页面性能符合 SLO。
- 回滚预案:代码发布与数据库变更具备快速回滚路径;备份可一键恢复。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Debian LNMP集群搭建指南
本文地址: https://pptw.com/jishu/780266.html
