🚀 deploy(build): 新增一键部署脚本与构建工具链

- 新增 deploy.sh:编译部署、systemd/Nginx 初始化、软链接版本管理与交互式回滚、部署后 /healthz 健康自检、certbot 自动申请 HTTPS 证书与续期重载 Hook
- 新增 .deploy.env.example 部署配置模板,.deploy.env(不入库)覆盖脚本默认值,路径默认由 APP_NAME 派生,CERT_EMAIL 默认 admin@域名
- 新增 Makefile:build / build-linux 交叉编译 / test(含 go vet)/ clean
- main.go 新增 Version/BuildTime 变量,使 -ldflags -X 注入生效并在启动日志打印
- systemd 工作目录改为代码目录,修复 config.yaml/.env/cache.db 相对路径加载失败
- .gitignore 忽略 .deploy.env 与 fanqie-* 编译产物;README 新增部署章节与 HTTPS 说明
This commit is contained in:
chenxin committed 2026-10-09 15:49:02 +08:00
1 parent 6a473aea3e
commit 7da9184937
6 files changed
+506 -1

No files matched your search

+30
View File
@@ -395,6 +395,36 @@ cp .env.example .env
失败响应不缓存;评论类接口为动态数据,不缓存。
## 部署
### Linux 服务器(deploy.sh 一键部署)
```bash
# 首次:编译 + 部署 + 写入 systemd/nginx 配置
./deploy.sh v1.0.0 --init
# 日常:拉取代码 + 编译 + 部署 + 重启
./deploy.sh v1.0.0
# 版本管理
./deploy.sh --list # 列出已部署版本
./deploy.sh --rollback v1.0.0 # 回滚到指定版本
# 服务运维
sudo systemctl status fanqie
sudo journalctl -u fanqie -f
```
部署结构:二进制存于 `/opt/fanqie/bin/`,`fanqie-current` 软链接指向当前版本(保留最近 5 个),systemd 守护 + Nginx 反代,部署后自动做 `/healthz` 健康检查。
首次 `--init` 时若服务器装有 certbot,会自动申请 HTTPS 证书并配置 80→443 跳转(邮箱默认 `admin@域名`,可用 `.deploy.env` 的 `CERT_EMAIL` 覆盖);续期由 `certbot.timer` 自动完成,续期后经 deploy-hook 重载 Nginx。
### 本地交叉编译
```bash
make build-linux VERSION=v1.0.0 # 产物 fanqie-v1.0.0-linux,scp 到服务器即可运行
```
## 技术栈
- **Go 1.25** - 编程语言