本文主要介绍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的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。