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. eclipse从git下载的maven项目需要转成maven才可是使用main方法启动

    导入git项目: 选择导入git项目有会有两个选项:一个是从本地git仓库中导入项目,一个是从github远程仓库中导入项目 我们选择从远程仓库中导入项目: 然后选择本地存放该项目的git仓库 然后选 ...

  2. 阻止Bootstrap 模态框点击背景空白处自动关闭

    问题描述 模态框点击空白处,会自动关闭,怎么阻止关闭事件呢? 解决方法 在HTML页面中编写模态框时,在div初始化时添加属性 aria-hidden=”true” data-backdrop=”st ...

  3. Eclipse中引入com.sun.image.codec.jpeg包报错的完美解决办法

    转: Eclipse中引入com.sun.image.codec.jpeg包报错的完美解决办法  更新时间:2018年02月14日 17:13:03   投稿:wdc   我要评论   Java开发中 ...

  4. 泡泡一分钟:Robust Attitude Estimation Using an Adaptive Unscented Kalman Filter

    张宁 Robust Attitude Estimation Using an Adaptive Unscented Kalman Filter 使用自适应无味卡尔曼滤波器进行姿态估计链接:https: ...

  5. RHEL 7.6 设置时间同步ntp

    1.服务端和客户端 安装包,检查状态 yum install ntp ntpdate -y systemctl start ntpd systemctl status ntpd 2.服务端 修改配置 ...

  6. delimiter关键字

    默认的sql语句以分号";"表示结束.mysql解释器每遇到一个分号,执行一段语句.可以通过delimiter更改语句结束符 mysql>delimiter &&am ...

  7. fidder配置 https设置 手机客户端

    1.APP抓包时的手机代理设置: 让手机和PC在同一个局域网下面: 1.如果PC是笔记本,让iOS或Android手机.iPhone或笔记本它们连接同一个wifi网络即可(自己试了不行,未找到原因). ...

  8. CentOS7.5 使用 kubeadm 安装配置 Kubernetes1.12(四)

    在之前的文章,我们已经演示了yum 和二进制方式的安装方式,本文我们将用官方推荐的kubeadm来进行安装部署. kubeadm是 Kubernetes 官方提供的用于快速安装Kubernetes集群 ...

  9. javascript中var、let、const的区别

    这几天修改别人的js,发现声明变量有的用var,有的用let,那它们有什么区别呢? javascript中声明变量的方式有:var.let.const 1.var (1)作用域: 整个函数范围内,或者 ...

  10. 创建企业级地理数据库报错:ORA-01455

    环境: Oracle Server : 11.2.0.3 (x64) Oracle Client  : 11.1.0.6 (x32) Arcgis Desktop : 10.3 在该环境下执行 &qu ...