nginx一键编译安装脚本自动化完成下载、校验、配置、编译、安装及systemd服务注册,内置依赖检查、路径保护、镜像切换、模块定制与权限初始化。

编写 Nginx 源码一键编译安装的 Shell 脚本,核心是把手动执行的下载、解压、配置、编译、安装、启动等步骤自动化,并加入必要判断和错误处理,确保可重复、可移植、可维护。
明确安装路径与依赖检查
脚本开头应定义安装目录(如 /usr/local/nginx)、源码版本、临时构建路径,并检查系统是否已安装编译所需工具(gcc、make、pcre-devel、zlib-devel、openssl-devel)和用户权限(建议用 root 或 sudo 运行)。
- 用 rpm -q 或 dpkg -l 检测关键依赖,缺失则提示或自动安装(CentOS 用 yum,Ubuntu 用 apt)
- 检查目标安装路径是否为空或已存在 Nginx,避免覆盖;可加 --force 参数控制是否清空旧安装
- 创建专用构建目录(如 /tmp/nginx-build),避免污染系统临时空间
自动下载并校验源码包
从官网(https://nginx.org/download/)获取指定版本 tar.gz 包,推荐使用 wget -c 支持断点续传,并用 sha256sum 校验完整性(Nginx 官网提供对应 .sha256 文件)。
- 示例:下载 nginx-1.24.0.tar.gz 后,同步下载 nginx-1.24.0.tar.gz.sha256,用 sha256sum -c 验证
- 若校验失败,自动退出并提示“源码包损坏,请检查网络或重试”
- 支持自定义下载镜像(如清华源)提升国内速度,通过变量 NGINX_MIRROR 控制
配置参数灵活可调
configure 命令是关键,脚本应将常用模块设为默认开启(如 http_ssl_module、http_v2_module、http_gzip_static_module),同时允许用户通过环境变量或命令行参数覆盖,比如:
- NGINX_USER=www → 添加 --user=www --group=www
- ENABLE_LUACORE=yes → 自动检测 openresty 的 luajit 路径并启用 --add-module=...
- 禁用不必要模块(如 --without-http_scgi_module)减小体积,提升安全性
编译安装与服务注册一体化
make -j$(nproc) 加速编译后,执行 make install。接着生成 systemd service 文件(/etc/systemd/system/nginx.service),设置开机自启,并验证配置语法、尝试启动服务。
- service 文件需包含 Type=forking、PIDFile 和 ExecStartPre=/usr/local/nginx/sbin/nginx -t 确保配置正确才启动
- 安装完成后自动运行 nginx -V 输出版本与编译参数,确认安装成功
- 可选:备份原系统 nginx(如有),软链接 /usr/bin/nginx 到新安装路径,方便全局调用
不复杂但容易忽略的是权限管理与日志目录初始化——脚本应在安装后自动创建 /usr/local/nginx/logs 并赋权给运行用户,避免启动时报错。











