docs: 记录 Go 后端 supervisor 托管 (#2)

This commit is contained in:
ila
2026-09-10 19:55:14 +08:00
parent d7b6c6d609
commit cc17d1cce7
+11 -5
View File
@@ -2,8 +2,8 @@
generated: true (请先修改 Gitea Wiki,禁止直接编辑本文件)
wiki_page: Local-Development-and-Verification
wiki_url: https://git.ilapage.cn/OPC/lexgo/wiki/Local-Development-and-Verification.-
wiki_revision: 6724bc9e373e8b7a9a256253b9f4a35cd9ad4c9c
synchronized_at: 2026-09-10T11:37:57Z
wiki_revision: 440098c7120992b136eb2e192af211a871245df1
synchronized_at: 2026-09-10T11:54:37Z
<!-- gitea-wiki-mirror:end -->
# 本地开发与验证
@@ -139,7 +139,7 @@ test-integration 默认使用 lexgo_test_issue2,可由 LEXGO_TEST_DB_NAME/LEXG
## 本机 supervisor 启动实例(2026-09-10)
用户要求将两端开发服务接入 D:/supervisord。配置文件为 D:/supervisord/supervisord.conf,控制台为 http://127.0.0.1:9009。使用现有 supervisor 启动入口;两个实例随 supervisor 启动,并在意外退出后自动重启。这不代表已配置 Windows 开机启动,也不替代 #15 的生产部署。
用户要求将两端开发服务接入 D:/supervisord。配置文件为 D:/supervisord/supervisord.conf,控制台为 http://127.0.0.1:9009。使用现有 supervisor 启动入口;三个实例随 supervisor 启动,并在意外退出后自动重启。这不代表已配置 Windows 开机启动,也不替代 #15 的生产部署。
| 实例 | 工作目录 | 页面地址 | 日志 |
|---|---|---|---|
@@ -148,10 +148,16 @@ test-integration 默认使用 lexgo_test_issue2,可由 LEXGO_TEST_DB_NAME/LEXG
两端通过 C:/nodejs/node.exe 直接调用已经安装的 Vite / Vue CLI,启动时不安装依赖。学习端附带 --strictPort,避免端口冲突时自动换端口。管理端实例单独设置 npm_config_manage_package_manager_versions=false,防止 Vue CLI 编译后的 pnpm --version 检查触发全局 pnpm 自动下载指定版本而卡住;没有修改全局 pnpm 设置或项目锁文件。
通过控制台对 lexgo-learner / lexgo-admin 单独 Start、Stop、Restart。启用托管时不要再执行同端口的手动 dev 命令。更改配置前备份原文件;本次备份为 D:/supervisord/supervisord.conf.lexgo-20260910-193432.bak。该备份只在本机保存,不提交仓库。
通过控制台对 lexgo-learner / lexgo-admin / lexgo-api 单独 Start、Stop、Restart。启用托管时不要再执行同端口的手动 dev 命令。更改配置前备份原文件;本次备份为 D:/supervisord/supervisord.conf.lexgo-20260910-193432.bak。该备份只在本机保存,不提交仓库。
当前使用的 Go supervisord v0.6.8 重载可添加、移除实例,但现有实例对象不重新读取 command/environment。修改已有实例配置时,先停止目标实例,临时移除该节并重载,再加入新节并重载;不要重启整个 supervisor。回退本次接入时仅停止和移除上述两个实例,再重载,不覆盖随后新增的其他配置。
API 仍通过仓库根目录的 python scripts/server.py serve 启动,监听 127.0.0.1:8000;本次仅托管两个前端。登录需要 API 和本机 MySQL 正常运行。
用户随后确认将共用后端一起托管。新增 lexgo-api,工作目录 D:/opc_project/lexgo/server,命令 D:/opc_project/lexgo/server/lexgo.exe serve,监听 127.0.0.1:8000。日志为 D:/supervisord/lexgo-api_out.log、lexgo-api_err.log。已启用 autostart、autorestart,启动不执行迁移或 bootstrap。
supervisor 直接管理编译后的 Go 进程,运行时不调用 Python。数据库连接值从本机 .env.local 复制到该实例的 environment,仅保存在本机 supervisor 配置中,不包含 bootstrap 密码。今后数据库连接配置变化,需要同步更新两处本机配置并按下述方式重新创建实例;不要打印配置或提交 Git。API 仍依赖本机 MySQL。
修改后端源码后,从控制台停止 lexgo-api,在仓库根目录执行 python scripts/server.py build,再启动 lexgo-api。Windows 中运行的 exe 不能直接覆盖;如果构建失败,修复后重新构建成功再启动。Python 此时只是构建辅助脚本。手动 python scripts/server.py serve 仍可用于临时调试,但必须先停止托管实例,避免 8000 端口冲突。
后端交接验证:停止时 8000 端口释放,重新启动后 lexgo-api 为 Running、/healthz 返回 200,两端 /api/v1/me 均返回预期 401。原有 11 个实例(含两个前端)的 PID 与状态均未变化。
验证结果:两个实例均为 Running,两端首页 HTTP 200,未登录请求 /api/v1/me 经代理返回预期 HTTP 401;已有 9 个实例的状态和 PID 均未变化。已交接并停止之前的手动前端进程。