node程序的部署神器pm2的基本使用

pm2是从nodejs衍生出来的服务器进程管理工具,可以做到开机就启动nodejs。当然了,也可以用nohup来做这件事情的。

前言

众所周知,Node.js运行在Chrome的JavaScript运行时平台上,我们把该平台优雅地称之为V8引擎。不论是V8引擎,还是之后的Node.js,都是以单线程的方式运行的,因此,在多核心处理器的系统中并不能发挥其最大的性能。

Node.js的cluster模块

幸运的是,Node.js给我们提供了cluster模块,它可以生成多个工作线程来共享同一个TCP连接。

它是如何运作的呢?

首先,Cluster会创建一个master,然后根据你指定的数量复制出多个server app(也被称之为工作线程)。它通过IPC通道与工作线程之间进行通信,并使用内置的负载均衡来更好地处理线程之间的压力,该负载均衡使用了Round-robin算法(也被称之为循环算法)。

当使用Round-robin调度策略时,master accepts()所有传入的连接请求,然后将相应的TCP请求处理发送给选中的工作线程(该方式仍然通过IPC来进行通信)。

用PM2的方式

PM2内置的cluster功能,内部包含了所有上述的处理逻辑,因此你不必对代码做任何修改。Cluster模块的功能非常强大,使用PM2会使它变得更加容易。

把pm2加入开机启动

一般来说,pm2 startup即可,会根据当前系统自动识别加入开机启动项的方式。因为不同系统的情况下,开机启动项的加载方式是不一样的。当然,你也可以指定一下当前系统的类型。具体可以参考相关文档。

想要PM2在服务器重启后自动运行之前的应用,可以先通过pm2 start启动你的应用,然后执行下面的命令:

pm2 save

这将在~/.pm2目录下生成一个dump.pm2文件,里面描述了当前PM2上运行着的所有应用。然后执行命令:

pm2 startup [platform]

注意有必要添加可选参数platform以明确告知pm2当前的系统环境。这样,下次当服务器重启时,PM2会自动运行之前保存的应用。

当然,这里也可以指定startup的启动用户,例如:

pm2 startup -u sunan

这样指定的话,pm2的启动身份,就是sunan,而不是root了。

启动任务

cd到对应目录后,使用pm2 start命令启动对应js,并保存。

pm2 start <js文件相对路径>
pm2 start <json的任务描述文件相对路径>
pm2 start server/app.js
pm2 start server/app.json

上面的命令,需要您根据实际情况任选一条。

pm2 save

pm2 start 这个命令是重点,整个部署的核心所在。再说一下pm2 start的几种变形,常规上来说,一般跟的是js的文件路径,或者是个json描述文件,甚至是个sh文件。

pm2 save的这个命令实际上会把当前pm2 start的情况写入到配置文件中。

查看所有pm2任务及删除pm2任务

pm2 list
pm2 delete <task name>

如下图:

上述操作完成后,你如果再次重新启动服务器的话,就会发现,你的nodejs网站已经自动为你启动完成了。

原文地址:https://www.cnblogs.com/bq-med/p/9012344.html

时间: 2024-11-02 23:13:17

node程序的部署神器pm2的基本使用的相关文章

部署node程序并维持正常运行时间

12.2部署的基础知识 假定你创建了一个想要展示的Web程序,或者创建了一个商业应用,在把它放到生产环境中之前需要测试一下.你很可能会从一个简单的部署开始,然后再做些工作让它的正常运行时间和性能达到最优.本节会带着你经历一次简单.临时的Git部署,并教你如何用Forever把程序跑起来.临时性部署在重启后会丢失,但它们的优势是设置起来很迅速. 12.2.1 从Git存储库部署我们快速过一下使用Git存储库的基本部署,让你对主要步骤有个直观的认识.大多数部署都需要完成下面这些步骤:(1) 用SSH

nodejs部署方式-pm2

目前Nodejs开发中有很多痛点,其中有一个是修改完代码以后需要我们重启服务才能看到效果.这样一次次的杀进程.重启,杀进程.重启很让人头大.程序员是最痛恨重复工作的物种,之前有了解过的同学可能知道 forever . forever 可以帮我们解决上面的问题,通过对资源变化的检测做到变化后自动重启.开发阶段我们使用 node file.js 来启动另外由于Nodejs的单线程,任何异常都会导致整个服务中断,这对于生产上长时间提供服务的程序来讲是不可以的, forever 可以帮我们在异常后重启,

Vs2010winform程序打包部署

1.新建安装部署项目 打开vs2010,选择文件->新建->项目->其他项目类型->安装和部署->选择安装项目.如下图: 2.开始制作 点击如上图中确定后进入项目开始制作: 2.1点击"应用程序文件夹"右击选择添加->文件夹或者双击"应用程序文件夹"在右边的空白处右击选择添加->文件夹.如下图: 2.2将自己开发项目中对应的文件添加到安装部署对应的文件夹中,这里我就把自己开发项目中的Dict文件夹中的文件添加到安装部署项目中

SharePoint自定义程序页面部署 不用重启IIS

SharePoint的部署方式默认是部署WSP包,尤其是有多个前端的时候WSP包的部署显得非常方便和快捷,但是WSP的部署需要重启整个IIS服务会造成SharePoint站点一段时间不能访问.结合自己项目的情况这里我们提出文件对考的方式来替代WSP包的部署.这里有两个地方需要注意: 1. 我们的SharePoint项目不会影响SharePoint内容数据库: 2. IIS不重启,但是SharePoint站点对应的应用程序池会自动回收 这里我们以一个demo来做说明: 如图我们的SharePoin

summit应用程序的部署

summit应用程序的部署主要包括如下部分: 包括 1) ClientTree程序安装 2) SMT配置 3) FT 程序包 安装前提: 1)Mysis人员已基于已有的测试环境安装好数据库和summit 2)测试环境应用程序齐备 安装步骤: ClientTree: 首先打包之前测试环境的clienttree dev01和envsetting(导入环境变量的脚本): 将打包好的dev01.tar和envsetting.tar上传至SIT环境的/sumapps/client/目录下并展开: 将dev

使用webstorm调试node程序

前言 相信大家接触过不少node代码了,如果你应用的比较初级或者针对你的项目不需要接触过深的node代码,也许你仅仅需要简单的console.log('your variable')就完全满足你的需要了.如果你应用node比较深入,想要调试(debug)之,我想你应该接触过node-inspector,大致用法流程,简单如下—— 1.安装:npm install -g node-inspector 2.启动debug模式(单独命令行): node-debug &(该命令默认8080端口) nod

VS2013程序打包部署(图解)

首先要说明的是VS解决方案配置下的Debug模式和Release模式有什么区别.Debug模式通常称为调试模式,它包含调试信息,未对代码进行优化,方便程序员调试程序:Release模式通常叫做发布模式,不包含调试信息,但是它对代码进行了优化,使程序代码和运行速度都是最优的.因此我们在发布系统之前,一定要保证系统没有Bug,也就是在Debug模式下能够成功生成解决方案.解决方案配置转换方式详见下图: 现在我们只需要保证Debug模式下没问题就行,暂时不用管Release模式. 接下来就是我们今天的

VS2013程序打包部署(图解),vs2013部署

VS2013程序打包部署(图解),vs2013部署 首先要说明的是VS解决方案配置下的Debug模式和Release模式有什么区别.Debug模式通常称为调试模式,它包含调试信息,未对代码进行优化,方便程序员调试程序:Release模式通常叫做发布模式,不包含调试信息,但是它对代码进行了优化,使程序代码和运行速度都是最优的.因此我们在发布系统之前,一定要保证系统没有Bug,也就是在Debug模式下能够成功生成解决方案.解决方案配置转换方式详见下图: 现在我们只需要保证Debug模式下没问题就行,

WPF ClickOnce应用程序IIS部署发布攻略

WPF程序非常适合公司内网使用,唯一缺点就是客户端要安装.net框架4.0.优势也很明显,在客户端运行的是一个WinForm程序,自动下载,可以充分利用客户机的性能,而且是以当前的Windows用户权限运行,避免了权限带来的问题.而我觉得最大的益处还是可以自动更新!这样就具备了CS程序功能强大速度快的优点,又有BS程序部署升级容易的优点. 本文要讨论的就是,WPF ClickOnce应用程序的发布,IIS设置,客户端使用的一系列过程. 一.先建立一个IIS网站承载WPF应用程序. 1.新建一个目