Skip to content

11.4 后端部署 ​

概述

后端是单二进制:make build 产出可执行文件,配合配置与环境变量运行。生产用进程守护(systemd)+ Nginx 反代,容器场景见 11.6 Docker 生产部署。

构建 ​

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 告警)

相关 ​

小蚂蚁云团队 · 提供技术支持