pm2进阶使用
启用集群模式
只需要在启动应用时带上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进阶使用的更多相关文章
- pm2 start命令进阶详解
在node的世界里面,并不存在nginx或者apache,甚至tomcat这种东东.一个node,本身就用几行代码,就可以启动个server进程,监听个端口,为大家提供web服务.这和传统的网站代码的 ...
- webpack进阶构建项目(一)
webpack进阶构建项目(一) 阅读目录 1.理解webpack加载器 2.html-webpack-plugin学习 3.压缩js与css 4.理解less-loader加载器的使用 5.理解ba ...
- pm2的的常用命令及用法
使用pm2启动静态文件服务器的方法如下: pm2 serve path port pm2 serve . 9001 这样就可以把当前文件夹下的静态文件跑起来了,而且端口号是9001, 同样也支持进阶的 ...
- nodejs打包成桌面程序(exe)的进阶之路
nodejs打包成桌面程序(exe)的进阶之路 node js bat 前端 计划任务 前言:最近的研究,请大佬们细品 第一篇 - 任务计划程序篇 说真的研究到将nodejs打包成可执行的exe文件是 ...
- NodeJs之pm2
pm2 pm2是一个进程管理工具,可以用它来管理你的node进程,并查看node进程的状态,当然也支持性能监控,进程守护,负载均衡等功能. 开发过程中建议时不时的参看官方详细命令行使用:命令行 pm2 ...
- nodejs进阶(6)—连接MySQL数据库
1. 建库连库 连接MySQL数据库需要安装支持 npm install mysql 我们需要提前安装按mysql sever端 建一个数据库mydb1 mysql> CREATE DATABA ...
- nodejs进阶(4)—读取图片到页面
我们先实现从指定路径读取图片然后输出到页面的功能. 先准备一张图片imgs/dog.jpg. file.js里面继续添加readImg方法,在这里注意读写的时候都需要声明'binary'.(file. ...
- JavaScript进阶之路(一)初学者的开始
一:写在前面的问题和话 一个javascript初学者的进阶之路! 背景:3年后端(ASP.NET)工作经验,javascript水平一般般,前端水平一般般.学习资料:犀牛书. 如有误导,或者错误的地 ...
- nodejs进阶(3)—路由处理
1. url.parse(url)解析 该方法将一个URL字符串转换成对象并返回. url.parse(urlStr, [parseQueryString], [slashesDenoteHost]) ...
随机推荐
- 回收 PV - 每天5分钟玩转 Docker 容器技术(152)
当 PV 不再需要时,可通过删除 PVC 回收. 当 PVC mypvc1 被删除后,我们发现 Kubernetes 启动了一个新 Pod recycler-for-mypv1,这个 Pod 的作用就 ...
- JAVA中的Log4j
Log4j的简介: 使用异常处理机制==>异常 使用debug调试(必须掌握) System.out.Print(); 001.控制台行数有限制 002.影响性能 ...
- 新概念英语(1-5)Nice to meet you.
Is Chang-woo Chinese? Blake:Good morning. B:Good morning, Mr Blake. Blake:This is Miss Sophie Dupont ...
- android- 远程调试
最近由于要在另外一台android设备上调试代码,在本机PC上查看其log.两台机器离的比较远, 无法用usb直接连接,于是在网上找了很多资料,最找使用adb connect方法解决了该问题.解决过程 ...
- python当中的生成器
最近身边的朋友都在问我迭代器是什么回事,经常跟大家一起讨论python的迭代器,一点点的我觉着自己有了更深一层的理解.我写下这篇文章,希望能对懵懵懂懂的好伙伴有些帮助~ 我也不是什么能人,难免说错一些 ...
- 复习HTML+CSS(3)
n 超级链接 l 语法格式:<a 属性 = "值">---</a> l 常用属性: n Href:目标文件的地址URL,该URL可以是相对地址,也可 ...
- transform-style为什么子元素需要定位?
有个园友问我一个问题: 为什么ul和li都要absolute定位呢,让其自然排列,然后沿着x轴进行旋转不行吗?这块一直无法理解. 在这里进行详细的解答: 我们知道圆是有圆心和半径的, 我用定位的方式就 ...
- mysql 千万级数据查询效率实践,分析 mysql查询优化实践--本文只做了一部分,仅供参考
数据量, 1300万的表加上112万的表 注意: 本文只做了部分优化,并不全面,仅供参考, 欢迎指点. 请移步tim查看,因为写的时候在tim写的,粘贴过来截图有问题,就直接上链接了. https ...
- [转]linux如何修改文件或目录的权限(chmod)
linux如何修改文件或目录的权限(chmod) chmod命令是linux上用于改变权限的命令,-R 是递归遍历子目录,因为你要操作的文件使用的*通配符.777,第一个7代表文件所属者的权限,第二个 ...
- else语句的搭配
1.else语句搭配if 要么怎样,要么怎样 2.else语句搭配for和while 干完循环之后执行else,干不完或者break就不执行 3.else与异常处理 没有问题的话就执行else吧