jimeng-free-api/PM2_CONFIG_GUIDE.md

199 lines
4.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 通过 ecosystem.config.json 配置不同服务的示例
## 📋 基本原理
你可以完全通过修改 `ecosystem.config.json` 文件来配置不同数量和不同配置的服务,无需 `.env` 文件。
## 🎯 配置策略
### 1. 增加或减少服务数量
`apps` 数组中添加或删除服务配置:
```json
{
"apps": [
// 保留需要的服务,删除不需要的
{
"name": "jimeng-api-3302",
// ... 配置
},
{
"name": "jimeng-api-3303",
// ... 配置
}
// 删除 jimeng-api-3304 或添加更多服务
]
}
```
### 2. 不同环境配置
每个服务都有 `env` (开发环境) 和 `env_production` (生产环境) 两套配置:
```json
{
"env": {
"MONGODB_URL": "mongodb://localhost:27017/jimeng-api",
"TOS_BUCKET_NAME": "dev-bucket"
},
"env_production": {
"MONGODB_URL": "mongodb://prod-server:27017/jimeng-api",
"TOS_BUCKET_NAME": "prod-bucket"
}
}
```
### 3. 个性化服务配置
你可以为每个服务设置不同的配置:
```json
{
"apps": [
{
"name": "jimeng-api-internal",
"env_production": {
"SERVICE_ID": "jimeng-internal",
"PORT": 3302,
"TOS_BUCKET_NAME": "internal-bucket",
"HEARTBEAT_INTERVAL": 30
}
},
{
"name": "jimeng-api-external",
"env_production": {
"SERVICE_ID": "jimeng-external",
"PORT": 3303,
"TOS_BUCKET_NAME": "external-bucket",
"HEARTBEAT_INTERVAL": 60
}
}
]
}
```
## 🚀 启动命令
### 启动所有服务
```bash
pm2 start ecosystem.config.json --env production
```
### 启动单个服务
```bash
pm2 start ecosystem.config.json --only jimeng-api-3302 --env production
```
### 启动多个指定服务
```bash
pm2 start ecosystem.config.json --only "jimeng-api-3302,jimeng-api-3303" --env production
```
## 💡 实际配置示例
### 示例1: 2个服务不同TOS配置
```json
{
"apps": [
{
"name": "jimeng-api-images",
"env_production": {
"SERVICE_ID": "jimeng-images",
"PORT": 3302,
"TOS_BUCKET_NAME": "images-bucket",
"HEARTBEAT_INTERVAL": 30
}
},
{
"name": "jimeng-api-videos",
"env_production": {
"SERVICE_ID": "jimeng-videos",
"PORT": 3303,
"TOS_BUCKET_NAME": "videos-bucket",
"HEARTBEAT_INTERVAL": 60
}
}
]
}
```
### 示例2: 单个服务
```json
{
"apps": [
{
"name": "jimeng-api-main",
"env_production": {
"SERVICE_ID": "jimeng-main",
"PORT": 3302,
"TOS_BUCKET_NAME": "main-bucket"
}
}
]
}
```
### 示例3: 5个服务负载分散
```json
{
"apps": [
{
"name": "jimeng-api-3302",
"env_production": { "PORT": 3302, "SERVICE_ID": "jimeng-3302" }
},
{
"name": "jimeng-api-3303",
"env_production": { "PORT": 3303, "SERVICE_ID": "jimeng-3303" }
},
{
"name": "jimeng-api-3304",
"env_production": { "PORT": 3304, "SERVICE_ID": "jimeng-3304" }
},
{
"name": "jimeng-api-3305",
"env_production": { "PORT": 3305, "SERVICE_ID": "jimeng-3305" }
},
{
"name": "jimeng-api-3306",
"env_production": { "PORT": 3306, "SERVICE_ID": "jimeng-3306" }
}
]
}
```
## ⚙️ 关键配置项说明
| 配置项 | 作用 | 示例 |
|--------|------|------|
| `name` | PM2进程名称 | `"jimeng-api-3302"` |
| `SERVICE_ID` | 心跳服务中的唯一标识 | `"jimeng-api-3302"` |
| `PORT` | 服务端口 | `3302` |
| `MONGODB_URL` | 数据库连接 | `"mongodb://localhost:27017/jimeng-api"` |
| `TOS_BUCKET_NAME` | 对象存储桶 | `"your-bucket"` |
| `HEARTBEAT_INTERVAL` | 心跳间隔(秒) | `30` |
## 🔄 动态管理
### 修改配置后重新加载
```bash
pm2 reload ecosystem.config.json --env production
```
### 只重启特定服务
```bash
pm2 restart jimeng-api-3302
```
### 删除服务后清理
```bash
pm2 delete jimeng-api-3304
```
## ✅ 优势
1. **集中管理** - 所有配置在一个文件中
2. **版本控制** - 可以提交到Git中
3. **环境隔离** - dev和production环境分离
4. **灵活扩展** - 随时增减服务数量
5. **配置差异** - 每个服务可以有不同配置