deerflow-code/nginx-1.28-deployment/DEPLOY.md
2026-09-07 18:24:55 +08:00

3.0 KiB
Raw Permalink Blame History

Nginx 1.28 一键部署包

该目录用于在安装了 Docker 的 Linux 服务器上一键部署 Nginx 1.28。默认公网端口为 80,映射关系为 80:80,容器名为 nginx-1.28。

文件说明

  • Dockerfile:以官方 nginx:1.28 为基础镜像构建本地镜像 nginx-oneclick:1.28。
  • build-image.sh:构建镜像并导出为 nginx-oneclick-1.28.tar.gz,用于离线分发。
  • deploy.sh:加载镜像包(或自动构建),创建/启动容器并进行 HTTP 验证。
  • docker-compose.yml:可选的 Compose 部署方式。
  • nginx-oneclick-1.28.tar.gz:如果随包提供,则优先离线加载,不需要访问 Docker Hub。

一键部署

将整个目录复制到目标服务器后执行:

cd nginx-1.28-deployment
chmod +x build-image.sh deploy.sh
./deploy.sh

部署脚本的行为是幂等的:

  1. 如果目录中有镜像压缩包,优先执行 docker load。
  2. 没有镜像包但本机已有镜像时直接复用。
  3. 两者都没有时,以 Dockerfile 自动构建并拉取 nginx:1.28 基础镜像。
  4. 创建或启动 nginx-1.28,设置 unless-stopped 自动重启。
  5. 访问 http://服务器公网IP/ 做 HTTP 检查。

构建并导出离线镜像

在可访问 Docker Hub 的 Docker 主机执行:

./build-image.sh

生成的 nginx-oneclick-1.28.tar.gz 和 .sha256 文件可以与脚本一起复制到无外网服务器。脚本会自动加载该镜像包。

本次服务器上的离线镜像包已生成在:

/opt/nginx-1.28-deployment/nginx-oneclick-1.28.tar.gz

对应 SHA-256:d322ba812dcd3e89fb8c0afd14f27e79e73432f7bc5a5a52324a0ca67e784014。

端口和容器名

默认配置:

公网地址:http://服务器公网IP/
主机端口:80
容器端口:80
容器名:nginx-1.28

如 80 端口已被占用,可临时改用主机端口 8080:

NGINX_HOST_PORT=8080 ./deploy.sh

此时访问 http://服务器公网IP:8080/。如要更换容器名:

NGINX_CONTAINER_NAME=nginx-prod ./deploy.sh

已存在容器的处理

脚本不会默认删除或覆盖同名但配置不同的容器。确认要重建时显式执行:

FORCE_RECREATE=1 ./deploy.sh

该操作会删除并重新创建 NGINX_CONTAINER_NAME 指定的容器,不会删除镜像。

Compose 部署(可选)

docker compose up -d --build
docker compose ps
curl -I http://127.0.0.1/

常用运维命令

docker ps --filter name=nginx-1.28
docker logs --tail 100 nginx-1.28
docker exec nginx-1.28 nginx -v
docker restart nginx-1.28
docker stop nginx-1.28

安全与公网访问检查

只映射 HTTP 端口时,服务器防火墙/云安全组需要允许 TCP 80(或自定义的 NGINX_HOST_PORT)。部署脚本只负责 Docker 端口发布,不会修改云厂商安全组规则。

不要把 SSH 密码、私钥或生产配置写入该目录。若通过 SSH 远程部署,请使用密钥或交互式认证,并在密码已经暴露后及时轮换。