diff --git a/baota_start.js b/baota_start.js new file mode 100644 index 0000000..664108f --- /dev/null +++ b/baota_start.js @@ -0,0 +1,52 @@ +// 宝塔环境下的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 保持此脚本运行'); \ No newline at end of file