网站加载不出来是什么原因购买网站空间大小
pm2进程管理
本节我们将介绍如何使用 pm2 运行和监管我们的 express 项目
准备工作
- 一个 express 项目
 - 全局安装 pm2
 
npm install -g pm2
 
pm2使用介绍
启动应用
你可以用纯命令去运行一个node项目,假设原本运行项目使用 node src/index.js可以跑起来一个项目,则:
pm2 start -name "pm2-node-app" node -- src/index
 
当然你还可以通过将部分信息写到配置文件中,文件可以是 js, json 等,js格式的可以通过以下命令生成:
pm2 init
 
这将得到一个名为 “ecosystem.config.js” 的文件,内容如下:
module.exports = {apps : [{script: 'index.js',watch: '.'}, {script: './service-worker/',watch: ['./service-worker']}],deploy : {production : {user : 'SSH_USERNAME',host : 'SSH_HOSTMACHINE',ref  : 'origin/master',repo : 'GIT_REPOSITORY',path : 'DESTINATION_PATH','pre-deploy-local': '','post-deploy' : 'npm install && pm2 reload ecosystem.config.js --env production','pre-setup': ''}}
};
 
deploy那部分是构建,在本节我们仅将 pm2 用于项目的运行管理,无需关注构建。重点是 apps 列表,每一个元素分别对应一个应用的配置信息,包括启动时运行的脚本命令(script),文件变动监控(watch)等
热重载
假设我们的源码入口位于 “src\index.js”,我们需要开发时热重启项目(仅src内文件变动):
module.exports = {apps : [{script: 'src/index.js',watch: ['src']}]
};
 
pm2根据这个文件去运行应用时可以直接这样:
pm2 start  // 与ecosystem.config.js同目录
 
如果你使用其它的配置文件,如 json,配置的格式也是类似的,则需要向pm2指明该配置文件名,如:
pm2 start app.json
 
管理应用
pm2 stop <id|name|namespace|all|json|stdin>:停止指定的应用pm2 restart <id|name|namespace|all|json|stdin>:重启指定的应用pm2 reload <id|name|namespace|all|json|stdin>:即刻重载web应用pm2 delete <id|name|namespace|all|json|stdin>:删除指定的应用
应用监控
pm2 ls:终端中查看所有应用状况pm2 monit:打开终端的监控面板pm2 plus:在浏览器中的Dashboard,使用pm2 plus可能会报错,可以直接访问网址https://app.pm2.io/
查看日志
pm2 log:查看所有应用日志pm2 log <id|name|namespace|all|json|stdin>:查看指定日志
应用集群
你可以将一系列应用划分到一个命名空间内作为一个集群,通过指定namespace,进行全体的重启等操作。
 以 ecosystem.config.js 为例,这一组应用包含了2个 node 应用:
module.exports = {apps : [{name: 'express-app1',script: './app1/src/index.js',watch: './app1/src',namespace: 'express-demo'}, {name: 'express-app2',script: './app2/src/index.js',watch: './app2/src',namespace: 'express-demo'}]
};
 
关于 pm2 更多的使用技巧,还请诸君自行探索
