zijunchiang
|
44451028dd
|
fix(deploy): 安装脚本按真实 HOST 报告监听地址,并主动提示外部不可达
背景:旧版 .env.example 的 HOST=127.0.0.1 会让服务只监听回环,
本机 curl 一切正常、安装日志毫无异常,但外部永远连不上。
install.sh 修复:
- 不再写死 API_HOST=127.0.0.1:从 deploy/.env 读 HOST 得到 BIND_HOST,
绑定具体网卡时用该地址做健康检查(原来用回环会误判启动失败)
- 汇总输出改为真实监听地址 + 按三种绑定模式给出正确 URL
(回环写 127.0.0.1、具体网卡写该地址、通配写探测到的对外 IP)
- 新增安装期外部可达性自测:用对外 IP 请求 /health,
只监听回环 → 打印改 HOST 与重启命令;
监听正常但自测失败 → 打印防火墙 / 云安全组放行步骤
- 反代提示里回显当前 HOST 实际值,避免照抄"建议 127.0.0.1"改坏配置
README.txt 同步说明。验证:用真实脚本片段 + 打桩跑四种场景
(回环 / 通配可达 / 通配被防火墙拦 / 指定网卡),输出逐一核对。
|
2026-09-15 01:48:04 +08:00 |
|
zijunchiang
|
34c5040e6b
|
feat(deploy): 新增外部访问诊断脚本 check-access.sh
"服务已启动但外部访问不了"时一次性定位原因,只读诊断、不改配置:
- 读出 .env 的 HOST/PORT,并对 127.0.0.1 这种只监听回环的配置直接报错
- 检查实际监听地址(ss/netstat),区分通配与仅回环
- 回环 + 对外 IP 两次 /health 自测(用 ip route get 取真实出口 IP)
- 检查 80/443 上有没有反向代理,并说明本项目不部署反代
- 检查 firewalld / ufw / iptables 对端口的放行情况,给出修复命令
- 结尾按"直连后端"与"经反代"两条路径给出结论
同时更新 README.txt、deploy/proxy/README.md(新增第八节:还没有反代时
如何直连后端)与打包校验清单。
|
2026-09-15 01:43:35 +08:00 |
|
zijunchiang
|
8c76b0a599
|
feat(web): 移除 Docker 与反代部署,改为 Linux 业务服务并自带管理端托管
需求变更:Web 端只保留业务需求,反向代理交由另外的服务处理,
本项目仅提供 IIS / nginx 反代说明文档,不部署反代。
主要改动:
- web-server: 新增管理端静态托管(ADMIN_DIR、SPA 深链接回退),
反代因此只需一条全匹配转发规则;新增 adminDir 配置项
- deploy/install.sh: 删除 nginx 安装与站点配置逻辑,改为原生 Linux
服务部署(systemd → OpenRC → SysVinit → 后台进程四级降级),
打印反代交接指引
- deploy/ctl.sh: 启停/状态/日志脚本
- deploy/proxy/: 新增反代说明文档(README.md、nginx.conf.example、
web.config.example),标注上传上限与超时必须同步调整
- 删除 deploy/nginx/、web-server/admin/nginx.conf、Dockerfile、
docker-compose.yml、.dockerignore
- scripts/package-release.sh: 锚定排除规则 + 产物完整性校验
- 文档同步:README.txt、DSH.md、project.yaml、tasks/008、tasks/010
|
2026-09-15 01:25:19 +08:00 |
|
zijunchiang
|
c092b833fb
|
fix(deploy): 支持无 systemd 的环境,并修复降级路径的两个真实缺陷
用户实测:服务器没有 systemctl,install.sh 直接报错退出。
原错误信息本身也是错的(建议 SKIP_NGINX=1,但那只跳过 nginx,仍走 systemctl)。
进程管理改为四层降级:
systemd → OpenRC → SysVinit → nohup 后台进程(deploy/ctl.sh)
- 新增 deploy/ctl.sh:start/stop/restart/status/logs,PID 文件 + 进程名双重判定
- 新增 deploy/openrc/opendance-api、deploy/initd/opendance-api
- 无 init 系统时写 crontab @reboot 实现开机自启
- uninstall.sh 同步支持四种模式清理(原先只处理 systemd,会留下运行中的进程)
- 汇总输出按实际初始化系统给出对应运维命令
测试中发现并修复降级路径的两个真实缺陷:
1. nohup 无法调用 shell 函数
实测退出码 127 且什么都不执行
(nohup 是外部命令,只能执行可执行文件)。
这会让无 systemd 的降级路径完全失效——服务根本起不来。
改为按 runuser / setpriv / su 显式拼接成外部命令后再 nohup。
另加启动后 1 秒存活检测,失败立即打印日志,不再白等 30 秒。
2. find_pids 在无进程时返回一个空格
在空输入下仍会执行一次 echo,输出空行,
最终得到 " ";调用方 [ -n ... ] 会判为「有进程」,
导致 start 直接跳过、status 谎报运行中。改为纯 bash 拼接,空时返回空串。
实测(真实 API 进程,端口 3100):
start → 健康检查 200,PID 正确
重复 start → 识别已在运行,进程数保持 1
status → 运行中
restart → 新 PID,健康检查 200
stop → 无残留进程,端口释放
无 process 时 find_pids 返回空串,is_running=false
|
2026-09-15 00:34:52 +08:00 |
|
zijunchiang
|
75498db1c0
|
feat(web): 部署方式由 Docker 改为 Linux 原生站点(nginx + systemd)
需求变更:Web 服务端不再使用 Docker,改为直接运行在 Linux 上的网站。
- 移除 deploy/docker-compose.yml、web-server/Dockerfile、
web-server/admin/Dockerfile、web-server/.dockerignore
- 新增 deploy/install.sh:建服务用户与目录 → 装运行期依赖 → 迁移
→ 注册 systemd 服务 → 配置 nginx 站点 → 健康检查,一键完成
- 新增 deploy/systemd/opendance-api.service:ProtectSystem=strict 等
安全加固,ReadWritePaths 限定为上传目录
- 新增 deploy/nginx/opendance.conf:同站点托管管理端静态资源 +
反代 /api /health /static,client_max_body_size 512m,SPA 回退
- 新增 deploy/uninstall.sh:默认保留数据,--purge 才删除
- 新增配置项 HOST(AppConfig.bindHost):原生部署下 Node 只监听
127.0.0.1,不直接对外暴露,实测外部 IP 不可达
- 同步更新 contracts/rest-api.yaml、DSH.md、project.yaml、README.txt、
tasks/008、tasks/010 与发布打包脚本
|
2026-09-14 22:42:56 +08:00 |
|
zijunchiang
|
b9215d4190
|
docs(web): 任务说明、DSH 约束与交付文档
|
2026-09-14 19:00:55 +08:00 |
|