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
This commit is contained in:
2026-09-15 01:25:19 +08:00
parent 653d9d168c
commit 8c76b0a599
17 changed files with 581 additions and 244 deletions
+13 -2
View File
@@ -34,8 +34,9 @@ export class AppConfig {
}
/**
* 监听地址。原生部署(nginx 前置)时设为 127.0.0.1,
* 仅允许本机反代访问,不直接暴露 Node 进程。
* 监听地址。
* 反向代理与后端同机时建议设为 127.0.0.1(仅本机可访问);
* 代理在其他机器上时必须为 0.0.0.0,并用防火墙限制来源。
*/
get bindHost(): string {
return this.config.get<string>('bindHost') ?? '0.0.0.0';
@@ -45,6 +46,15 @@ export class AppConfig {
return this.config.get<string>('storageDir') ?? resolve(process.cwd(), 'storage');
}
/**
* 管理端静态站点目录。
* 本服务自带管理端页面,反向代理只需把请求整体转发到本端口即可,
* 不需要代理层再单独托管静态文件(见 deploy/proxy/README.md)。
*/
get adminDir(): string {
return this.config.get<string>('adminDir') || resolve(process.cwd(), '..', 'admin');
}
get uploadMaxBytes(): number {
return this.config.get<number>('uploadMaxBytes') ?? 512 * 1024 * 1024;
}
@@ -85,6 +95,7 @@ export const configuration = () => ({
port: Number(process.env.PORT ?? 3000),
bindHost: process.env.HOST ?? '0.0.0.0',
storageDir: process.env.STORAGE_DIR ?? resolve(process.cwd(), 'storage'),
adminDir: process.env.ADMIN_DIR ?? resolve(process.cwd(), '..', 'admin'),
uploadMaxBytes: Number(process.env.UPLOAD_MAX_BYTES ?? 512 * 1024 * 1024),
assimpBin: process.env.ASSIMP_BIN ?? 'assimp',
contractsDir: process.env.CONTRACTS_DIR ?? '',