内容简介:PM2 是 node 进程管理工具,可以利用它来简化很多 node应用管理的繁琐任务,如性能监控、自动重启、负载均衡等,而且使用非常简单。参数说明:停止特定的应用。可以先通过
简介
PM2 是 node 进程管理工具,可以利用它来简化很多 node应用管理的繁琐任务,如性能监控、自动重启、负载均衡等,而且使用非常简单。
安装
npm install -g pm2
快速使用
pm2 start app.js
常用命令
启动
参数说明:
-
--watch
:监听应用目录的变化,一旦发生变化,自动重启。如果要精确监听、不见听的目录,最好通过配置文件。 -
-i --instances
:启用多少个实例,可用于负载均衡。如果-i 0
或者-i max
,则根据当前机器核数确定实例数目。 -
--ignore-watch
:排除监听的目录/文件,可以是特定的文件名,也可以是正则。比如--ignore-watch="test node_modules "some scripts""
-
-n --name
:应用的名称。查看应用信息的时候可以用到。 -
-o --output <path>
:标准输出日志文件的路径。 -
-e --error <path>
:错误输出日志文件的路径。 -
--interpreter <interpreter>
:the interpreter pm2 should use for executing app (bash, python...)。比如你用的coffee script来编写应用。
重启
pm2 restart app.js
3.3 停止
停止特定的应用。可以先通过 pm2 list
获取应用的名字(--name指定的)或者进程id。
pm2 stop app_name|app_id
如果要停止所有应用,可以
pm2 stop all
停止
类似 pm2 stop
,如下
pm2 stop app_name|app_id pm2 stop all
从进程列表删除进程
// pm2 delete [appname] | id pm2 delete app // 指定进程名删除 pm2 delete 0 // 指定进程id删除
删除进程列表中所有进程
pm2 delete all
查看进程状态
pm2 list // 或者 pm2 ls
查看某个进程的信息
pm2 describe 0
负载均衡
命令如下,表示开启三个进程。如果 -i 0
,则会根据机器当前核数自动开启尽可能多的进程。
pm2 start app.js -i 3 # 开启三个进程 pm2 start app.js -i max # 根据机器CPU核数,开启对应数目的进程
日志查看
除了可以打开日志文件查看日志外,还可以通过 pm2 logs
来查看实时日志。这点对于线上问题排查非常重要。
比如某个 node 服务突然异常重启了,那么可以通过 pm2 提供的日志 工具 来查看实时日志,看是不是脚本出错之类导致的异常重启。
pm2 logs
开机自动启动
可以通过 pm2 startup
来实现开机自启动。细节可 参考 。大致流程如下
pm2 save pm2 startup [platform]
监控(monitor)-查看进程的资源消耗情况
运行如下命令,查看当前通过pm2运行的进程的状态。
pm2 monit
通过pm2配置文件来自动部署项目
在项目根目录下新建一个 deploy.yaml 文件
# deploy.yaml apps: - script: ./start.js # 入口文件 name: 'app' # 程序名称 env: # 环境变量 COMMON_VARIABLE: true env_production: NODE_ENV: production deploy: # 部署脚本 production: # 生产环境 user: lentoo # 服务器的用户名 host: 192.168.2.166 # 服务器的ip地址 port: 22 # ssh端口 ref: origin/master # 要拉取的git分支 ssh_options: StrictHostKeyChecking=no # SSH 公钥检查 repo: https://github.com/**.git # 远程仓库地址 path: /home # 拉取到服务器某个目录下 pre-deploy: git fetch --all # 部署前执行 post-deploy: npm install && pm2 reload deploy.yaml --env production # 部署后执行 env: NODE_ENV: production
配置git的ssh免密认证
- 在服务器中生成rsa公钥和私钥,当前是 centos7 下进行
- 前提服务器要安装git,没有安装的先安装git,已安装的跳过
yum –y install git
- 生成秘钥
ssh-keygen -t rsa -C "xxx@xxx.com"
在~/.ssh目录下有 id_rsa和 id_rsa.pub两个文件,其中id_rsa.pub文件里存放的即是公钥key。
- 登录到GitHub,点击右上方的头像,选择settings ,点击Add SSH key,把id_rsa.pub的内容复制到里面即可。
使用pm2部署项目
每次部署前先将本地的代码提交到远程git仓库
- 首次部署
pm2 deploy deploy.yaml production setup 复制代码
部署完成后,既可登陆服务器查看配置的目录下是否从git上拉取了项目
- 再次部署
pm2 deploy deploy.yaml production upddate
该部署流程同样适用前端项目
如vue-cli的项目,自动部署到服务器,自动执行npm run build 命令,生成的dist目录,指定到nginx的静态文件目录下。
参考资料
其他资料
https://pm2.io/doc/zh/runtime/overview/
本文由taoweng 创作,采用 知识共享署名4.0 国际许可协议进行许可
本站文章除注明转载/出处外,均为本站原创或翻译,转载前请务必署名
最后编辑时间为: Jan 30, 2019 at 10:12 am
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Numerical Recipes 3rd Edition
William H. Press、Saul A. Teukolsky、William T. Vetterling、Brian P. Flannery / Cambridge University Press / 2007-9-6 / GBP 64.99
Do you want easy access to the latest methods in scientific computing? This greatly expanded third edition of Numerical Recipes has it, with wider coverage than ever before, many new, expanded and upd......一起来看看 《Numerical Recipes 3rd Edition》 这本书的介绍吧!