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 与发布打包脚本
This commit is contained in:
@@ -77,14 +77,15 @@ opendance-web/
|
||||
│ └── open-source-credits.md # 开源声明锚点(三端共用)
|
||||
├── web-server/ # NestJS 服务端
|
||||
│ ├── src/ # 源码(entities / modules / preprocess)
|
||||
│ ├── admin/ # React 管理端(构建上下文)
|
||||
│ ├── admin/ # React 管理端
|
||||
│ ├── test/ # 单元测试 + 端到端冒烟
|
||||
│ ├── scripts/ # migrate.mjs / check-contracts.mjs
|
||||
│ └── Dockerfile
|
||||
├── deploy/ # ★ 部署(不含 MySQL)
|
||||
│ ├── docker-compose.yml
|
||||
│ ├── install.sh
|
||||
│ └── .env.example
|
||||
│ └── scripts/ # migrate.mjs / check-contracts.mjs / check-routes.mjs
|
||||
├── deploy/ # ★ Linux 原生站点部署(不含 MySQL)
|
||||
│ ├── install.sh # 一键部署(systemd + nginx)
|
||||
│ ├── uninstall.sh
|
||||
│ ├── .env.example
|
||||
│ ├── systemd/opendance-api.service
|
||||
│ └── nginx/opendance.conf
|
||||
├── scripts/package-release.sh # 发布产物打包
|
||||
└── THIRD_PARTY.md
|
||||
```
|
||||
@@ -92,6 +93,7 @@ opendance-web/
|
||||
## 6. 硬性约束
|
||||
|
||||
1. **不部署 MySQL**。数据库为部署方提供的现有实例,连接信息只经环境变量注入。
|
||||
**也不使用 Docker**:以 nginx 站点 + systemd 服务的形式直接跑在 Linux 上。
|
||||
2. **`DB_SYNCHRONIZE` 生产必须为 `false`**,所有表结构变更走 migration;每个
|
||||
migration 必须可逆。
|
||||
3. **绝不把凭证写入仓库**。`.env` 已在 `.gitignore` 中,只提交 `.env.example`。
|
||||
|
||||
Reference in New Issue
Block a user