部署与运维
本页面详细介绍了 VTJ.PRO 平台的生产部署策略,包括运行 Vue 3 前端和 NestJS 后端所需的基础设施配置、使用 PM2 进行进程管理,以及用于生成分发版本的自动化打包脚本。
基础设施架构
VTJ.PRO 采用标准的全栈部署模型,其中反向代理(Nginx)负责处理 SSL 终止和静态资源服务,而进程管理器(PM2)确保 Node.js 后端持续运行。
Nginx 配置
Nginx 配置主要承担三个角色:
- 静态托管:从
frontend/dist目录提供编译后的前端文件。 - API 代理:将
/api/请求转发至 NestJS 后端(默认端口 3000)。 - SPA 路由:使用
try_files支持不同运行时(Web、H5、UniApp)的客户端路由。
请求路由流程
下图展示了 Nginx 如何根据 URL 路径路由传入流量:
Nginx 请求分发器
关键配置参数:
- 根目录:
/home/vtj-pro/frontend/dist - 客户端最大请求体大小:设为
10M以适应大型 DSL 或文件上传 - 代理头:Nginx 传递
X-Real-IP和X-Forwarded-For以确保后端能识别客户端 IP - SSL:配置为 TLS 1.2/1.3,证书位于
/home/app.vtj.pro_nginx/
进程管理(PM2)
NestJS 后端使用 PM2 进行管理,以实现高可用性、故障自动重启和日志管理。
服务执行
虽然代码库中没有专用的 ecosystem.config.js,但标准部署涉及运行编译后的主入口文件:
# 示例部署命令
pm2 start backend/dist/main.js --name "vtj-pro-api"
后端日志通常输出到 logs/ 或 _logs/ 目录,这些目录已被版本控制系统排除。
文件持久化
上传的文件和生成的项目 ZIP 包存储在 backend/uploadfiles/ 中。Nginx 配置通过 /uploadfiles/ 别名直接提供这些文件,以减少 Node.js 进程的负载。
发布打包与变体
平台提供了自动化生成生产就绪 ZIP 包的脚本。主要有两种部署变体:完整版 和 云版。
打包工作流
发布过程由 scripts/publish.mjs 处理(文档中提及),该脚本整合了前端构建、后端构建以及必要的模板。
代码到产物的映射
部署变体
| 变体 | 目标环境 | 描述 |
|---|---|---|
| 完整版 | 私有云 / 本地部署 | 包含所有依赖、本地存储驱动以及完整的模板库。 |
| 云版 | 托管式 SaaS | 针对云环境优化,通常依赖外部对象存储服务(OSS)而非本地的 uploadfiles。 |
环境配置
应用程序通过 .env 文件和 Vite 特定的模式文件区分开发环境和生产环境。
后端设置
后端使用环境变量配置:
- 数据库:MySQL 的连接字符串。
- 对象存储:阿里云/腾讯云存储的凭证。
- 安全:用于授权的
AUTH_CODE和 JWT 密钥。
前端设置
Vite 环境文件(如 .env.production)控制 VITE_API_URL 和 VITE_SDK_URL。在构建过程中,这些变量会被注入到 frontend/dist 的静态资源中。
运维维护
清理
为准备新的构建或部署,可使用 clean.mjs 脚本(文档中提及)清除构建产物和临时文件。
日志记录
日志生成位置如下:
- Nginx 访问/错误日志:
/var/log/nginx/ - 应用日志:位于部署目录根目录下的
logs/文件夹中。
安全加固
- Nginx:SSL 协议限制为 TLSv1.2 和 TLSv1.3。
- 文件权限:建议使用
www-data用户运行 Nginx。
参考资料
- 官方文档:vtj.pro/
- 在线平台:app.vtj.pro/
- 开源仓库:gitee.com/newgateway/…