Nginx Docker 一键安装脚本说明(生产级)

0 阅读4分钟

脚本:install-nginx-docker.sh

场景:Linux 服务器快速部署生产可用的 Nginx Docker 环境

本文只聚焦脚本本身:它做了什么、怎么执行、会生成什么、冲突怎么处理。


先看运行效果

Only Code Editor (1).png

01. 脚本能解决什么问题

install-nginx-docker.sh 面向生产环境,核心目标是把 Nginx Docker 的部署流程变成一次执行:

  • 自动完成环境检查
  • 未安装 Docker 时自动安装
  • 自动生成 Nginx 配置与站点文件
  • 自动启动容器并做健康检查
  • 生成后续运维管理脚本

02. 基本信息

  • 脚本版本:v1.0.0
  • 支持系统:Ubuntu / Debian / CentOS / Rocky / AlmaLinux / Fedora
  • 部署方式:Docker + Docker Compose
  • 默认安装目录:/opt/nginx
  • 默认服务端口:80

03. 执行前要求

  1. 使用 root 权限(或 sudo)执行
  2. 系统属于脚本支持的 Linux 发行版
  3. 服务器可联网(安装 Docker、拉取镜像)
  4. 可用磁盘空间不少于 500MB
  5. 默认端口 80 可用,或允许脚本尝试释放占用

04. 执行命令与参数

关注公众号:IT安装手册,回复:nginx脚本

4.1 执行命令

# 1. 下载脚本上传到Linux服务器,创建文件:install-nginx-docker.sh  
# 2. 执行如下命令  
chmod +x install-nginx-docker.sh  
sudo install-nginx-docker.sh

4.2 参数说明

  • -y / --yes / --non-interactive:非交互模式(按默认策略执行)
  • --force-systemd-cgroup:强制写入 native.cgroupdriver=systemd
  • --no-systemd-cgroup:不写入 native.cgroupdriver=systemd
  • -h / --help:查看帮助信息

05. 默认配置(关键项)

  • NGINX_VERSION="latest":Nginx 镜像版本
  • CONTAINER_NAME="nginx-prod":容器名称
  • HTTP_PORT=80:对外 HTTP 端口
  • BASE_DIR="/opt/nginx":安装根目录
  • CONF_DIR="/opt/nginx/conf.d":站点配置目录
  • HTML_DIR="/opt/nginx/html":静态页面目录
  • SCRIPT_LOG="/var/log/nginx-docker-install.log":安装日志文件(不可写时回退 /tmp

06. 完整执行流程(9 步)

  1. 环境预检:检查 root 权限、系统类型、架构、磁盘空间、端口
  2. 安装 Docker:未安装则自动安装 Docker Engine 与 Compose 插件
  3. 配置镜像加速:仅在 Docker 未预装时写入国内镜像加速配置
  4. 创建目录结构:初始化 /opt/nginx 相关目录
  5. 生成 Nginx 主配置:输出 nginx.conf
  6. 生成默认站点文件:输出 default.confindex.html404.html
  7. 生成 Compose 文件:输出 docker-compose.yml
  8. 启动容器:拉取镜像、预检配置、启动并等待健康检查
  9. 生成管理脚本:输出 nginx-ctl.sh,并软链接到 nginx-ctl

07. 生成目录与文件

7.1 目录

  • /opt/nginx/conf.d
  • /opt/nginx/html
  • /opt/nginx/cache

7.2 文件

  • /opt/nginx/nginx.conf
  • /opt/nginx/conf.d/default.conf
  • /opt/nginx/html/index.html
  • /opt/nginx/html/404.html
  • /opt/nginx/docker-compose.yml
  • /opt/nginx/nginx-ctl.sh
  • /etc/docker/daemon.json(可能创建或更新)
  • 安装日志文件:/var/log/nginx-docker-install.log(或 /tmp/nginx-docker-install.log

08. 冲突处理机制

8.1 端口被占用(默认 80)

  • 交互模式:可选“终止占用进程并继续”或“退出安装”
  • 非交互模式:默认尝试自动释放端口;失败则退出

8.2 同名容器冲突(nginx-prod

  • 交互模式:可选“删除旧容器”“重命名旧容器”“退出安装”
  • 非交互模式:默认安全退出

8.3 已有相同镜像容器在运行

  • 脚本会提示是否暂停正在使用同镜像的容器
  • 脚本退出时会尝试恢复此前暂停的容器

09. Nginx 与容器配置要点

9.1 Nginx

  • 启用 gzip 压缩
  • 内置常见安全响应头
  • 内置请求/连接限制(limit_reqlimit_conn
  • 日志默认写入容器 stdout/stderr

9.2 容器(Compose)

  • restart: unless-stopped
  • 健康检查:nginx -t
  • CPU/内存资源限制
  • 最小权限策略(cap_drop + 必要 cap_add
  • 日志滚动策略(json-file)

10. 安装后可直接使用的管理命令

  • nginx-ctl start:启动容器
  • nginx-ctl stop:停止容器
  • nginx-ctl restart:重启容器
  • nginx-ctl reload:检测并热重载 Nginx 配置
  • nginx-ctl status:查看容器状态
  • nginx-ctl logs:查看容器日志
  • nginx-ctl test:测试 Nginx 配置
  • nginx-ctl update:更新镜像并重建容器
  • nginx-ctl shell:进入容器
  • nginx-ctl backup:备份安装目录

11. 日志与错误处理说明

  • 脚本执行过程会写入安装日志
  • 出错时会提示错误位置并中止
  • 对部分常见启动问题(如日志权限异常)有自动修复尝试
  • 脚本退出时会尝试恢复之前暂停的容器

后续我会整理出 nginx避坑和实践系列文章,敬请期待!

更多详细内容