Skip to content

部署主服务器

主服务器是 CatPull 的核心后端服务,提供 API 接口、用户认证、项目管理等功能。

属性
技术栈Express + Sequelize + TypeScript
默认端口9090
数据库MySQL >= 5.7
源码目录catpull-v3-server/server

安装依赖

bash
cd catpull-v3-server/server
npm install

配置环境变量

复制环境变量模板并填写实际值:

bash
cp .env.example .env

编辑 .env 文件,关键配置项如下:

env
# 运行环境
APP_ENV=production

# 服务端口
PORT=9090

# 管理员邮箱
APP_ADMIN_USER=admin@example.com

# MySQL 数据库
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=catpull-v3
DB_USERNAME=root
DB_PASSWORD=your_db_password

# JWT 密钥
JWT_SALT=your_jwt_salt
JWT_SECRET=your_jwt_secret
JWT_EXPIRES_IN=7

# 腾讯云 COS 对象存储
COS_SECRET_ID=your_cos_secret_id
COS_SECRET_KEY=your_cos_secret_key
COS_BUCKET=your_cos_bucket
COS_REGION=ap-guangzhou

# SMTP 邮件服务
SMTP_HOST=smtp.example.com
SMTP_PORT=465
SMTP_SECURE=true
SMTP_AUTH_USER=your_email@example.com
SMTP_AUTH_PASS=your_smtp_password
SMTP_FROM=<your_email@example.com>
SMTP_TOKEN_URL=https://your-domain.com/login

# 云函数服务地址
CLOUD_SERVICE_URL=http://127.0.0.1:3001

# 设计器地址
DESIGNER_SERVICE_URL=https://your-domain.com/

# 二维码存储路径
QRCODE_DIR=./uploads/qrcode

# 微信小程序配置(用于生成小程序码)
WECHAT_APP_ID=your_wechat_appid
WECHAT_APP_SECRET=your_wechat_appsecret
WECHAT_PATH_URL=pages/render/index

环境变量说明

变量必填说明
APP_ADMIN_USER管理员邮箱,该账号拥有全局项目访问权限
JWT_SALT / JWT_SECRETJWT 签名密钥,建议使用随机字符串
JWT_EXPIRES_INJWT 有效期(天),默认 7 天
COS_SECRET_ID / COS_SECRET_KEY腾讯云 COS 对象存储凭证
WECHAT_APP_ID / WECHAT_APP_SECRET微信小程序配置,不配置则无法生成小程序码

初始化数据库

主服务器启动时会自动连接 MySQL 并同步表结构(sequelize.sync({ alter: true })),无需手动建表。只需确保:

  • MySQL 服务已启动
  • .env 中的数据库连接信息正确
  • 数据库 catpull-v3 已创建
sql
CREATE DATABASE IF NOT EXISTS `catpull-v3` CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

编译并启动

bash
# 编译 TypeScript
npm run build

# 生产模式启动
npm start

验证服务是否正常:

bash
curl http://localhost:9090/api/auth/health

进程守护

生产环境建议使用 PM2 管理进程:

bash
npm install -g pm2
pm2 start dist/index.js --name catpull-server
pm2 save
pm2 startup

常见问题

数据库连接失败

  1. 确认 MySQL 服务已启动:systemctl status mysql
  2. 确认 .env 中的 DB_HOSTDB_PORTDB_USERNAMEDB_PASSWORD 正确
  3. 确认数据库已创建:mysql -u root -p -e "SHOW DATABASES LIKE 'catpull-v3';"