guanghulab/server/zhiku-node/ecosystem.config.js
2026-05-10 13:12:44 +08:00

103 lines
3.2 KiB
JavaScript
Raw Permalink 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.

/**
* ═══════════════════════════════════════════════════════════
* 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
}
]
};