宝塔面板 Node.js 项目自动重启教程 计划任务 + Shell 脚本免额外工具

发布于 更新于
10

在宝塔面板部署 Node.js 项目后,很多开发者都会遇到项目意外停止的问题——可能是代码报错、内存溢出,也可能是服务器临时波动,导致服务中断。手动重启不仅繁琐,还会影响用户体验。

本文分享一套轻量级解决方案:利用宝塔自带的计划任务和自定义 Shell 脚本,实现项目进程监控,崩溃后自动重启,支持 .js 和 .mjs 两种入口文件,无需安装 PM2、Supervisor 等额外工具,新手也能快速配置成功。

一、适用场景

  • 宝塔面板用户(7.0+ 版本均可)
  • 部署 Node.js 项目(Express、Koa、NestJS 等框架通用)
  • 希望项目崩溃后自动重启,无需人工干预
  • 不想安装额外进程管理工具,追求轻量解决方案
  • 支持 CommonJS(.js)和 ES 模块(.mjs)入口文件

二、前置准备

开始配置前,请确认以下 3 点已完成:

  1. 宝塔面板已安装并成功登录
  2. 服务器已安装 Node.js(可通过宝塔「软件商店」搜索「Node.js」安装)
  3. 提前记录两个核心路径(全程使用绝对路径,避免出错):
    • 脚本存放路径(建议固定):/www/wwwroot/node_auto_restart.sh
    • 项目入口路径(替换为你的实际路径):/www/wwwroot/你的项目目录/入口文件(如 index.js 或 server.mjs)

三、步骤 1:创建监控重启 Shell 脚本

1.1 新建脚本文件

  1. 登录宝塔面板,点击左侧菜单「文件」
  2. 导航到目录 /www/wwwroot/,右键点击空白处,选择「新建文件」
  3. 文件名填写 node_auto_restart.sh,点击「创建」

1.2 编写脚本内容

  1. 双击打开新建的 node_auto_restart.sh 文件
  2. 复制以下内容粘贴(务必修改 2 处关键配置):
#!/bin/bash
# ================== 必须修改的配置(根据你的项目调整)==================
APP_ENTRY="/www/wwwroot/guaqi/server/index.mjs"  # 替换为你的项目入口文件绝对路径
NODE_PATH="/www/server/nodejs/v22.20.0/bin/node"  # 替换为你的 Node.js 绝对路径
# ======================================================================

# 固定配置(无需修改)
APP_DIR=$(dirname "$APP_ENTRY")  # 自动获取项目根目录
APP_LOG="$APP_DIR/node_run.log"  # 项目运行日志(记录报错信息)
MONITOR_LOG="$APP_DIR/node_monitor.log"  # 监控日志(记录重启/正常状态)

# 检测项目进程是否存活
if ! pgrep -f "$APP_ENTRY" > /dev/null; then
  # 修复项目目录权限,避免启动失败
  chmod -R 755 "$APP_DIR"
  # 进入项目目录,后台启动项目(日志输出到 node_run.log)
  cd "$APP_DIR" && nohup "$NODE_PATH" "$APP_ENTRY" > "$APP_LOG" 2>&1 &
  # 记录重启时间和状态到监控日志
  echo "[$(date +'%Y-%m-%d %H:%M:%S')] 项目进程不存在,已自动重启" >> "$MONITOR_LOG"
else
  # 记录正常运行状态
  echo "[$(date +'%Y-%m-%d %H:%M:%S')] 项目运行正常" >> "$MONITOR_LOG"
fi

1.3 脚本关键配置说明

  • APP_ENTRY:你的 Node.js 项目入口文件绝对路径,例如 /www/wwwroot/my-project/server.js 或 /www/wwwroot/guaqi/server/index.mjs
  • NODE_PATH:Node.js 安装的绝对路径,获取方法:打开宝塔「终端」,输入命令 which node,复制输出的路径即可
  • 日志说明:node_run.log 记录项目运行报错(如代码错误、依赖缺失),node_monitor.log 记录监控脚本的执行状态(是否重启、是否正常)

1.4 设置脚本权限(关键步骤)

  1. 在宝塔「文件」中,找到 /www/wwwroot/node_auto_restart.sh 文件
  2. 右键点击该文件,选择「权限」
  3. 所有者和用户组均选择「www」(与网站运行权限一致)
  4. 权限设置为「755」(或勾选「读、写、执行」三个选项)
  5. 点击「确定」保存权限设置

四、步骤 2:添加宝塔计划任务,实现定时监控

2.1 新建计划任务

  1. 登录宝塔面板,点击左侧菜单「计划任务」
  2. 点击页面右上角「添加任务」按钮
  3. 按以下配置填写(无需修改的保持默认):
    • 任务类型:选择「Shell脚本」
    • 任务名称:自定义(如「Node项目自动重启监控」)
    • 执行周期:选择「每分钟」(检测频率越高,重启越快,推荐默认每分钟)
    • 脚本内容:填写脚本的绝对路径 /www/wwwroot/node_auto_restart.sh
    • 执行用户:选择 www 或 root 均可
  4. 点击「添加任务」,任务自动生效

2.2 测试计划任务是否执行成功

  1. 在计划任务列表中,找到刚刚创建的任务
  2. 点击任务右侧的「执行」按钮,手动触发一次执行
  3. 点击任务右侧的「日志」按钮,查看执行结果
  4. 若日志显示「Successful」,说明计划任务执行成功;若显示错误,检查脚本路径是否填写正确

五、步骤 3:验证项目自动重启功能

3.1 确认项目已启动

  1. 打开宝塔「终端」,输入以下命令,查看项目进程是否存在:
    ps aux | grep 入口文件名 | grep -v grep

    (将「入口文件名」替换为你的项目入口文件,如 index.mjs 或 server.js)

  2. 若输出类似「www 12345 0.0 5.0 ... /www/server/nodejs/v22.20.0/bin/node /www/wwwroot/guaqi/server/index.mjs」的内容,说明项目已成功启动

3.2 测试自动重启功能

  1. 手动杀死项目进程:在宝塔「终端」输入以下命令(替换为你的入口文件名):
    pkill -f 入口文件名
  2. 等待 1 分钟(计划任务的执行周期)
  3. 再次执行步骤 3.1 的命令,查看进程是否重新生成;或导航到项目目录,打开 node_monitor.log,若显示「项目进程不存在,已自动重启」,说明自动重启功能生效

3.3 访问项目测试

  1. 打开浏览器,输入「http://你的服务器IP:项目端口」(如 http://123.45.67.89:3000)
  2. 若能正常访问项目页面或接口返回,说明服务正常
  3. 若无法访问:检查宝塔「安全」菜单中,项目端口是否已放行;或云服务器控制台的安全组是否允许该端口入站

六、优化建议(可选)

  • 端口隐藏:使用宝塔「网站」→「添加网站」,通过反向代理将域名指向 127.0.0.1:项目端口,无需暴露原始端口,更安全
  • 日志清理:添加宝塔计划任务,每月执行一次日志清理脚本,避免日志文件过大(脚本:echo "" > /www/wwwroot/你的项目目录/node_run.log && echo "" > /www/wwwroot/你的项目目录/node_monitor.log
  • 多项目监控:若需监控多个 Node 项目,复制一份脚本,修改 APP_ENTRY 和脚本文件名,再添加对应的计划任务即可
  • Node 版本切换:若使用多版本 Node,只需更新脚本中的 NODE_PATH 路径,无需修改其他配置

总结

通过「宝塔计划任务+Shell脚本」的方案,无需安装任何额外工具,就能实现 Node.js 项目的自动监控与重启,适合轻量场景使用。

核心要点:确保脚本中的路径填写正确、权限配置无误;若项目频繁崩溃,一定要通过 node_run.log 找到根源并修复,监控脚本仅为临时补救措施。

按照本文步骤配置后,你的 Node.js 项目将实现「崩溃自动重启」,无需人工干预,稳定性大幅提升!

常见问题(FAQ)

0
0
分享
反馈
0 / 600
欢迎参与讨论 登录/注册
0 条评论
热门最新
推荐

2025年11月19日【周三】每日早报,关心世界!

1、2025年软科世界一流学科排名发布:中国内地高校在21个学科中位列全球第一,整体排名全球第二; 2、我国人口发展出现新特征:小学在校生规模已在2023年达峰,预计初中2026年达峰、高中2029年达峰、大学学龄人口2032年达峰; 3、江苏一高校教授涉嫌学术造假、侵占科研经费等被带走调查,简历至少5处与事实不符,校方回应:已离职; 4、广州新规:公租房轮候时间由5年降至3年,即可领租赁补贴; 5、数据显示:今年前10个月,我国快递业务量累计完成1626.8亿件,同比增长超16%; 6、内存条成“电子茅台”:一个月涨价70%,贸易商称一天一个价,手机等电子产品或迎来涨价潮; 7、比特币七个月来首次跌破9万美元关口,一个半月跌近30%; 8、港媒:报告显示2025年香港千万富翁人口达39.5万人,较去年增加5000人; 9、媒体:中国游客退订约50万张赴日机票,约占飞往日本总预定量的32%;中国游客大幅减少或致日本损失1.7万亿日元; 10、日方“抗议”中国海警船在钓鱼岛海域巡航,外交部回应:不接受日方无理交涉,已当场驳回并提出反交涉; 11、外交部介绍中日外交官会晤情况:日方必须立即收回错误言论; 12、日媒:日本外务省高官来华属于既定日程,高市早苗仍不同意撤回发言;高市早苗很可能12月26日参拜靖国神社; 13、俄媒:普京称中国公民赴俄免签政策将于近期生效,去年赴俄中国游客同比增长两倍多; 14、德媒:德国防长渲染2028年与俄开战,俄怒斥:纯属无稽之谈 ;德国柏林约20所学校遭袭击威胁,警方发起调查; 15、美媒:特朗普称计划向沙特出售F-35战机;特朗普邀请马斯克,将与沙特王储共进晚餐;

0 0 0 0

2025年11月18日【周二】每日早报,关心世界!

1、2025自然指数科研城市发布:中国六城跻身全球科研城市十强,其中北京连续9年位居榜首; 2、财政部:前10月全国税收收入153364亿元,同比增长1.7%;证券交易印花税1629亿元,同比增长88.1%; 3、官方:违规异地执法、逐利执法等问题得到有效遏制;确保人民群众报案“应接必接、该受必受、当立则立”; 4、呼吸道合胞病毒进入流行期:症状与感冒相似,婴儿易“中招”; 5、刘强东宣布:京东外卖独立APP上线,并推出京东点评,承诺“永不商业化”; 6、汪顺400米混合泳“四连冠”, 全运会已得19金,成为全运会史上金牌数最多的运动员; 7、西藏布达拉宫公告:12月起每周一闭馆,国家法定节假日除外; 8、多地旅行社日本团游客退订:有退团比例超过六成,日本旅游消费股暴跌;中国游客出境游目的地重新洗牌:韩国取代日本成为最热门; 9、部分日本电影突然撤档,相关影片进口方、发行方确认:暂缓日本进口片上映; 10、日本外务省高官17日访华,将解释高市早苗言论,外交部回应:严肃要求日方立即反思纠错; 11、日媒:美军“堤丰”中导发射装置撤离驻日美军基地;日本GDP六个季度以来首次负增长; 12、韩媒:日本叫停韩军机支援计划,韩国海军暂停与日本海上自卫队举行联合搜救演习; 13、美媒:“剧情”再反转,特朗普表态支持投票公布爱泼斯坦档案,称我们没有什么可隐瞒的; 14、美媒:受签证政策影响,今秋美高校外国新生入学人数降17%;美政府在夏洛特市展开移民执法行动 首日至少逮捕81人; 15、外媒:美最大航母已进入加勒比海,美陆军部长称随时待命对委内瑞拉采取行动,特朗普称或与委内瑞拉总统马杜罗对话;

0 0 0 0

2025年11月17日【周一】每日早报,关心世界!

1、国铁集团:今年1至10月全国铁路发送旅客39.5亿人次,同比增长6.4%,创历史同期新高; 2、网友称乘客在火车内吸烟,乘务员未阻止,12306回应:普速列车车厢连接处设有烟灰缸,允许吸烟; 3、有买家用AI伪造商品毁损图骗“仅退款”:百元内商品成重灾区,“造假教程”被288元打包出售; 4、嵩山少林寺原住持释永信被批准逮捕,涉嫌职务侵占罪、挪用资金罪等案; 5、全运会:王曼昱4比2击败孙颖莎,成功卫冕全运会女单冠军;樊振东4比1战胜林诗栋,成功卫冕全运会男单冠军; 6、月球科研重大突破:嫦娥六号月球样品中首次发现晶质赤铁矿,揭示月球氧化新机制与磁异常成因; 7、华为将发布AI领域突破性技术:将算力资源利用率从30%提升至70%,有望解决算力资源利用效率难题; 8、马斯克惊人预测:20年内人类意识有望上传至机器人实现“永生”; 9、消息称苹果公司首席执行官库克或最早于明年卸任,现任公司硬件工程高级副总裁或成库克继任者; 10、福建师大“琉球学”学科研讨会开幕,已入选中国社科院绝学扶持计划; 11、教育部发布留学预警:建议中国公民谨慎规划赴日留学安排;文化和旅游部郑重提醒:中国游客近期避免前往日本; 12、日媒:日本七大车企受美国关税冲击集体利润下滑,同比减少约30%,连续2年减少; 13、韩媒:韩国将东北亚三国官方表述顺序统一为“韩中日”,称该表述的使用最为普及,消除不必要的争议; 14、加媒:加拿大伯纳比市宣布就历史上针对华裔的歧视进行正式道歉; 15、美媒:特朗普减免牛肉、咖啡和水果等数十种常见农产品关税,应对国内物价持续上涨;

0 0 0 0
请添加菜单