// 宝塔环境下的Node项目启动脚本 const { spawn } = require('child_process'); const path = require('path'); const fs = require('fs'); // 获取项目根目录 const rootDir = __dirname; const serverPath = path.join(rootDir, 'server', 'index.js'); // 检查日志目录 const logDir = path.join(rootDir, 'logs'); if (!fs.existsSync(logDir)) { fs.mkdirSync(logDir, { recursive: true }); } // 创建日志文件流 const logFile = path.join(logDir, 'server.log'); const logStream = fs.createWriteStream(logFile, { flags: 'a' }); console.log('启动后端服务器...'); console.log(`日志文件: ${logFile}`); // 使用node启动服务器 const server = spawn('node', [serverPath], { cwd: rootDir, env: { ...process.env, PORT: 3010, NODE_ENV: 'production' }, stdio: ['ignore', 'pipe', 'pipe'] }); // 将输出写入日志 server.stdout.pipe(logStream); server.stderr.pipe(logStream); server.stdout.on('data', (data) => { console.log(`[服务器输出] ${data.toString().trim()}`); }); server.stderr.on('data', (data) => { console.error(`[服务器错误] ${data.toString().trim()}`); }); server.on('close', (code) => { console.log(`服务器进程退出,退出码: ${code}`); logStream.end(); }); console.log(`后端服务已启动,端口: 3010`); console.log('使用 pm2 或 forever 保持此脚本运行');