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

105 lines
3.0 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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。
## 一键部署
将整个目录复制到目标服务器后执行:
```bash
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 主机执行:
```bash
./build-image.sh
```
生成的 `nginx-oneclick-1.28.tar.gz` 和 `.sha256` 文件可以与脚本一起复制到无外网服务器。脚本会自动加载该镜像包。
本次服务器上的离线镜像包已生成在:
```text
/opt/nginx-1.28-deployment/nginx-oneclick-1.28.tar.gz
```
对应 SHA-256:`d322ba812dcd3e89fb8c0afd14f27e79e73432f7bc5a5a52324a0ca67e784014`。
## 端口和容器名
默认配置:
```text
公网地址:http://服务器公网IP/
主机端口:80
容器端口:80
容器名:nginx-1.28
```
如 80 端口已被占用,可临时改用主机端口 8080:
```bash
NGINX_HOST_PORT=8080 ./deploy.sh
```
此时访问 `http://服务器公网IP:8080/`。如要更换容器名:
```bash
NGINX_CONTAINER_NAME=nginx-prod ./deploy.sh
```
## 已存在容器的处理
脚本不会默认删除或覆盖同名但配置不同的容器。确认要重建时显式执行:
```bash
FORCE_RECREATE=1 ./deploy.sh
```
该操作会删除并重新创建 `NGINX_CONTAINER_NAME` 指定的容器,不会删除镜像。
## Compose 部署(可选)
```bash
docker compose up -d --build
docker compose ps
curl -I http://127.0.0.1/
```
## 常用运维命令
```bash
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 远程部署,请使用密钥或交互式认证,并在密码已经暴露后及时轮换。