// ============================================================ // 闲言APP — 信令服务器部署脚本 // 创建时间: 2026-05-20 // 更新时间: 2026-05-20 // 作用: 上传index.js到服务器并重启PM2 // 上次更新: 初始创建 // ============================================================ const { NodeSSH } = require('node-ssh'); const path = require('path'); const HOST = '123.207.67.197'; const USER = 'root'; const PASS = '520Kiss123'; const REMOTE_BASE = '/www/wwwroot/tools.wktyl.com/signaling'; const LOCAL_FILE = path.resolve(__dirname, '..', '..', '..', 'server', 'index.js'); async function deploy() { const ssh = new NodeSSH(); console.log(`Connecting to ${HOST}...`); await ssh.connect({ host: HOST, username: USER, password: PASS, }); console.log('[OK] Connected'); console.log(`Uploading index.js to ${REMOTE_BASE}/index.js...`); await ssh.execCommand(`cp ${REMOTE_BASE}/index.js ${REMOTE_BASE}/index.js.bak 2>/dev/null || true`); console.log('[OK] Backup created'); await ssh.putFile(LOCAL_FILE, `${REMOTE_BASE}/index.js`); console.log('[OK] index.js uploaded'); console.log('\nRestarting PM2 signaling process...'); const restartResult = await ssh.execCommand( `cd ${REMOTE_BASE} && pm2 restart signaling` ); if (restartResult.stdout) console.log(restartResult.stdout); if (restartResult.stderr) console.log('STDERR:', restartResult.stderr.slice(0, 300)); await new Promise(r => setTimeout(r, 2000)); console.log('\nChecking PM2 status...'); const listResult = await ssh.execCommand('pm2 list'); const listOut = listResult.stdout || ''; console.log(listOut.length > 500 ? listOut.slice(-500) : listOut); console.log('\nChecking signaling logs (last 10 lines)...'); const logsResult = await ssh.execCommand('pm2 logs signaling --lines 10 --nostream'); const logsOut = logsResult.stdout || ''; console.log(logsOut.length > 500 ? logsOut.slice(-500) : logsOut); ssh.dispose(); console.log('\nDeployment complete!'); } deploy().catch(err => { console.error('Deployment failed:', err.message); process.exit(1); });