Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Jenkins 远程启动nodejs失败,使用pm2守护Nodejs

Jenkins 远程启动nodejs失败,使用pm2守护Nodejs

作者头像
py3study
发布于 2020-03-07 09:02:23
发布于 2020-03-07 09:02:23
2.6K00
代码可运行
举报
文章被收录于专栏:python3python3
运行总次数:0
代码可运行

一、概述

使用Jenkins 远程ssh到linux,使用命令:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
ssh root@192.168.10.1 'cd /data/test;nohup npm start &'

发现linux服务器的node进程没有启动。但是本地执行命令:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
cd /data/test;nohup npm start &

 是可以启动的。

大致意思是,如果远程执行的命令,不是守护进程。即使加了nohup,关闭ssh连接后,当前用户启动的进程会全部终止。

因此,远程执行的命令,必须是守护进程才行。

二、pm2守护Nodejs

简介

pm2是nodejs的一个带有负载均衡功能的应用进程管理器的模块,类似有Supervisor,forever,用来进行进程管理。

安装

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
npm install pm2 -g

启动

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
pm2 start app.js
pm2 start app.js --name my-api #my-api为PM2进程名称
pm2 start app.js -i 0 #根据CPU核数启动进程个数
pm2 start app.js --watch #实时监控app.js的方式启动,当app.js文件有变动时,pm2会自动reload

查看进程

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
pm2 list
pm2 show 0 或者 # pm2 info 0 #查看进程详细信息,0PM2进程id

停止

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
pm2 stop all #停止PM2列表中所有的进程
pm2 stop 0 #停止PM2列表中进程为0的进程

三、pm2启动脚本

由于公司的Nodejs项目,比如test,它有4个服务,因此有4个app.js。

在package.json里面,有定义启动命令。比如:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
"start:client": "cd ./client && npm start",

由于package.json里面有定义一些关联启动命令,因此直接用pm2启动4个app.js,会导致应用异常。

json格式

pm2 start npm -- start这条命令是pm2的万能命令,pm2 start ,就是这一系列命令中的最豪华命令。这个json我们可以理解为一个任务参数描述文件。通过这个json文件,我们把在命令行里面不好描述的各种参数放到一个json文件里面来

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
pm2 start <json>.json

pm2 start命令中的json格式详解

最精简版本

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
{
    "name": "manage",      //项目名称
    "script": "./bin/www", //要执行的脚本
    "cwd":"./",            //项目所在目录
}

执行shell文件版本

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
{
    "name": "manage",      //项目名称
    "script": "./bin/www.sh", //要执行的脚本
    "cwd":"./",            //项目所在目录
    "exec_interpreter": "bash",
}

实战例子demo

下面的test.json是公司项目

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
{
  "apps": [{
    "name": "test",  //项目名称
    "script": "test.sh",  //要执行的脚本
    "cwd": "/opt/script/",  //脚本所在目录
    "exec_interpreter": "bash",   //应用程序的脚本类型
    "exec_mode": "fork",
    "max_memory_restart": "1G",
    "autorestart": true,
    "node_args": [],
    "args": [],
    "env": {
      
    }
  }]
}

 说明:

  • apps:json结构,apps是一个数组,每一个数组成员就是对应一个pm2中运行的应用
  • name:应用程序名称
  • cwd:应用程序所在的目录
  • script:应用程序的脚本路径
  • log_date_format:
  • error_file:自定义应用程序的错误日志文件
  • out_file:自定义应用程序日志文件
  • pid_file:自定义应用程序的pid文件
  • instances:
  • min_uptime:最小运行时间,这里设置的是60s即如果应用程序在60s内退出,pm2会认为程序异常退出,此时触发重启max_restarts设置数量
  • max_restarts:设置应用程序异常退出重启的次数,默认15次(从0开始计数)
  • cron_restart:定时启动,解决重启能解决的问题
  • watch:是否启用监控模式,默认是false。如果设置成true,当应用程序变动时,pm2会自动重载。这里也可以设置你要监控的文件。
  • merge_logs:
  • exec_interpreter:应用程序的脚本类型,这里使用的shell,默认是nodejs
  • exec_mode:应用程序启动模式,这里设置的是cluster_mode(集群),默认是fork
  • autorestart:启用/禁用应用程序崩溃或退出时自动重启
  • vizion:启用/禁用vizion特性(版本控制)

test.sh

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#!/bin/bash

PROJECT_HOME=/data/test

source /etc/profile && cd $PROJECT_HOME;nohup /usr/bin/npm start &

当然,pm2的参数还有很多很多很多,这里仅仅是个范例demo

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020/03/06 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
使用pm2部署node生产环境
一、PM2是什么 是可以用于生产环境的Nodejs的进程管理工具,并且它内置一个负载均衡。它不仅可以保证服务不会中断一直在线,并且提供0秒reload功能,还有其他一系列进程管理、监控功能。并且使用起来非常简单。 嗯嗯,最好的用处就是监控我们的生产环境下的node程序运行状态,让它给我们日以继日的处于工作状态。 pm2官方文档 ---- 二、为森么要使用pm2 原始社会的我们开发node服务端程序一般过程: 编写好node程序app.js,运行node app.js;或者写入script使用npm运行
keyWords
2019/03/20
4.1K0
Node应用的进程管理器: PM2详细介绍
这里的PM2,不是PM2.5,跟空气没有半毛钱的关系。它是NodeJs应用的进程管理器,可以利用它来简化很多Node应用管理的繁琐任务,如性能监控、自动重启、负载均衡等。
Javanx
2019/09/04
3.4K0
Node应用的进程管理器: PM2详细介绍
pm2在node中的应用
该文章介绍了pm2在node中的应用,包括其主要特性、安装使用方法和运行进程的不同方式。文章还讲解了如何通过pm2来管理node应用,包括启动、停止、监控和日志查看等功能。
用户1141560
2017/12/26
2.1K0
pm2在node中的应用
PM2 进程管理快速入门
PM2 是一个守护进程管理器,可帮助您管理和保持应用程序在线。开始使用 PM2 很简单,它以简单直观的 CLI 形式提供,可通过 NPM 安装。
buzzfrog
2023/09/26
4840
PM2 进程管理工具使用总结
对于后台进程的管理,常用的工具是crontab,可用于两种场景:定时任务和常驻脚本。关于常驻脚本,今天介绍一款更好用的工具:pm2,基于nodejs开发的进程管理器,适用于后台常驻脚本管理,同时对node网络应用有自建负载均衡功能。官方的说法,pm2 是一个带有负载均衡功能的Node应用的进程管理器,个人认为,并不准确,因为pm2支持多种语言,只是对于除node之外的其他进程无负载均衡的能力。
波罗学
2019/07/31
2.8K0
PM2实用入门指南
简介 PM2是node进程管理工具,可以利用它来简化很多node应用管理的繁琐任务,如性能监控、自动重启、负载均衡等,而且使用非常简单。 下面就对PM2进行入门性的介绍,基本涵盖了PM2的常用的功能和
IMWeb前端团队
2018/01/08
1.7K0
PM2实用入门指南
进程管理:通过PM2来管理Node、PHP CLI等应用的运行
PM2.js是一个Node.js应用程序的进程管理器,可以帮助开发人员在生产环境中管理和监控Node.js应用程序或其他程序的进程。它可以自动重启应用程序,监控应用程序的资源使用情况,以及提供实时日志记录和错误处理等功能。此外,PM2.js还可以通过集成的API和CLI工具来管理和监控多个Node.js应用程序。
房东的狗丶
2023/04/06
1.7K0
[译] 在生产环境运行 PM2 & Node.js
原文:https://medium.com/hackernoon/running-pm2-node-js-in-production-environments-13e703fc108a
江米小枣
2020/06/15
1.6K0
PM2 - 进程管理工具
PM2 是具有内置负载均衡器的 Node.js 应用程序的生产过程管理器。它允许您使应用程序永远保持活动状态,在不停机的情况下重新加载它们,并促进常见的系统管理任务。
崔哥
2023/10/23
4010
centerOS部署nginx+node+pm2
说明:在centos里nginx有默认启动配置在etc/nginx/nginx.conf文件中
晓歌
2018/09/28
2.5K0
centerOS部署nginx+node+pm2
nodejs实现多进程
Nodejs的主进程是单线程的,但它有多线程处理方案(更准备来说是多进程方案),即主进程开启不同的子进程,主进程接收所有请求,然后将分发给其它不同的nodejs子进程处理。
conanma
2022/01/04
9390
pm2简单用法
pm2是nodejs的进程管理工具能够让你的nodejs进程永远处于启动状态 是nodejs项目常用的进程管理工具
epoos
2022/06/06
4460
使用 PM2 在 Docker 上部署 Node.js Web 应用
作者:约克 原文地址:https://yorkyu.cn/pm2-deploy-nodejs-on-docker-1f8acea34fa4.html 文章版权归作者所有,转载请注明出处 背景 本文介绍 PM2 在 Docker 上部署 Node.js Web 应用。 PM2 是守护进程管理器,它将帮助您管理和保持 Nodejs 应用程序 24/7 在线。 Docker 是一个开放源代码软件,是一个开放平台,用于开发应用、交付(shipping)应用、运行应用。 Docker 允许用户将基础设施(Infras
Yorkyu
2022/03/22
3.8K0
使用 PM2 在 Docker 上部署 Node.js Web 应用
使用 pm2 守护你的 .NET Core 应用程序
守护进程,英文名:“daemon",也有守护神的意思。守护进程是一个在后台运行并且不受任何终端控制的进程,不会随着会话结束而退出。诸如 mysql、apache 等这类程序默认就提供了守护进程或者以守护进程的方式工作,我们熟悉的 “mysqld”、"httpd" 等其中的 d 就是 daemon 的意思。比如我们在 Linux 系统上以命令 dotnet xxx.dll 运行 .NET Core 应用程序时,如果我们结束会话,那么我们的程序将会结束运行。其原因是 Linux 系统中有一个信号机制,进程可以通过一系列信号进行通信,当用户结束会话时,会向当前会话的子进程发送一个 HUP 信号,一般情况下当前会话的子进程收到HUP信号以后就会退出自己。 这时我们就需要一个守护进程来管控我们的 .NET Core 应用程序进程。
晓晨
2018/10/12
1.4K0
使用 pm2 守护你的 .NET Core 应用程序
PM2用Cluster Mode,不用修改代码即可提升Node.js项目性能!
cluster mode 就是在单台服务器上,开启多个相同 node.js项目 进程,共同处理网络请求服务,让 node.js项目 处理并发和响应速度达到最高性能。
Learn-anything.cn
2021/11/26
1.3K0
Node之PM2 常用命令
引言:PM2 (github上的源码)是开源的基于Nodejs的进程管理器,包括守护进程,监控,日志的一整套完整的功能,基本是Nodejs应用程序不二的守护进程选择,事实上它并不仅仅可以启动Nodejs的程序,只要是一般的脚本的程序它同样可以胜任。
测试小兵
2019/11/20
8630
Node之PM2 常用命令
nodejs在Liunx上的部署生产方式-PM2
先安装:npm install -g pm2 (注意:使用它要先安装它,用root账号和全局模式安装一下) 安装完成使用:pm2 -v 查看版本信息 安装成功之后,启动nodejs项目:pm2 start app.js --项目名称 使用命令 启动程序:pm2 start <app_name|id|all> 列举进程:pm2 list 退出程序:pm2 stop <app_name|id|all> 重起应用:pm2 restart 程序信息:pm2 describe id|all 监控:pm2
磊哥
2018/05/08
1.1K0
如何在Ubuntu 16.04上使用PM2和Nginx开发Node.js TCP服务器应用程序
Node.js是一个流行的开源JavaScript运行时环境,它基于Chrome的V8 Javascript引擎构建。Node.js用于构建服务器端和网络应用程序。TCP(传输控制协议)是一种网络协议,可在应用程序之间提供可靠,有序和错误检查的数据流传输。TCP服务器可以接受TCP连接请求,一旦建立连接,双方都可以交换数据流。
八十岁的背影
2018/09/26
1.6K0
使用nodejs编写api接口并部署到服务器上
1、安装node环境,没有就去看上一篇文章 2、创建一个node项目, 新建一个目录文件,例node_proxy 3、在新建的node项目执行npm init, 文件会生成一个package.json的文件 目录:
小吕
2022/06/16
8.2K0
使用nodejs编写api接口并部署到服务器上
ubuntu搭建nodejs生产环境——快速部署手册
为什么不用CentOS而用Ubuntu作为生产环境的运行平台?这个我也比较好奇,公司订的只能沿用传统,从使用成本的角度来说,此举也是值得肯定的。 测试环境 腾讯云 Ubuntu 16.04 阿里云 Ubuntu 16.04 开启Root账号ssh登录 1.修改配置文件 使用命令:sudo vi /etc/ssh/sshd_config打开文件,找到配置: LoginGraceTime 120 PermitRootLogin prohibit-password 修改成: LoginGraceTi
磊哥
2018/07/04
1.7K0
相关推荐
使用pm2部署node生产环境
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验