启用集群模式

只需要在启动应用时带上i参数

pm2 start app.js -i max

max:意味着PM2将自动检测可用的CPU数量和运行多个进程可以在负载均衡模式(但是不推荐使用)

或者使用json文件启动的

{
"apps" : [{
"script" : "api.js",
"instances" : "max",
"exec_mode" : "cluster"
}]
}

当然还支持js和ylm文件,js示例如下

相关资料

module.exports = {
apps : [{
name : "worker",//应用名称
script : "./worker.js", //脚本路径相对于pm2开始
watch : true, //开启监察,文件改变自动重启
env: {
"PORT": 3000,
"NODE_ENV": "development",
},
env_production : {
"PORT": 80
"NODE_ENV": "production"
}
},{
name : "api-app",
script : "./api.js",
cwd : "/home/www/project_root/current",//
"error_file": "./logs/app.err.log",
"out_file": "./logs/app.out.log",
"log_date_format" : "YYYY-MM-DD HH:mm Z"
instances : 4, // 实例(多核)
exec_mode : "cluster" // 集群模式
}]
}

然后再启动进程

pm2 start processes.json

重载应用

pm2 reload <app_name>

或者

pm2 reload process.json
pm2 reload process.json --only api

一键发布

yml的书写方式(process.yml)

apps:
- script : server.js
name : 'pm2 test'
watch : true
env :
NODE_ENV: development
env_production:
NODE_ENV: production
deploy :
production :
user : root
key : C:/Windows/SSH-ubuntu.pem #服务器sshkey(阿里云再服务器镜像创建的时候会生成 然后保存到本地)
host :
- 120.78.174.212 #服务器ip
port : 22
ref : origin/master
repo : git@gitee.com:artiely/pm2test.git #仓库地址
path : /www/pm2test/production #发布地址
ssh_options : StrictHostKeyChecking=no #ssh权限
pre-deploy : git fetch --all #发布前的操作
post-deploy : 'npm install && npm run build && pm2 startOrRestart process.yml --env production'
env :
NODE_ENV : production

第一次发布本地执行

pm2 deploy process.yml production setup

然后每次发布只需本地执行如下命令,服务器就会自动拉取创库代码并发布

pm2 deploy process.yml production

注意事项

github上必须有服务器的公钥和本地的公钥

https://help.github.com/articles/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent/

这里有各个系统生成id_rsa的方法

在实际操作中可能由于操作系统不同和权限的原因会遇到一些坑,大家参考报错信息都可以寻得答案

pm2进阶使用的更多相关文章

  1. pm2 start命令进阶详解

    在node的世界里面,并不存在nginx或者apache,甚至tomcat这种东东.一个node,本身就用几行代码,就可以启动个server进程,监听个端口,为大家提供web服务.这和传统的网站代码的 ...

  2. webpack进阶构建项目(一)

    webpack进阶构建项目(一) 阅读目录 1.理解webpack加载器 2.html-webpack-plugin学习 3.压缩js与css 4.理解less-loader加载器的使用 5.理解ba ...

  3. pm2的的常用命令及用法

    使用pm2启动静态文件服务器的方法如下: pm2 serve path port pm2 serve . 9001 这样就可以把当前文件夹下的静态文件跑起来了,而且端口号是9001, 同样也支持进阶的 ...

  4. nodejs打包成桌面程序(exe)的进阶之路

    nodejs打包成桌面程序(exe)的进阶之路 node js bat 前端 计划任务 前言:最近的研究,请大佬们细品 第一篇 - 任务计划程序篇 说真的研究到将nodejs打包成可执行的exe文件是 ...

  5. NodeJs之pm2

    pm2 pm2是一个进程管理工具,可以用它来管理你的node进程,并查看node进程的状态,当然也支持性能监控,进程守护,负载均衡等功能. 开发过程中建议时不时的参看官方详细命令行使用:命令行 pm2 ...

  6. nodejs进阶(6)—连接MySQL数据库

    1. 建库连库 连接MySQL数据库需要安装支持 npm install mysql 我们需要提前安装按mysql sever端 建一个数据库mydb1 mysql> CREATE DATABA ...

  7. nodejs进阶(4)—读取图片到页面

    我们先实现从指定路径读取图片然后输出到页面的功能. 先准备一张图片imgs/dog.jpg. file.js里面继续添加readImg方法,在这里注意读写的时候都需要声明'binary'.(file. ...

  8. JavaScript进阶之路(一)初学者的开始

    一:写在前面的问题和话 一个javascript初学者的进阶之路! 背景:3年后端(ASP.NET)工作经验,javascript水平一般般,前端水平一般般.学习资料:犀牛书. 如有误导,或者错误的地 ...

  9. nodejs进阶(3)—路由处理

    1. url.parse(url)解析 该方法将一个URL字符串转换成对象并返回. url.parse(urlStr, [parseQueryString], [slashesDenoteHost]) ...

随机推荐

  1. Java 10 的 10 个新特性,将彻底改变你写代码的方式!

    Java 9才发布几个月,很多玩意都没整明白,现在Java 10又快要来了.. 这时候我真尼玛想说:线上用的JDK 7 甚至JDK 6,JDK 8 还没用熟,JDK 9 才发布不久不知道啥玩意,JDK ...

  2. JS for循环小题2

    ********** for(var a = 1; a<=4;a++){ //外循环定义循环4次,4行 for(var i= 1;i<=a;i++){ //内循环控制*的打印次数,循环一次 ...

  3. websocketj--随时随地在Web浏览器中操作你的服务端程序

    0 - 有没有觉得Linux标准终端界面输入输出枯燥无味? 1 - 什么?vmstat命令的输出数据不直观?有没有想过能够可视化该命令的输出? 2 - 尝试过用浏览器操作Windows中的cmd吗? ...

  4. Spring(一):eclipse上安装spring开发插件&下载Spring开发包

    eclipse上安装spring开发插件 1)下载安装插件包:https://spring.io/tools/sts/all 由于我的eclipse版本是mars 4.5.2,因此我这里下载的插件包是 ...

  5. jacascript AJAX 学习

    前言:这是笔者学习之后自己的理解与整理.如果有错误或者疑问的地方,请大家指正,我会持续更新! AJAX 是 asynchronous javascript and XML 的简写,就是异步的 java ...

  6. Array方面Js底层代码学习记录

    一..clear() →Array function clear() { this.length = 0; return this; } 返回清除item的空数组. 例子: var fruits = ...

  7. linux内核源码分析 - nvme设备的初始化

    本文为原创,转载请注明:http://www.cnblogs.com/tolimit/ 本文基于3.18.3内核的分析,nvme设备为pcie接口的ssd,其驱动名称为nvme.ko,驱动代码在dri ...

  8. Drainage Ditches~网络流模板

    Description Every time it rains on Farmer John's fields, a pond forms over Bessie's favorite clover ...

  9. springmvc文件下载之文件名下划线问题终极解决方案

    直接上代码:Action中代码片段. @RequestMapping("download")public String download(ModelMap model, @Mode ...

  10. Centos常用命令之:搜索

    在linux中,所有的文件都是以目录树的形式存在的.而每个发行版的文件存放之间又会有些差别. 这时候,如果我们想看某个命令或者文档的时候就必须先通过某种方式找到改文档的所在位置. 在linux中提供了 ...