2.1 KiB
2.1 KiB
11.4 后端部署
:::tip 概述
后端是单二进制:make build 产出可执行文件,配合配置与环境变量运行。生产用进程守护(systemd)+ Nginx 反代,容器场景见 11.6 Docker 生产部署。
:::
构建
make build # 编译到 bin/
make.bat build # Windows
# 等价(压缩二进制)
CGO_ENABLED=0 go build -ldflags="-s -w" -o bin/admin-server ./cmd/api
交叉编译(Linux 服务器):
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 示例
[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 反代要点
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 与应用同机/受信网段时才生效。
上线验证
curl https://your-domain/api/health # 经 TLS 的健康检查
journalctl -u easygoadmin -f # 启动日志(应无 WireCheck 告警)