pm2 是一个带有负载均衡功能的 Node 应用的进程管理器。

1. pm2 主要特点

  • 内建负载均衡(使用Node cluster 集群模块)
  • 保持后台运行
  • 进程守护,系统崩溃后自动重启
  • 启动多进程,充分利用CPU和内存
  • 自带日志记录功能
  • 控制台检测
  • 提供 HTTP API

2. pm2 安装及常用命令

安装

$ npm install pm2 -g   // 全局安装
$ pm2 --version // 查看版本

pm2 命令

启动(入口文件为app.js, 配置文件为pm2.conf.json):

// 直接启动
$ pm2 start app.js // 通过配置文件启动
$ pm2 start app.js

查看启动历史:

$ pm2 list

重启:

修改代码后需要执行:

$ pm2 restart <AppName>/<id>

<!--  <AppName>/<id> 可通过 pm2 list 查看-->

停止进程(可重新启动)

$ pm2 stop <AppName>/<id>

删除进程(不可重新启动)

$ pm2 delete <AppName>/<id>

其他命令

pm2 info <AppName>/<id>  // 查看进程详细信息
pm2 log <AppName>/<id> // 查看进程日志, 执行后,可进行线上调试,查看打印日志
pm2 monit <AppName>/<id> // 打开监控 logs

3. pm2 常用配置

根目录下,新建空文件 /logs/err.log 和 /logs/out.log

新建配置文件 pm2.conf.json

pm2.conf.json:

{
"apps": {
"name": "pm2-test-server", // 起个进程名,即AppName
"script": "app.js", // 启动的入口文件(koa2项目中为/bin/www.js)
"watch": true, // 监听文件变化,自动重启
"ignore_watch": [ // 不需要监听的文件
"node_modules",
"logs"
],
"instances": 4, // 设置多进程
"error_file": "logs/err.log", // 错误日志存储的文件
"out_file": "logs/out.log", // console.log()打印的都会放进去
"log_date_format": "YYYY-MM-DD HH:mm:ss" // 给每行日志标记一个时间
}
}

修改package.json:

{
"name": "pm2-test",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"dev": "cross-env NODE_ENV=dev nodemon app.js",
"prd": "cross-env NODE_ENV=production pm2 start pm2.conf.json"
},
"keywords": [],
"author": "",
"license": "ISC",
"dependencies": { ... "cross-env": "^5.2.0",
"nodemon": "^1.19.1" ... }
}

配置完后,执行下面命令,即可启动项目

$ npm run prd

PM2 对 Node 项目进行线上部署与配置的更多相关文章

  1. 使用HDFS来进行线上应用的文件存储

    使用HDFS来进行线上应用的文件存储 分类: 云计算2011-07-06 17:57 721人阅读 评论(0) 收藏 举报 hadoop任务集群存储数据分析服务器 这段时间公司使用的hadoop组件h ...

  2. 【运维技术】node项目使用strongloop进行部署相关教程

    node项目使用strongloop进行部署相关教程 安装strongloop 下载安装node 解压到路径完成安装 使用软链方式配置环境变量 添加cnpm的淘宝镜像源 安装node-gyp的模块依赖 ...

  3. Win10上部署Apollo配置中心

    基于Docker在Win10上部署Apollo配置中心 https://www.jianshu.com/p/a1215056ce75 http://nobodyiam.com/2016/07/09/i ...

  4. node项目发布+域名及其二级域名配置+nginx反向代理+pm2

    学习node的时候也写了一些demo.但是只是限于本地测试,从来没有发布.今天尝试发布项目. 需要准备的东西 node 项目:为了突出重点,说明主要问题.我只是拿express 写了很简单的demo. ...

  5. 在 Windows Azure 上部署预配置 Oracle VM

    Microsoft 和 Oracle 近期宣布建立战略合作伙伴关系,基于此,我们将通过 Windows Azure 镜像库推出多种常用的 Oracle 软件配置.即日起,客户可以在 Windows S ...

  6. 构建一个 预装 pm2 的 node 项目 docker 底包

    Dockerfile: 创建 dockerfile 文件, 命名为 dockerfile-yourProject-node.8.12.0-pm2 # MAGE: yourGroup/yourProje ...

  7. 转:使用xhprof进行线上PHP性能追踪及分析

    原文来自于:http://avnpc.com/pages/profiler-php-performance-online-by-xhprof 原创作者:AlloVince 之前一直使用基于Xdebug ...

  8. Apache DolphinScheduler & Doris 将于本周六联合进行线上 Meetup

    01 - 活动介绍 2020年,大数据成为国家基建的一个重要组成,大数据在越来越多的领域展现威力.随着大数据的应用场景越来越多,大家对数据的响应速度和数据加工工作流的方便程度也提出了更高的要求.在这种 ...

  9. 如何使用工具进行线上 PHP 性能追踪及分析?

    工作了一两年的 PHPer 大概都多多少少知道一些性能分析的工具,比如 Xdebug.xhprof.New Relic .OneAPM.使用基于 Xdebug 进行 PHP 的性能分析,对于本地开发环 ...

随机推荐

  1. mysql原生sql处理,按逗号拆分列为多行

    举例: id value 1 1,2,3,4 2 2,3,4,5,6 拆分成: id value 1 1 2 2 3 3 4 4 5 5 6 6 ),) ) distinct:去重复操作 a.valu ...

  2. 修改Linux系统时间EDT改为CST

    今天发现一台服务器时间比北京时间慢 12 个小时,使用 date 命令后发现是: 2019年 06月 04日 星期二 21:50:33 EDT EDT 时间即美国东部时间.这里要改为北京时间即可: m ...

  3. 使用 jpype 库实现 Python 调用 java 的 jar 包中的功能

    一.what's the JPype JPype 是一个能够让 python 代码方便地调用 Java 代码的工具.在某些时候 java 的能力更强,我们可以用 java 写一个模块的功能然后用 Py ...

  4. 两分钟观看 nodejs、 iojs、 npmjs 之间的狗血剧情

    开门大吉,欢迎光临.这是 乐玩nodejs npm工具库 微信公众号的第一篇文章,那就先来说说 nodejs/npm 的小秘密,话不多说,赶快开始: 通过一个时间线简要描述下 2008 年 V8 引擎 ...

  5. iOS - 判断程序每天只执行一次

    当进行操作的时候记录操作时间存在偏好设置当中,当再次点击的时候获取现在的时间然后和之前记录的时间进行比较.如果是一天那么就提示“今天已经操作过了”,如果不是一天,那么可以正常操作,然后记录操作时间.如 ...

  6. SpringMVC返回值响应

    1.响应数据和结果视图 1.1 搭建环境 New Module -> Module SDK 1.8 -> Create from archetype -> maven-archety ...

  7. EasyNVR网页摄像机无插件H5、谷歌Chrome直播方案之使用RTSP流判断摄像机设备是否在线以及快照抓取

    背景分析 熟知EasyNVR产品的小伙伴都知道,通过纯Web化的交互方式,只要配置出摄像机的IP.端口.用户名.密码等信息,就可以将地址进行通道配置完成,即可将设备接入.如果设备支持Onvif协议,E ...

  8. Could not get lock /var/lib/dpkg/lock - open (11: Resource temporarily unavailable) 解决办法

    1:我遇到的问题: 在开机运行apt install vim 命令的时候,如下报错: 2:参考博客: 在Ubuntu中,有时候运用sudo  apt-get install 安装软件时,会出现一下的情 ...

  9. windows mysql手动添加my.ini 服务启动不了

    [mysqld] character-set-server=utf8 #绑定IPv4和3306端口 bind-address=0.0.0.0 port= default_storage_engine= ...

  10. 局域网-断网&劫持(kali)

    1.查看局域网中的主机 fping –asg 192.168.1.0/24 2.断网 arpspoof -i wlan0 -t 192.168.100 192.168.1.1 (arpspoof  - ...