// 宝塔环境下的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 保持此脚本运行');