pm2自动重启node项目,nodejs 部署,nodejs高大上的部署方式(PM2)

pm2自动重启node项目,nodejs 部署,nodejs高大上的部署方式(PM2)

本文主要介绍nodejs Tall上的部署方法(PM2),边肖觉得挺好的。现在分享给大家,给大家一个参考。来和边肖一起看看吧。

如果直接通过node app启动,如果报错,可能会直接停止整个操作。主管觉得只是作为一个开发环境。网上找pm2。目前,似乎最常见的在线部署nodejs项目是永远和PM2。

使用场合:

主管用于开发环境。

Forever管理多个站点,每个站点的访问量都很小,不需要监控。

节点由开发环境使用,并在修改后自动重新启动。

Pm2网站访问量大,需要完整的监控界面。

PM2的主要特色:

内置负载平衡(使用节点集群集群模块)

后台操作

0秒关机过载,我理解大概意思是维护升级不需要停机。

使用Ubuntu和CentOS的启动脚本

停止不稳定的过程(避免无限循环)

控制台检测

提供HTTP API

远程控制和实时接口API (Nodejs模块,允许与PM2流程管理器交互)

1、最常用的属nohup了,其实就是在后台执行进程,末尾加个

[周杰@ ops-dev ~]$ nohup node/home/周杰/ops/app.js

[1] 31490nohup:忽略输入并将输出追加到“nohup.out”

即此时程序已经启动,可以直接访问,原程序的标准输出自动重定向到当前目录下的nohup.out文件,起到日志的作用。此命令可以在您注销帐户/关闭终端后继续运行相应的进程。Nohup的意思是不要挂断。

这个命令的一般形式是:nohup命令。

这种不可靠的表象,往往是无声的过程挂在后台。

2、用screen另开一个屏幕,这种方式可以直接在屏幕上看到程序运行情况

为应用程序打开一个屏幕,例如screen -r ops,并使用npm start启动它。

退出后台:ctrl a,然后按D,不要直接按ctrl c,否则退出。

这种方法不专业,呵呵,但是在生产环境下操作很容易看出来。

这实际上是在forever,package.json中配置的:

脚本':{

start': 'forever app.js ',

测试':' supervisor app.js '

},

3、PM2

要使用它,请先安装它。使用根帐户和全局模式安装它:

npm安装-g pm2

用它来启动程序(可以直接在当前目录pm2startapp.js-nameuops下启动)

[周杰@运营开发uops]$ pm2 start app.js

[PM2]产卵PM2守护进程

[PM2]成功

【PM2】流程app.js上线

应用名称 id 模式 PID 状态重新启动正常运行时间内存观看

app 0 叉 308 在线 0 0s 21.879 MB 禁用

使用“pm2信息id |名称”获取有关应用程序的更多详细信息

[周杰@运营发展uops]$

看,显示成功,程序已经静默成功启动,可以实时监控程序的运行。比如执行一次pm2重启,上面提到的重启列变成1,可以显示程序运行了多久,占用了多少内存。真的很牛逼!

终止程序也很简单:pm2停止。

列出所有以pm2开始的程序:pm2列表

[周杰@运营发展uops]$ pm2列表

应用名称 id 模式 PID 状态重新启动正常运行时间内存观看

应用程序 0 叉 984 在线 1 3s 64.141 MB 禁用

使用“pm2信息id |名称"获取有关应用程序的更多详细信息

查看启动程序的详细信息:pm2描述身份证明(identification)

[周杰@运营发展uops]$ pm2 desc 0

使用pid 0 -名称应用程序描述流程

状态在线

名称应用程序

id 0

路径/首页/周杰/uops/app.js

参数

高管CWD/首页/周杰/uops

错误日志路径/首页/周杰/.pm2/logs/app-error-0.log

出去日志路径/首页/周杰/.pm2/logs/app-out-0.log

pid路径/首页/周杰/.pm2/pids/app-0.pid

模式 fork_mode

节点v8参数

手表重装

解释器节点

重新启动 1

不稳定重启 0

正常运行时间 93s

创建于 2015-01-07T09:41:25.672Z

[周杰@运营发展uops]$

通过pm2列表命令来观察所有运行的进程以及它们的状态已经足够好了。但是怎么来追踪它们的资源消耗呢?别担心,用这个命令:pm2监测

可以得到进程(以及集群)的中央处理器的使用率和内存占用(ctrl c退出)

实时集中原木处理:pm2日志

强大API: pm2 web

你想要监控所有被PM2管理的进程,而且同时还想监控运行这些进程的机器的状态,

[周杰@运营发展uops]$ pm2网站

在端口9615上启动网界面

[PM2]进程/usr/local/node/lib/node _ modules/PM2/lib/http接口。射流研究…已启动

[PM2]进程启动

应用名称 id 模式 PID 状态重新启动正常运行时间内存观看

应用程序 0 叉 984 在线 1 9m 74.762 MB 禁用

PM2-http-界面1叉1878在线00s15.070 MB禁用

使用“pm2信息id |名称”获取有关应用程序的更多详细信息

启动程序时访问浏览器:http://localhost:9615。

该死,我的眼睛又亮又瞎。它是如此的酷,以至于部署的服务器和程序的信息被显示出来:

这个东西对程序运行的监控页面的开发真的很有帮助,呵呵~ ~

监测:pm2监测

集中式日志处理:pm2日志

API:pm2 web(端口:9615)

常用命令总结:

$ pm2 logs显示所有进程日志

$ pm2 stop all停止所有进程

$ pm2 restart all重新启动所有进程

$ pm2 reload all 0秒停止重新加载过程(对于网络进程)

$ pm2 stop 0停止指定的进程。

$ pm2 restart 0重新启动指定的进程

$ pm2 startup生成init脚本来保持进程活动。

$ pm2 web运行一个健壮的计算机API端点(http://localhost: 9615)

$ pm2 delete 0终止指定的进程

$ pm2 delete all终止所有进程

运行流程的不同方式:

$ pm2 start app.js -i max根据有效CPU的数量启动最大数量的进程。

$ pm2 start app.js -i 3启动三个进程

$ pm2 start app.js -x以fork模式启动app.js,而不是集群。

$ pm 2 start app.js-x-a 23以fork模式启动app . js并传递参数(-A23)

$ pm2startapp.js-nameserverone启动一个进程,并将其命名为serverone。

$ pm2 stop serverone停止serverone进程

$ pm2 start app.json启动该进程并在app.json中设置选项

$ pm2startapp.js-I max-A23在-

$ pm 2 start app . js-I max-eerr . log-oout . log启动并生成配置文件。

配置pm2启动文件

将processes.json添加到项目的根目录:

内容如下:

{

应用':[

{

名称':'我的作品',

cwd': '/srv/node-app/current ',

脚本':' bin/www ',

log _ date _ format ':' YYYY-MM-DD HH:MM Z ',

error _ file ':'/var/log/node-app/node-app . stderr . log ',

' out _ file ':' log/node-app . stdout . log ',

PID _ file ':' PID/node-geo-API . PID ',

'实例':6,

min _ uptime ':' 200秒',

' max_restarts': 10,

max_memory_restart': '1M ',

cron_restart': '1 0 * * * ',

'手表':假,

' merge_logs': true,

exec_interpreter': 'node ',

exec_mode': 'fork ',

'自动重启':假,

' vizion ':错误

}

]

}

描述:

Apps:json结构,Apps是一个数组,每个数组成员对应一个运行在pm2中的应用

名称:应用程序名称

Cwd:应用程序所在的目录

Script:应用程序的脚本路径。

日志日期格式:

Error_file:自定义应用程序的错误日志文件。

Out_file:自定义应用程序日志文件

Pid_file:定制应用程序的Pid文件

实例:

Min_uptime:最小运行时间,这里设置为60秒。即如果应用在60s内退出,pm2会认为程序非正常退出,然后触发max _ restarts的重启来设置数值。

Max_restarts:设置应用程序异常退出和重启的次数,默认为15次(从0开始计数)。

Cron_restart:定时启动,解决重启就能解决的问题。

Watch:无论是否启用监控模式,默认为false。如果设置为true,当应用程序更改时,pm2将自动重新加载。您也可以在这里设定要监控的文件。

合并日志:

Exec_interpreter:应用的脚本类型,这里用的shell,默认是nodejs。

Exec_mode:应用启动模式,其中设置了cluster_mode,默认为fork。

Autorestart:当应用程序崩溃或退出时,启用/禁用自动重启。

Zion:启用/禁用vizion功能(版本控制)

可以通过pm2startprocesses.json启动。

您也可以在package.json中编写命令,如下所示:

通过npm运行启动。

对于pm2远程部署到多台机器,请参考http://pm2.keymetrics.io/docs/usage/deployment/.

http://pm2.keymetrics.io/docs/usage/quick-start/,官方网站

这就是本文的全部内容。希望对大家的学习有帮助,支持我们。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: