一键部署LNMP的核心是构建可重复、可回溯、可调试的自动化流程,涵盖环境准备、依赖解析、源码编译、服务注册、启动验证五环节,强调依赖明确、参数适配、systemd规范及失败拦截。

一键部署LNMP(Linux + Nginx + MySQL + PHP)的核心不是“写一个万能脚本”,而是把环境准备、依赖解析、源码编译、服务注册、启动验证这五个环节串成可重复、可回溯、可调试的自动化流程。关键在于:依赖必须提前明确,编译参数要适配系统,服务管理必须符合 systemd 规范,且每一步都要有失败拦截和状态反馈。
先确保基础环境可用
脚本开头必须做三件事:检查网络模式(NAT/仅主机)、自动配置 yum 源、关闭干扰项。比如检测能否 ping 通 baidu.com,能则用阿里云在线源;不能则挂载光盘并启用本地 repo。同时停用 firewalld 和 SELinux:
- 执行 systemctl stop firewalld && systemctl disable firewalld
- 执行 setenforce 0 && sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config
- 运行 yum clean all && yum makecache 确保仓库就绪
统一安装所有底层依赖包
LNMP 各组件共用大量开发库,一次性装全比分散安装更可靠。典型依赖包括:
- 编译工具链:gcc、gcc-c++、make、cmake、autoconf、automake
- Nginx 所需:pcre-devel、zlib-devel、openssl-devel
- MySQL 所需:ncurses-devel、bison、boost(部分版本需单独解压)
- PHP 所需:libxml2-devel、curl-devel、libjpeg-devel、freetype-devel、libpng-devel、bzip2-devel、libxslt-devel
建议用单条 yum 命令批量安装,并用 $? 判断是否成功,失败直接 exit 并提示缺失项。
分模块编译安装,每个组件独立函数封装
把 Nginx、MySQL、PHP 分成三个函数,各自完成用户创建、源码解压、configure 配置、make 编译、install 安装、路径软链、systemd 服务文件生成、开机启用等动作。例如 Nginx 模块中:
- 创建专用用户:useradd -M -s /sbin/nologin nginx
- configure 参数要指定用户组、PID 文件路径、启用必要模块(如 stub_status、ssl、realip),禁用无关模块(如 mail)
- 服务文件写入 /usr/lib/systemd/system/nginx.service,含 ExecStartPre=/usr/local/nginx/sbin/nginx -t 做配置校验
- 最后执行 systemctl daemon-reload && systemctl enable --now nginx
MySQL 和 PHP 同理,注意 MySQL 的 cmake 参数(如 -DDEFAULT_CHARSET=utf8mb4)、PHP 的 ./configure 中要指定 --with-mysqlnd、--enable-fpm、--with-openssl 等关键选项。
自动处理组件间依赖与启动顺序
LNMP 不是并行启动,而是有强依赖关系:MySQL 必须先于 PHP 启动,PHP-FPM 必须先于 Nginx 启动(因 Nginx 需 proxy_pass 到 127.0.0.1:9000)。脚本中应按序调用:
- 先 install_mysql → systemctl enable --now mysqld
- 再 install_php → systemctl enable --now php-fpm
- 最后 install_nginx → systemctl enable --now nginx
可在 Nginx 启动前加检查:systemctl is-active --quiet php-fpm && systemctl is-active --quiet mysqld,任一不满足则报错退出。还可加入简单验证,如 curl -I http://127.0.0.1 返回 200 或访问 phpinfo 页面成功。











