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

摘要:
pm2是从nodejs衍生出来的服务器进程管理工具,可以做到开机就启动nodejs。不论是V8引擎,还是之后的Node.js,都是以单线程的方式运行的,因此,在多核心处理器的系统中并不能发挥其最大的性能。把pm2加入开机启动一般来说,pm2startup即可,会根据当前系统自动识别加入开机启动项的方式。启动任务cd到对应目录后,使用pm2start命令启动对应js,并保存。pm2savepm2start这个命令是重点,整个部署的核心所在。pm2save的这个命令实际上会把当前pm2start的情况写入到配置文件中。

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调度策略时,masteraccepts()所有传入的连接请求,然后将相应的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了。

非常遗憾的是Windows对pm2 支持不够友好,startup 的方式在 Windows 系统下并不支持,官方的文档:

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

我们可以用Windows自带的启动 ,比如把启动这个程序的命令放进bat脚本。

  1. 在cmd中输入“gpedit.msc”,打开“组策略”窗口。
  2. 依次“计算机配置→Windows设置→脚本(启动/关机)”节点。
  3. 双击右侧详细资料窗格中的“启动”项目,单击“添加”按钮。
  4. 将你所写的bat脚本添加为新的计算机启动脚本。

启动任务

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>

如下图:

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

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

免责声明:文章转载自《node程序的部署神器pm2的基本使用》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇MySQL复制日常维护与管理pinpoint安装(docker)下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

三、Electron + Webpack + Vue 搭建开发环境及打包安装 ---- 打包electron应用

目录 Webpack + Vue 搭建开发环境及打包安装 ------- 打包渲染进程 Electron + Webpack  搭建开发环境及打包安装 ------- 打包主进程 Electron + Webpack + Vue 搭建开发环境及打包安装 ---- 打包electron应用 三、打包Election App 应用   在之前的节中已经写...

深入 CommonJs 与 ES6 Module

目前主流的模块规范 UMD CommonJs es6 module umd 模块(通用模块) (function (global, factory) { typeof exports === 'object' &amp;&amp; typeof module !== 'undefined' ? module.exports =...

node——将用户提交的数据写入data.json文件

前续 当我们在进行将数据提交到某个网页时,需要将提交数据保存下来 1.提交数据 2.获得数据 3.保存数据 先看提交数据: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <link rel="styleshe...

OpenShift实战(一):OpenShift安装

1.1 服务器基本信息   本次安装采用一个master、5个node、3个etcd,node节点两块硬盘,60G磁盘用于docker storage,xxx改为自己的域名或主机名 节点/主机名 功能 IP 内存 磁盘 CPU      master1.xxx.net Master节点 192.168.10.110 16G 40G 8C nod...

vue开发环境搭建

大致分这么几个骤: 1. 安装node 、npm 、nvm 2. 安装git 、vscode 以及vscode上的一些插件 3. 安装vue-cli 以下详细来说每个步骤 1. 安装node 、 npm 、nvm    在官网下载的 node 安装包,在mac上运行会自动安装在全局目录,使用过程中经常会遇到一些权限问题,所以推荐按该网站 https://...

vue 安装教程

vue 安装教程 转自:https://www.cnblogs.com/miller-star/p/6394760.html 1.安装node.js(http://www.runoob.com/nodejs/nodejs-install-setup.html) 2.基于node.js,利用淘宝npm镜像安装相关依赖  在cmd里直接输入:npm inst...