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. canvas笔记备忘

    备忘 1. canvas标签的宽和高设置是标签属性设置, 不是 css 属性设置. 如果用 css 属性设置大小, canvas 会被拉伸. 标签属性例如: class, id, style, wid ...

  2. tensorflow 笔记 16:tf.pad

    函数: tf.compat.v1.pad tf.pad 函数表达式如下: tf.pad(    tensor,    paddings,    mode='CONSTANT',    name=Non ...

  3. linux环境下安装python 3

    说明: 在linux环境下,都默认安装python 2的环境,由于python3在python2的基础上升级较大,所以安装python 3环境用于使用最新的python 3的语法. 安装过程: 1.下 ...

  4. EasyNVR网页摄像机无插件H5、谷歌Chrome直播方案-Onvif(三)使用Onvif协议进行设备PTZ云台控制

    背景分析 熟悉EasyNVR产品的盆友们应该都知道,EasyNVR主要完成的是RTSP视频流到RTMP/HLS/Flv的转码,并提供了一套api和一个可视化管理平台来便于调用.同时支持ONVIF协议进 ...

  5. LeetCode_453. Minimum Moves to Equal Array Elements

    453. Minimum Moves to Equal Array Elements Easy Given a non-empty integer array of size n, find the ...

  6. 【SQL骚操作】SqlServer数据库表生成C# Model实体类SQL语句

    已知现有表T1 想快速获取cs类结构 /// <summary> /// T1 /// </summary> public class T1 { /// <summary ...

  7. Linux下安装配置rocketmq

    1.安装jdk,如果系统有原来的系统自带的先删掉,因为很多库不全,自己需要到jdk官网下载包. 卸载CentOS自带的OpenJdk: [root@centos-lx /]# rpm -qa | gr ...

  8. C# web项目乱码问题解决

    在 web.config 文件中添加代码  <globalization requestEncoding="GB2312" responseEncoding="GB ...

  9. Linux内核中的双向链表struct list_head

    一.双向链表list_head Linux内核驱动开发会经常用到Linux内核中经典的双向链表list_head,以及它的拓展接口和宏定义:list_add.list_add_tail.list_de ...

  10. 页码0~N ,其中0,1....9都出现了几次

    /* 这道题目可以暴力解答:对1~n的每个数进行从低位到高位分析 一旦这个数字num出现,a[num]++即可 第二种方法: 由0,1,...9组成的所有n位数,从n个0到n个9共10^n个数,0,1 ...