使用pm2自动化部署node项目的方法步骤


Posted in Javascript onJanuary 28, 2019

1、pm2简介

pm2(process manager)是一个进程管理工具,维护一个进程列表,可以用它来管理你的node进程,负责所有正在运行的进程,并查看node进程的状态,也支持性能监控,负载均衡等功能。

1.1、使用pm2管理的node程序的好处

  • 监听文件变化,自动重启程序
  • 支持性能监控
  • 负载均衡
  • 程序崩溃自动重启
  • 服务器重新启动时自动重新启动
  • 自动化部署项目

 2、pm2安装与使用

 2.1、全局安装

npm install pm2 -g

2.2、常用命令

启动一个node程序

pm2 start start.js

使用pm2自动化部署node项目的方法步骤

启动进程并指定应用的程序名

pm2 start app.js --name application1

集群模式启动

// -i 表示 number-instances 实例数量
  // max 表示 PM2将自动检测可用CPU的数量 可以自己指定数量
  pm2 start start.js -i max

使用pm2自动化部署node项目的方法步骤

添加进程监视

// 在文件改变的时候会重新启动程序
  pm2 start app.js --name start --watch

使用pm2自动化部署node项目的方法步骤

列出所有进程

pm2 list
pm2 ls // 简写

从进程列表中删除进程

// pm2 delete [appname] | id
pm2 delete app // 指定进程名删除
pm2 delete 0  // 指定进程id删除

删除进程列表中所有进程

pm2 delete all

查看某个进程具体情况

pm2 describe app

使用pm2自动化部署node项目的方法步骤 

查看进程的资源消耗情况

pm2 monit

使用pm2自动化部署node项目的方法步骤

重启进程

pm2 restart app // 重启指定名称的进程
pm2 restart all // 重启所有进程

查看进程日志

pm2 logs app  // 查看该名称进程的日志
pm2 logs all  // 查看所有进程的日志

设置pm2开机自启

开启启动设置,此处是CentOS系统,其他系统替换最后一个选项(可选项:ubuntu, centos, redhat, gentoo, systemd, darwin, amazon)

pm2 startup centos

然后按照提示需要输入的命令进行输入

最后保存设置

pm2 save

3、通过pm2配置文件来自动部署项目

确保服务器安装了pm2,没有安装的话先安装

npm install pm2 -g

3.1 在项目根目录下新建一个 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

3.2、配置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自动化部署node项目的方法步骤

3.3 使用pm2部署项目

每次部署前先将本地的代码提交到远程git仓库

首次部署

pm2 deploy deploy.yaml production setup

部署完成后,既可登陆服务器查看配置的目录下是否从git上拉取了项目

再次部署

pm2 deploy deploy.yaml production upddate

3.4 该部署流程同样适用前端项目

如vue-cli的项目,自动部署到服务器,自动执行npm run build 命令,生成的dist目录,指定到nginx的静态文件目录下。

4、可能会遇到的坑

在window系统下 vscode的命令行程序,以及powershell执行部署的命令时,出现部署失败

pm2 deploy deploy.yaml production setup

使用pm2自动化部署node项目的方法步骤

解决方案:使用git命令行来执行

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
让iframe框架网页在任何浏览器下自动伸缩
Aug 18 Javascript
jQuery 位置函数offset,innerWidth,innerHeight,outerWidth,outerHeight,scrollTop,scrollLeft
Mar 23 Javascript
2种jQuery 实现刮刮卡效果
Feb 01 Javascript
node+koa实现数据mock接口的方法
Sep 20 Javascript
详解ES6中的三种异步解决方案
Jun 28 Javascript
记录一篇关于redux-saga的基本使用过程
Aug 18 Javascript
require.js 加载过程与使用方法介绍
Oct 30 Javascript
JavaScript一元正号运算符示例代码
Jun 30 Javascript
详解将微信小程序接口Promise化并使用async函数
Aug 05 Javascript
html2canvas属性和使用方法以及如何使用html2canvas将HTML内容写入Canvas生成图片
Jan 12 Javascript
js实现贪吃蛇游戏(简易版)
Sep 29 Javascript
javascript代码实现简易计算器
Jan 25 Javascript
jQuery访问json文件中数据的方法示例
Jan 28 #jQuery
JS实现的点击按钮图片上下滚动效果示例
Jan 28 #Javascript
vue-cli3 项目从搭建优化到docker部署的方法
Jan 28 #Javascript
JavaScript 判断iPhone X Series机型的方法
Jan 28 #Javascript
JS实现二维数组元素的排列组合运算简单示例
Jan 28 #Javascript
新手快速上手webpack4打包工具的使用详解
Jan 28 #Javascript
jQuery实现的网站banner图片无缝轮播效果完整实例
Jan 28 #jQuery
You might like
php强制更新图片缓存的方法
2015/02/11 PHP
全新Mac配置PHP开发环境教程
2016/02/03 PHP
php 输出json及显示json中的中文汉字详解及实例
2016/11/09 PHP
网页和浏览器兼容性问题汇总(draft1)
2009/06/01 Javascript
jQuery Ajax方法调用 Asp.Net WebService 的详细实例代码
2011/04/27 Javascript
精通Javascript系列之数值计算
2011/06/07 Javascript
单击复制文字兼容各浏览器的完美解决方案
2013/07/04 Javascript
angular实现商品筛选功能
2017/02/01 Javascript
使用ionic(选项卡栏tab) icon(图标) ionic上拉菜单(ActionSheet) 实现通讯录界面切换实例代码
2017/10/20 Javascript
开发Vue树形组件的示例代码
2017/12/21 Javascript
AngularJS自定义表单验证功能实例详解
2018/08/24 Javascript
vue获取元素宽、高、距离左边距离,右,上距离等还有XY坐标轴的方法
2018/09/05 Javascript
解决微信小程序防止无法回到主页的问题
2018/09/28 Javascript
vue.js引入外部CSS样式和外部JS文件的方法
2019/01/06 Javascript
Vue 之孙组件向爷组件通信的实现
2019/04/23 Javascript
JS中实现浅拷贝和深拷贝的代码详解
2019/06/05 Javascript
Vue登录主页动态背景短视频制作
2019/09/21 Javascript
js实现录音上传功能
2019/11/22 Javascript
Vue引入Stylus知识点总结
2020/01/16 Javascript
Element InputNumber计数器的使用方法
2020/07/27 Javascript
[01:28]2014DOTA2国际邀请赛中国区预选赛四大豪门直升机抵达会场
2014/05/24 DOTA
python命令行参数解析OptionParser类用法实例
2014/10/09 Python
python和bash统计CPU利用率的方法
2015/07/10 Python
Python Pandas数据结构简单介绍
2019/07/03 Python
python画图——实现在图上标注上具体数值的方法
2019/07/08 Python
Python 下载及安装详细步骤
2019/11/04 Python
Python要如何实现列表排序的几种方法
2020/02/21 Python
python通用数据库操作工具 pydbclib的使用简介
2020/12/21 Python
施华洛世奇巴西官网:SWAROVSKI巴西
2019/12/03 全球购物
Orlebar Brown官网:设计师泳裤和泳装
2020/12/08 全球购物
C语言中一个结构不能包含指向自己的指针吗
2012/05/25 面试题
师德建设实施方案
2014/03/21 职场文书
2014大学生批评与自我批评思想汇报
2014/09/21 职场文书
学校副校长四风对照检查材料整改措施
2014/09/25 职场文书
2015秋学期开学寄语
2015/05/28 职场文书
分享7个 Python 实战项目练习
2022/03/03 Python