脚本:
install-nginx-docker.sh场景:Linux 服务器快速部署生产可用的 Nginx Docker 环境
本文只聚焦脚本本身:它做了什么、怎么执行、会生成什么、冲突怎么处理。
先看运行效果
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. 执行前要求
- 使用
root权限(或sudo)执行 - 系统属于脚本支持的 Linux 发行版
- 服务器可联网(安装 Docker、拉取镜像)
- 可用磁盘空间不少于
500MB - 默认端口
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 步)
- 环境预检:检查 root 权限、系统类型、架构、磁盘空间、端口
- 安装 Docker:未安装则自动安装 Docker Engine 与 Compose 插件
- 配置镜像加速:仅在 Docker 未预装时写入国内镜像加速配置
- 创建目录结构:初始化
/opt/nginx相关目录 - 生成 Nginx 主配置:输出
nginx.conf - 生成默认站点文件:输出
default.conf、index.html、404.html - 生成 Compose 文件:输出
docker-compose.yml - 启动容器:拉取镜像、预检配置、启动并等待健康检查
- 生成管理脚本:输出
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_req、limit_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避坑和实践系列文章,敬请期待!
更多详细内容
- 个人博客:itinstall.dev
- 公众号:IT安装手册