- deploy-windows.bat: 一键部署脚本 (Node.js + PM2) - docker-windows.bat: Docker 一键部署脚本 - manage-windows.bat: 服务管理工具 (启动/停止/日志/自启) - check-env.bat: 环境检查工具 - uninstall.bat: 卸载清理工具 - WINDOWS_DEPLOY.md: Windows 部署完整文档
359 lines
5.5 KiB
Markdown
359 lines
5.5 KiB
Markdown
# Windows 部署指南
|
||
|
||
## 📦 快速开始
|
||
|
||
### 方法一:一键部署(推荐)
|
||
|
||
1. **双击运行** `deploy-windows.bat`
|
||
2. 按提示完成配置
|
||
3. 部署完成后服务自动启动
|
||
|
||
### 方法二:Docker 部署
|
||
|
||
1. **双击运行** `docker-windows.bat`
|
||
2. 按提示完成配置
|
||
3. Docker 自动构建并启动
|
||
|
||
---
|
||
|
||
## 🛠️ 脚本说明
|
||
|
||
| 脚本文件 | 用途 |
|
||
|---------|------|
|
||
| `deploy-windows.bat` | 一键部署脚本(Node.js + PM2) |
|
||
| `docker-windows.bat` | Docker 一键部署脚本 |
|
||
| `manage-windows.bat` | 服务管理工具(启动/停止/日志) |
|
||
| `check-env.bat` | 环境检查工具 |
|
||
| `uninstall.bat` | 卸载清理工具 |
|
||
|
||
---
|
||
|
||
## 📋 前置要求
|
||
|
||
### Node.js 部署方式
|
||
|
||
- **Node.js** v18+ ([下载地址](https://nodejs.org/))
|
||
- **npm**(随 Node.js 自动安装)
|
||
|
||
### Docker 部署方式
|
||
|
||
- **Docker Desktop for Windows** ([下载地址](https://www.docker.com/products/docker-desktop/))
|
||
- 启用 WSL2 后端(推荐)
|
||
|
||
---
|
||
|
||
## 🔧 详细步骤
|
||
|
||
### 1. 环境检查
|
||
|
||
运行 `check-env.bat` 检查环境是否就绪。
|
||
|
||
```cmd
|
||
.\check-env.bat
|
||
```
|
||
|
||
根据输出安装缺失的组件。
|
||
|
||
---
|
||
|
||
### 2. 配置环境变量
|
||
|
||
编辑 `.env` 文件:
|
||
|
||
```env
|
||
# 飞书配置
|
||
FEISHU_APP_ID=cli_xxxxxxxxxx
|
||
FEISHU_APP_SECRET=xxxxxxxxxxxxxx
|
||
FEISHU_VERIFICATION_TOKEN=xxxxxxxxxxxxxx
|
||
FEISHU_ENCRYPT_KEY=xxxxxxxxxxxxxx
|
||
|
||
# 飞书事件接收模式
|
||
FEISHU_MODE=http
|
||
|
||
# 七牛云配置(可选)
|
||
QINIU_ACCESS_KEY=xxxxxxxxxxxxxx
|
||
QINIU_SECRET_KEY=xxxxxxxxxxxxxx
|
||
QINIU_BUCKET=your-bucket-name
|
||
QINIU_REGION=z0
|
||
QINIU_DOMAIN=https://your-cdn.com
|
||
|
||
# 服务配置
|
||
PORT=3030
|
||
NODE_ENV=production
|
||
```
|
||
|
||
---
|
||
|
||
### 3. 配置七牛云
|
||
|
||
编辑 `config/qiniu-config.json`:
|
||
|
||
```json
|
||
{
|
||
"buckets": {
|
||
"default": {
|
||
"accessKey": "YOUR_ACCESS_KEY",
|
||
"secretKey": "YOUR_SECRET_KEY",
|
||
"bucket": "your-bucket-name",
|
||
"region": "z0",
|
||
"domain": "https://your-cdn.com"
|
||
}
|
||
},
|
||
"uploadPaths": {
|
||
"ipa": "/ipa/app.ipa",
|
||
"apk": "/apk/app.apk"
|
||
},
|
||
"uploadProfiles": {
|
||
"iOS": {
|
||
"bucket": "default",
|
||
"path": "ipa"
|
||
},
|
||
"安卓": {
|
||
"bucket": "default",
|
||
"path": "apk"
|
||
}
|
||
}
|
||
}
|
||
```
|
||
|
||
---
|
||
|
||
### 4. 启动服务
|
||
|
||
#### 使用 PM2
|
||
|
||
```cmd
|
||
.\manage-windows.bat
|
||
```
|
||
|
||
选择 `1. 启动服务`
|
||
|
||
#### 使用 Docker
|
||
|
||
```cmd
|
||
docker-compose up -d
|
||
```
|
||
|
||
---
|
||
|
||
### 5. 设置开机自启
|
||
|
||
**PM2 方式**(需要管理员权限):
|
||
|
||
```cmd
|
||
# 以管理员身份打开命令提示符
|
||
pm2 startup
|
||
pm2 save
|
||
```
|
||
|
||
**Docker 方式**:
|
||
|
||
Docker Desktop 会自动随系统启动。
|
||
|
||
---
|
||
|
||
## 📊 管理命令
|
||
|
||
### PM2 命令
|
||
|
||
```cmd
|
||
# 查看状态
|
||
pm2 list
|
||
|
||
# 查看日志
|
||
pm2 logs qiniu-bot
|
||
|
||
# 重启服务
|
||
pm2 restart qiniu-bot
|
||
|
||
# 停止服务
|
||
pm2 stop qiniu-bot
|
||
|
||
# 删除服务
|
||
pm2 delete qiniu-bot
|
||
|
||
# 清空日志
|
||
pm2 flush
|
||
```
|
||
|
||
### Docker 命令
|
||
|
||
```cmd
|
||
# 查看日志
|
||
docker-compose logs -f qiniu-bot
|
||
|
||
# 重启服务
|
||
docker-compose restart
|
||
|
||
# 停止服务
|
||
docker-compose stop
|
||
|
||
# 启动服务
|
||
docker-compose start
|
||
|
||
# 停止并删除
|
||
docker-compose down
|
||
|
||
# 重新构建
|
||
docker-compose build --no-cache
|
||
```
|
||
|
||
---
|
||
|
||
## 🔍 故障排查
|
||
|
||
### 问题 1: 端口 3030 被占用
|
||
|
||
**解决方案:**
|
||
|
||
```cmd
|
||
# 查找占用进程
|
||
netstat -ano | findstr :3030
|
||
|
||
# 杀掉进程(替换 PID)
|
||
taskkill /PID 12345 /F
|
||
|
||
# 或修改 .env 中的 PORT
|
||
PORT=3031
|
||
```
|
||
|
||
---
|
||
|
||
### 问题 2: PM2 未找到
|
||
|
||
**解决方案:**
|
||
|
||
```cmd
|
||
# 全局安装 PM2
|
||
npm install -g pm2
|
||
|
||
# 如果权限不足,以管理员身份运行
|
||
# 或使用 yarn
|
||
yarn global add pm2
|
||
```
|
||
|
||
---
|
||
|
||
### 问题 3: Docker 构建失败
|
||
|
||
**解决方案:**
|
||
|
||
1. 确保 Docker Desktop 正在运行
|
||
2. 增加 Docker 资源分配(设置 → Resources)
|
||
3. 使用国内镜像加速器:
|
||
|
||
```json
|
||
// Docker Desktop 设置 → Docker Engine
|
||
{
|
||
"registry-mirrors": [
|
||
"https://docker.mirrors.ustc.edu.cn",
|
||
"https://hub-mirror.c.163.com"
|
||
]
|
||
}
|
||
```
|
||
|
||
---
|
||
|
||
### 问题 4: 依赖安装失败
|
||
|
||
**解决方案:**
|
||
|
||
```cmd
|
||
# 清理缓存
|
||
npm cache clean --force
|
||
|
||
# 删除 node_modules
|
||
rmdir /s /q node_modules
|
||
|
||
# 重新安装
|
||
npm install
|
||
|
||
# 或使用淘宝镜像
|
||
npm config set registry https://registry.npmmirror.com
|
||
npm install
|
||
```
|
||
|
||
---
|
||
|
||
### 问题 5: 飞书回调失败
|
||
|
||
**检查清单:**
|
||
|
||
- [ ] 服务器有公网 IP 或使用内网穿透
|
||
- [ ] 防火墙开放 3030 端口
|
||
- [ ] 飞书开放平台配置正确的回调 URL
|
||
- [ ] `.env` 中 `FEISHU_VERIFICATION_TOKEN` 和 `FEISHU_ENCRYPT_KEY` 正确
|
||
|
||
**测试回调 URL:**
|
||
|
||
```cmd
|
||
# 使用 ngrok 内网穿透
|
||
ngrok http 3030
|
||
|
||
# 将生成的 URL 配置到飞书开放平台
|
||
# 例如:https://xxxx.ngrok.io/feishu/event
|
||
```
|
||
|
||
---
|
||
|
||
## 📝 日志位置
|
||
|
||
### PM2 日志
|
||
|
||
```
|
||
C:\Users\你的用户名\.pm2\logs\
|
||
```
|
||
|
||
### Docker 日志
|
||
|
||
```cmd
|
||
docker-compose logs qiniu-bot
|
||
```
|
||
|
||
### 应用日志
|
||
|
||
```
|
||
logs\*.log
|
||
```
|
||
|
||
---
|
||
|
||
## 🧹 卸载
|
||
|
||
运行 `uninstall.bat` 自动清理。
|
||
|
||
或手动执行:
|
||
|
||
```cmd
|
||
# PM2 方式
|
||
pm2 stop qiniu-bot
|
||
pm2 delete qiniu-bot
|
||
rmdir /s /q node_modules
|
||
del /q /s logs\*.*
|
||
|
||
# Docker 方式
|
||
docker-compose down
|
||
docker rmi qiniu-feishu-bot:latest
|
||
```
|
||
|
||
---
|
||
|
||
## 💡 最佳实践
|
||
|
||
1. **生产环境** 使用 Docker 部署(更稳定、易迁移)
|
||
2. **开发环境** 使用 PM2 部署(调试方便)
|
||
3. **定期备份** `config/` 和 `.env` 文件
|
||
4. **监控日志** 使用 `pm2 logs` 或 `docker-compose logs -f`
|
||
5. **更新部署** 先备份配置,再拉取代码,最后重启服务
|
||
|
||
---
|
||
|
||
## 📞 获取帮助
|
||
|
||
如遇问题,请提供以下信息:
|
||
|
||
1. 运行 `check-env.bat` 的输出
|
||
2. 错误日志(`pm2 logs` 或 `docker-compose logs`)
|
||
3. `.env` 配置(隐藏敏感信息)
|
||
4. 操作系统版本
|