PM2 部署 nodejs 项目

在网上找到pm2.目前似乎最常见的线上部署nodejs项目的有forever,pm2这两种。
使用场合:

forever管理多个站点,每个站点访问量不大,不需要监控。
pm2 网站访问量比较大,需要完整的监控界面。
PM2的主要特性:
内建负载均衡(使用Node cluster 集群模块)
后台运行
0秒停机重载,我理解大概意思是维护升级的时候不需要停机.
具有Ubuntu和CentOS 的启动脚本
停止不稳定的进程(避免无限循环)
控制台检测
提供 HTTP API
远程控制和实时的接口API ( Nodejs 模块,允许和PM2进程管理器交互 )
安装

npm install -g pm2

用法

$ npm install -g pm2 命令行全局安装pm2
$ pm2 start app.js 或者 pm2 start bin/www 启动node项目

$ pm2 stop bin/www 停止pm2服务
$ pm2 list 列出由pm2管理的所有进程信息,还会显示一个进程会被启动多少次,因为没处理的异常。

$ pm2 monit 监视每个node进程的CPU和内存的使用情况

$ pm2 logs 显示所有进程日志
$ pm2 stop all 停止所有进程
$ pm2 restart all 重启所有进程
$ pm2 reload all 0秒停机重载进程 (用于 NETWORKED 进程)
$ pm2 stop 0 停止指定的进程
$ pm2 restart 0 重启指定的进程
$ pm2 startup 产生 init 脚本 保持进程活着
$ pm2 web 运行健壮的 computer API endpoint (http://localhost:9615)
$ pm2 delete 0 杀死指定的进程
$ pm2 delete all 杀死全部进程

运行进程的不同方式:
$ pm2 start app.js -i max 根据有效CPU数目启动最大进程数目
$ pm2 start app.js -i 3 启动3个进程
$ pm2 start app.js -x 用fork模式启动 app.js 而不是使用 cluster
$ pm2 start app.js -x – -a 23 用fork模式启动 app.js 并且传递参数 (-a 23)
$ pm2 start app.js --name serverone 启动一个进程并把它命名为 serverone
$ pm2 stop serverone 停止 serverone 进程
$ pm2 start app.json 启动进程, 在 app.json里设置选项
$ pm2 start app.js -i max – -a 23 在–之后给 app.js 传递参数
$ pm2 start app.js -i max -e err.log -o out.log 启动 并 生成一个配置文件
配置pm2启动文件

在项目根目录添加一个processes.json:
内容如下:

{"apps": [{"name": "mywork","cwd": "/srv/node-app/current","script": "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": "pids/node-geo-api.pid","instances": 6,"min_uptime": "200s","max_restarts": 10,"max_memory_restart": "1M","cron_restart": "1 0 * * *","watch": false,"merge_logs": true,"exec_interpreter": "node","exec_mode": "fork","autorestart": false,"vizion": false}]
}

说明:

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特性(版本控制)

可以通过pm2 start processes.json来启动。
也可以把命令写在package.json里。如下:

在网上找到pm2.目前似乎最常见的线上部署nodejs项目的有forever,pm2这两种。
使用场合:

forever管理多个站点,每个站点访问量不大,不需要监控。
pm2 网站访问量比较大,需要完整的监控界面。
PM2的主要特性:
内建负载均衡(使用Node cluster 集群模块)
后台运行
0秒停机重载,我理解大概意思是维护升级的时候不需要停机.
具有Ubuntu和CentOS 的启动脚本
停止不稳定的进程(避免无限循环)
控制台检测
提供 HTTP API
远程控制和实时的接口API ( Nodejs 模块,允许和PM2进程管理器交互 )
安装
npm install -g pm2
用法

$ npm install -g pm2 命令行全局安装pm2
$ pm2 start app.js 或者 pm2 start bin/www 启动node项目

$ pm2 stop bin/www 停止pm2服务
$ pm2 list 列出由pm2管理的所有进程信息,还会显示一个进程会被启动多少次,因为没处理的异常。

$ pm2 monit 监视每个node进程的CPU和内存的使用情况

$ pm2 logs 显示所有进程日志
$ pm2 stop all 停止所有进程
$ pm2 restart all 重启所有进程
$ pm2 reload all 0秒停机重载进程 (用于 NETWORKED 进程)
$ pm2 stop 0 停止指定的进程
$ pm2 restart 0 重启指定的进程
$ pm2 startup 产生 init 脚本 保持进程活着
$ pm2 web 运行健壮的 computer API endpoint (http://localhost:9615)
$ pm2 delete 0 杀死指定的进程
$ pm2 delete all 杀死全部进程

运行进程的不同方式:
$ pm2 start app.js -i max 根据有效CPU数目启动最大进程数目
$ pm2 start app.js -i 3 启动3个进程
$ pm2 start app.js -x 用fork模式启动 app.js 而不是使用 cluster
$ pm2 start app.js -x – -a 23 用fork模式启动 app.js 并且传递参数 (-a 23)
$ pm2 start app.js --name serverone 启动一个进程并把它命名为 serverone
$ pm2 stop serverone 停止 serverone 进程
$ pm2 start app.json 启动进程, 在 app.json里设置选项
$ pm2 start app.js -i max – -a 23 在–之后给 app.js 传递参数
$ pm2 start app.js -i max -e err.log -o out.log 启动 并 生成一个配置文件

配置pm2启动文件

在项目根目录添加一个processes.json:
内容如下:

{"apps": [{"name": "mywork","cwd": "/srv/node-app/current","script": "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": "pids/node-geo-api.pid","instances": 6,"min_uptime": "200s","max_restarts": 10,"max_memory_restart": "1M","cron_restart": "1 0 * * *","watch": false,"merge_logs": true,"exec_interpreter": "node","exec_mode": "fork","autorestart": false,"vizion": false}]
}

说明:

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特性(版本控制)

可以通过pm2 start processes.json来启动。
也可以把命令写在package.json里。如下:


分享来源

PM2 部署 nodejs 项目相关推荐

  1. nginx+ssl+pm2 部署 nodejs 服务

    nginx+pm2 部署 nodejs 服务 最近在 centos 上部署 nodejs 服务,记下来步骤: 注意都是使用 root 用户. 下载 nvm: curl -o- https://raw. ...

  2. 【宝塔面板部署nodeJs项目】网易云nodeJs部署在云服务器上,保姆级教程,写网易云接口用自己的接口不受制于人

    看了很多部署的,要么少步骤,要么就是写的太简洁,对新手不友好 文章目录 前言 一.下载网易云nodejs项目 1. git clone下载,两种方式 2. 运行项目 二.使用步骤 1. 先在本地运行 ...

  3. 记一次完整的新浪云部署nodejs项目上线完整流程及填坑处理!

    工欲善其事,必先利其器.在开始本次部署新浪云nodejs项目之前,请先做好以下准备工作: 1.注册一个新浪微博账号! 2.使用注册好的新浪微博账号,登录新浪云网站:http://www.sinaclo ...

  4. 使用pm2部署nuxt3项目

    众所周知,nuxt3.js是基于vue开发ssr,seo的项目比较好的框架,那么开发完成项目,如何部署nuxt项目也是比较重要的,接下来就记录一下我在开发中是如何部署的. 这篇文章只是对配置环境变量做 ...

  5. 部署nodejs项目到服务器的一些总结

    安装nodejs 首先在服务器上安装nodejs并配置环境,这个可以参考官方的文档,就不细说了 拷贝项目到服务器上 这里其实可以通过git直接clone在服务器上.当然正常发版一般是将代码打包上传到服 ...

  6. 设置webhook_使用 WebHook 来自动部署 NodeJS 项目!

    前言 在我们本地开发好一个 NodeJS 项目,如果想要给别人看的话一般来说都是需要部署到服务器上面的.如果你使用 github 或者 coding 这里代码托管的服务,只需要在服务器安装好环境且安装 ...

  7. centOS7下 安装nodejs+nginx+mongodb+pm2部署vue项目

    一.购买服务器并远程连接 1.购买服务器和域名 可以选择阿里云或者是其他的厂商的服务器.然后会获得服务器ip地址,用户名和密码. 购买域名,将域名绑定到ip地址上. 2.下载xshell,winscp ...

  8. 在Linux部署Nodejs项目,一旦断掉XShell就会导致服务被停掉,真的很郁闷~怎么办?果断用forever

    客户端启动Node.js应用,用node index.js这样可以正常启动应用,但是如果断开客户端连接,应用也就随之停止了.也就是说这样的启动方式没有给应用一个守护线程. 首先需要安装一个叫做fore ...

  9. 如何将nodejs项目程序部署到阿里云服务器上

    将nodejs项目程序部署到阿里云服务器上 一.概述 二.具体步骤 1.拥有自己的服务器 2.下载Xshell 3. oneinstack配置web环境 4. XShell连接远程主机 5.更新系统软 ...

最新文章

  1. 使用Spring容器
  2. 垃圾回收器机制(二):快速解读GC算法之标记-清除,复制及标记整理-算法
  3. 2020年美团春招 技术综合试卷第一题
  4. Bootstrap table分页问题汇总
  5. Win10 Nodejs搭建http-server注意点
  6. BZOJ 4011 HNOI2015 落忆枫音
  7. Redis教程(四):Hashes数据类型
  8. 怎么用计算机打游戏视频,网吧电脑可以边玩游戏边录视频吗?这样的方法很少人知道...
  9. Linux CentOS服务器时间同步阿里云北京时间
  10. ltm4650_LTM4650IY-1APBF_代理全新进口【linear】现货商
  11. 淘宝/天猫API:item_recommend-获取推荐商品列表
  12. 交换机级联后网速在底层交换机变慢的问题
  13. react-native穿山甲广告android
  14. 合并两个JSONObject
  15. Web3.0 · 基础层技术 · SCQA模型趣谈密码学
  16. 吴恩达 深度学习系列--卷积神经网络(Convolutional Neural Networks)-03(目标检测)
  17. 【C#】简繁体转换类
  18. USACO-The Robot Plow G
  19. 做一名计算机老师应具备的素质,浅谈计算机教师应具备的素质
  20. woff格式字体怎么打开和编辑?

热门文章

  1. Kernel_PCA算法
  2. C语言求输入字符的字母和数字个数
  3. matlab strel函数用法
  4. 杰理之FCC 认证 PC 工具 FCCAssist_1.5.exe 介绍【篇】
  5. matlab横截面数据的统计,常用统计分析软件汇总
  6. pandas中.loc和.iloc以及.at和.iat的区别
  7. 在台湾参加前端大会是什么体验?
  8. open image v5 标注类别对应
  9. 读决战大数据-车品觉
  10. excel批量导入规则验证