# 11.4 后端部署 :::tip 概述 后端是单二进制:`make build` 产出可执行文件,配合配置与环境变量运行。生产用进程守护(systemd)+ Nginx 反代,容器场景见 [11.6 Docker 生产部署](/zh/deploy/docker.html)。 ::: ## 构建 ```bash make build # 编译到 bin/ make.bat build # Windows # 等价(压缩二进制) CGO_ENABLED=0 go build -ldflags="-s -w" -o bin/admin-server ./cmd/api ``` 交叉编译(Linux 服务器): ```bash GOOS=linux GOARCH=amd64 CGO_ENABLED=0 go build -ldflags="-s -w" -o bin/admin-server ./cmd/api ``` ## 运行所需文件 | 内容 | 说明 | |---|---| | 二进制 | bin/admin-server | | config/ | config.yaml(或纯环境变量覆盖) | | resource/ | ip2region 数据、验证码字体等运行资源 | | upload/ | 上传根目录(可挂载,需可写) | | log/ | 日志目录(可写) | ## systemd 示例 ```ini [Unit] Description=EasyGoAdmin After=network.target mysql.service redis.service [Service] EnvironmentFile=/etc/easygoadmin/.env WorkingDirectory=/opt/easygoadmin ExecStart=/opt/easygoadmin/bin/admin-server Restart=always RestartSec=5 [Install] WantedBy=multi-user.target ``` 优雅关闭由应用自身处理(SIGTERM 触发:停 HTTP → 停任务 → 关 DB → 关 Redis,在途请求上限 30s)——systemd 的 TimeoutStopSec 建议 ≥ 35s。 应用 http.Server 内置 `ReadHeaderTimeout: 10s`(防 Slowloris 慢速头攻击),无需在网关之外额外配置。 ## Nginx 反代要点 ```nginx location /api/ { proxy_pass http://127.0.0.1:8000; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } ``` 真实 IP 依赖 X-Forwarded-For:应用只信任 `api.proxyIps` 受信列表内的来源——Nginx 与应用同机/受信网段时才生效。 ## 上线验证 ```bash curl https://your-domain/api/health # 经 TLS 的健康检查 journalctl -u easygoadmin -f # 启动日志(应无 WireCheck 告警) ``` ## 相关 - [11.7 性能调优](/zh/deploy/performance.html) - [11.10 故障排查手册](/zh/deploy/troubleshooting.html)