103 lines
3.2 KiB
JavaScript
103 lines
3.2 KiB
JavaScript
|
|
/**
|
|||
|
|
* ═══════════════════════════════════════════════════════════
|
|||
|
|
* PM2 生态配置 · 光湖智库节点 · guanghu.online
|
|||
|
|
* ═══════════════════════════════════════════════════════════
|
|||
|
|
*
|
|||
|
|
* 项目编号: ZY-PROJ-006
|
|||
|
|
* 服务器: ZY-SVR-006 (43.153.203.105 · 新加坡)
|
|||
|
|
* 守护: 铸渊 · ICE-GL-ZY001
|
|||
|
|
* 版权: 国作登字-2026-A-00037559
|
|||
|
|
*
|
|||
|
|
* 启动命令:
|
|||
|
|
* cd /opt/zhiku && pm2 start ecosystem.config.js
|
|||
|
|
* pm2 save && pm2 startup
|
|||
|
|
*
|
|||
|
|
* ═══════════════════════════════════════════════════════════
|
|||
|
|
*/
|
|||
|
|
|
|||
|
|
'use strict';
|
|||
|
|
|
|||
|
|
const path = require('path');
|
|||
|
|
const envFile = path.join(__dirname, 'server', '.env');
|
|||
|
|
|
|||
|
|
// 从 .env 文件读取环境变量
|
|||
|
|
let envOverrides = {};
|
|||
|
|
try {
|
|||
|
|
const fs = require('fs');
|
|||
|
|
if (fs.existsSync(envFile)) {
|
|||
|
|
const lines = fs.readFileSync(envFile, 'utf8').split('\n');
|
|||
|
|
for (const line of lines) {
|
|||
|
|
const trimmed = line.trim();
|
|||
|
|
if (!trimmed || trimmed.startsWith('#')) continue;
|
|||
|
|
const eqIdx = trimmed.indexOf('=');
|
|||
|
|
if (eqIdx > 0) {
|
|||
|
|
const key = trimmed.slice(0, eqIdx).trim();
|
|||
|
|
const val = trimmed.slice(eqIdx + 1).trim().replace(/^["']|["']$/g, '');
|
|||
|
|
envOverrides[key] = val;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
} catch {}
|
|||
|
|
|
|||
|
|
module.exports = {
|
|||
|
|
apps: [
|
|||
|
|
{
|
|||
|
|
name: 'zhiku-api',
|
|||
|
|
script: 'server/server.js',
|
|||
|
|
cwd: '/opt/zhiku',
|
|||
|
|
instances: 1,
|
|||
|
|
exec_mode: 'fork',
|
|||
|
|
watch: false,
|
|||
|
|
autorestart: true,
|
|||
|
|
max_memory_restart: '256M',
|
|||
|
|
log_file: '/var/log/zhiku/pm2-zhiku-api.log',
|
|||
|
|
error_file: '/var/log/zhiku/pm2-zhiku-api-error.log',
|
|||
|
|
merge_logs: true,
|
|||
|
|
time: true,
|
|||
|
|
env: {
|
|||
|
|
NODE_ENV: 'production',
|
|||
|
|
PORT: 3006,
|
|||
|
|
...envOverrides
|
|||
|
|
}
|
|||
|
|
},
|
|||
|
|
// FQWeb (番茄小说 API 服务 · Kotlin JAR · port 9999)
|
|||
|
|
// 仅当 JAR 文件存在时启动 · 由 setup-datasources 部署
|
|||
|
|
{
|
|||
|
|
name: 'fqweb',
|
|||
|
|
script: 'start.sh',
|
|||
|
|
cwd: '/opt/zhiku/datasources/fqweb',
|
|||
|
|
interpreter: '/bin/bash',
|
|||
|
|
instances: 1,
|
|||
|
|
exec_mode: 'fork',
|
|||
|
|
watch: false,
|
|||
|
|
autorestart: true,
|
|||
|
|
max_memory_restart: '512M',
|
|||
|
|
log_file: '/var/log/zhiku/fqweb.log',
|
|||
|
|
error_file: '/var/log/zhiku/fqweb-error.log',
|
|||
|
|
merge_logs: true,
|
|||
|
|
time: true,
|
|||
|
|
// 如果 JAR 不存在不报错(PM2 会标记为 errored)
|
|||
|
|
env: {
|
|||
|
|
JAVA_OPTS: '-Xmx256m'
|
|||
|
|
}
|
|||
|
|
},
|
|||
|
|
// SwiftCat (七猫小说下载器 · Python · port 7700)
|
|||
|
|
// 仅当代码存在时启动 · 由 setup-datasources 部署
|
|||
|
|
{
|
|||
|
|
name: 'swiftcat',
|
|||
|
|
script: 'start.sh',
|
|||
|
|
cwd: '/opt/zhiku/datasources/swiftcat',
|
|||
|
|
interpreter: '/bin/bash',
|
|||
|
|
instances: 1,
|
|||
|
|
exec_mode: 'fork',
|
|||
|
|
watch: false,
|
|||
|
|
autorestart: true,
|
|||
|
|
max_memory_restart: '256M',
|
|||
|
|
log_file: '/var/log/zhiku/swiftcat.log',
|
|||
|
|
error_file: '/var/log/zhiku/swiftcat-error.log',
|
|||
|
|
merge_logs: true,
|
|||
|
|
time: true
|
|||
|
|
}
|
|||
|
|
]
|
|||
|
|
};
|