概述
内部测试服务器是最近新装的,没有supervisorctl 这个程序管理工具。不过前一阵得知node应该用更加适配的工具进行管理,那就PM2。试用了一下非常强大,特此记录一下使用流程。非常使用用来做node 守护及相关管理。
文章目录
- 1 安装
- 2 基础命令
- 2.1 查看pm2 管理的应用
- 2.2 基础命令(启动 重启 停止)
- 2.3 查看进程详细信息
- 2.4 无缝重启程序
- 3 PM2集群模式(负载均衡)
- 4 配置文件
- 4.1 配置文件(环境变量)
- 4.2 参考配置
- 4.3 使用
- 5 日志管理
- 5.1 日志管理命令
- 5.2 日志配置
- 5.2.1 配置log位置(通过环境配置)
- 5.2 拆分重载日志
- 5.3 合并日志
- 6 开机自启动
- 7 远程部署
- 8 参考链接
PM2是具有内置负载均衡器的Node.js应用程序的生产运行时和进程管理器。它允许您永久保持应用程序活跃,无需停机即可重新加载它们,并促进常见的Devops任务。
1 安装
npm install pm2 -g
全局安装pm2
您可以像这样启动任何应用程序(Node.js,Python,Ruby,$ PATH中的二进制文件…):
pm2 start app.js
pm2 start app.js --name app
简单守护
集成守护使用,在生产环境总可能没有安装pm2 我们可以使用
RUN npm install pm2 -g
CMD [ "pm2-runtime", "npm", "--", "start" ]
2 基础命令
2.1 查看pm2 管理的应用
pm2 list
2.2 基础命令(启动 重启 停止)
$ pm2 stop <app_name|id|'all'|json_conf>
$ pm2 restart <app_name|id|'all'|json_conf>
$ pm2 delete <app_name|id|'all'|json_conf>
比如启动express 可以在express根目录下
pm2 start bin/www
如果我们在后面加入watch参数,每当代码改变时即会自动重启,如下:
sudo pm2 start bin/www --watch
2.3 查看进程详细信息
pm2 describe <id|app_name>
该命令可以查看工程运行目录,node与你新高版本,日志目录,项目git位置等
要监控日志,自定义指标,应用程序信息:
pm2 monit
2.4 无缝重启程序
pm2 reload all
3 PM2集群模式(负载均衡)
群集模式是启动Node.js应用程序时的一种特殊模式,它启动多个进程并在它们之间对HTTP / TCP / UDP进行负载均衡。**这提高了整体性能(16核机器上的x10倍)**和可靠性(在未处理错误的情况下更快的套接字重新平衡)。
以集群模式启动Node.js应用程序,该应用程序将利用所有可用的CPU:
pm2 start api.js -i <processes>
可以为’max’,-1(所有具有的cpu减1)或指定数量的实例开始。
如:sudo pm2 start bin/www -i max
监视从命令行直接启动的所有进程:
pm2 monit
4 配置文件
配置文件官方文档:http://pm2.keymetrics.io/docs/usage/pm2-doc-single-page/
4.1 配置文件(环境变量)
the ecosystem file的目的是为所有应用程序收集所有选项和环境变量。
pm2 init
//初始化一个环境配置,它会输出一个config地址
您可以为多个环境声明变量。每个环境密钥必须具有以下格式:env_。
例如,app可以在两个环境中启动以下过程:development和production。
我们可以配置在不同环境下的特定参数,在express中 process.env.NODE_ENV即可传递进去
要app在特定环境中启动它,请使用–env标志:
4.2 参考配置
apps : [{
name: 'pm2 test',//app name 在pm2 管理中那个名字
script: './bin/www', //启动路径
instances: 1,//负载均衡实例数
autorestart: true,//是否自动重启
watch: [ //通过监视功能需要监视的文件夹
"bin",
"routers",
"controllers"
],
ignore_watch : [ //通过监视功能忽略某些文件或文件夹名称的正则表达式列表
"node_modules",
"logs",
"public"
],
watch_options: {
"followSymlinks": false
},
max_memory_restart: '1G',
output: './logs/pm2_out.log',//console.log 输出位置
error: './logs/pm2_error.log',//console.error 输出位置
log_date_format: "YYYY-MM-DD HH:mm Z",//log前面加上时间戳
merge_logs: true,//多实例情况下合并log
env: {//环境变量配置
NODE_ENV: 'development'
},
env_production: {
NODE_ENV: 'production'
}
}],
4.3 使用
pm2 start ecosystem.config.js
//这里我们使用配置文件的方式代替 pm2 start 方式启动
5 日志管理
pm2 logs 查看控制台相应输出(实时日志)
5.1 日志管理命令
$ pm2 logs APP-NAME # 显示APP-NAME日志
$ PM2 logs --json # JSON输出
$ PM2 logs --format # 格式化输出
$ pm2 flush # 刷新所有日志(清空)
$ pm2 reloadLogs # 重新加载所有日志
5.2 日志配置
5.2.1 配置log位置(通过环境配置)
您可以为日志指定自定义位置。
module.exports = {
apps: [{
name: 'app',
script: 'app.js',
output: './out.log',
error: './error.log',
log: './combined.outerr.log',
}]
}
output 只是标准输出(console.log)
error 只是错误输出(console.error)
log结合output并error,默认情况下禁用
5.2 拆分重载日志
pm2 install pm2-logrotate
5.3 合并日志
在群集模式下,每个群集都有自己的日志文件。您可以使用合并选项将所有日志收集到单个文件中:
module.exports = {
apps: [{
name: 'app',
script: 'app.js',
output: './out.log',
error: './error.log',
merge_logs: true,
log_date_format: "DD-MM-YYYY"
}]
}
6 开机自启动
解决最近核心矛盾
1 保存当前管理应用程序状态
pm2 save
2 生成自启动脚本
pm2 startup
pm2 startup ubuntu //你的操作系统
要获取计算机的自动配置启动脚本
此命令的输出可以是复制/粘贴行的建议,其中包含为您配置的所有环境变量和选项。
3 您只需复制/粘贴 PM2为您提供的行,并为您的操作系统配置启动脚本即可。
4 禁用自启动
pm2 unstartup
您只需复制/粘贴 PM2为您提供的行,并为您的操作系统配置启动脚本即可。
7 远程部署
http://pm2.keymetrics.io/docs/usage/deployment/#simple-deploy
8 参考链接
https://www.cnblogs.com/chyingp/p/pm2-documentation.html
官方文档:
https://www.npmjs.com/package/pm2
https://pm2.io/doc/en/runtime/guide/process-management/?utm_source=github
最后
以上就是单身铃铛为你收集整理的node守护工具-PM2使用1 安装2 基础命令3 PM2集群模式(负载均衡)4 配置文件5 日志管理6 开机自启动7 远程部署8 参考链接的全部内容,希望文章能够帮你解决node守护工具-PM2使用1 安装2 基础命令3 PM2集群模式(负载均衡)4 配置文件5 日志管理6 开机自启动7 远程部署8 参考链接所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复