构建与部署
参考工程支持的生产路径是:
预构建 monolith 二进制 + Linux 用户级 systemd + 外部 MySQL + 真实 SMTP
不是「在服务器上 git pull && go run」。
详细步骤以仓库为准:
docs/deployment.mddocs/release.mdscripts/release.shscripts/deploy-binary.sh.env.production.example
1. 发布包
在构建机:
sh scripts/release.sh
得到可上传的 release 归档(含二进制、迁移、必要资源)。
版本与校验以脚本输出为准。
2. 部署流程(概览)
- 将归档上传到 Linux 主机
- 解压到 versions 目录
- 配置/更新 user-level systemd 单元
- 在解压目录执行 migrate
- 切换
current符号链接 systemctl --user restart <service>
助手脚本可串联部分步骤:
sh scripts/deploy-binary.sh
部署参数常来自 .env.deploy.dev 或 DEPLOY_ENV_FILE。
典型路径变量
| 变量 | 含义示例 |
|---|---|
REMOTE_RELEASE_DIR | 发布根 |
REMOTE_VERSIONS_DIR | 各版本目录 |
REMOTE_CURRENT_LINK | 当前版本软链 |
REMOTE_SHARED_DIR | 共享数据/配置 |
REMOTE_ENV_FILE | 服务环境文件 |
常用运维命令
systemctl --user status <service-name>.service
systemctl --user restart <service-name>.service
journalctl --user -u <service-name>.service -f
开机无登录也要跑服务时:
sudo loginctl enable-linger <user>
3. 生产配置底线
从 .env.production.example 出发:
- 替换所有
REPLACE_WITH_* DATABASE_URL指向外部库EMAIL_DRIVER=smtp且 SMTP 真实可用- 显式设置唯一的
SNOWFLAKE_WORKER_ID(多实例不冲突) - 独立的
DATA_ENCRYPTION_ACTIVE_KEY,不要与JWT_SECRET混用 ADMIN_API_ENABLED=false,除非明确暴露并配齐鉴权