You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Jenkins在远程服务器执行shell命令完成Node项目PM2部署

问题排查与修复方案

原有脚本错误原因

  • ssh命令格式错误:远程服务器地址和目标路径不能拼接在一起,username@ip/backend的写法不符合ssh语法,会直接导致连接失败
  • 后续命令执行位置错误:你写在ssh行之后的npm install等命令默认执行在Jenkins本地机器,而非远程服务器,完全达不到预期效果
  • 启动逻辑和需求不符:你原本写的node server.js没有用到PM2,也没有重载pm2.json的逻辑

正确脚本实现

前置校验

先确认以下前置条件已经满足:

  • Jenkins机器上存放的私钥privKey权限设置为600(ssh要求私钥不能有其他用户可读权限,否则会拒绝连接)
  • 远程服务器上的对应用户已经全局安装PM2,且PM2路径已经加入该用户的环境变量中
  • 远程服务器的/backend目录对应用户有读写执行权限

可直接使用的Shell脚本

#!/bin/bash
# 替换为你自己的实际参数
REMOTE_USER="实际用户名"
REMOTE_IP="实际服务器IP"
PRIVATE_KEY_PATH="Jenkins上私钥的实际路径,例如./privKey"
REMOTE_PROJECT_PATH="/backend"

# 远程批量执行所有命令
ssh -i ${PRIVATE_KEY_PATH} ${REMOTE_USER}@${REMOTE_IP} << EOF
cd ${REMOTE_PROJECT_PATH}
# 安装生产环境依赖
npm install --production
# 重载PM2配置,实现零宕机重启
pm2 reload pm2.json
# 可选:验证PM2进程运行状态
pm2 status
EOF

常见问题补充

如果执行时提示找不到pm2命令,可以先在远程服务器上执行which pm2拿到PM2的绝对路径,把脚本里的pm2替换为该绝对路径即可。如果连接时报错,可以在ssh命令上加-v参数输出详细连接日志排查问题。

内容的提问来源于stack exchange,提问作者user15564093

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 11:54:03