部署主服务器
主服务器是 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_SECRET | ✅ | JWT 签名密钥,建议使用随机字符串 |
JWT_EXPIRES_IN | ✅ | JWT 有效期(天),默认 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常见问题
数据库连接失败
- 确认 MySQL 服务已启动:
systemctl status mysql - 确认
.env中的DB_HOST、DB_PORT、DB_USERNAME、DB_PASSWORD正确 - 确认数据库已创建:
mysql -u root -p -e "SHOW DATABASES LIKE 'catpull-v3';"
