使用pm2启动node文件_PM2 是什么
目錄
pm2是什么
特點(diǎn)
示例說(shuō)明
配置文件
常用命令
背景
由于需要在容器云新增一個(gè)測(cè)試環(huán)境,改了代碼相關(guān)的配置后,進(jìn)行部署。發(fā)現(xiàn)服務(wù)一直啟動(dòng)不了。在和運(yùn)維一起排查問(wèn)題,他看到pm2的一些信息, 問(wèn)我pm2是不是阻塞了,并不是很清楚pm2是什么。就初步學(xué)習(xí)了一下,進(jìn)行記錄。
PM2是什么
Precess Manager 2
PM2是一個(gè)進(jìn)程管理工具,維護(hù)一個(gè)進(jìn)程列表,可以用來(lái)管理正在用行的進(jìn)程,實(shí)時(shí)查看日志,性能監(jiān)控等功能
特點(diǎn)
- 日志管理 (已使用)
- 支持監(jiān)聽(tīng)重啟
- 支持部署工作流
- 支持集群模式
- 支持性能監(jiān)控
- 支持pm2 開(kāi)發(fā)
示例說(shuō)明
首先 npm init 新建一個(gè)node項(xiàng)目
全局安裝pm2 ?(npm install pm2 -g), 如果已經(jīng)安裝過(guò),則不需要再次操作
在這個(gè)項(xiàng)目里新建index.js, (創(chuàng)建一個(gè)http服務(wù)器)
執(zhí)行命令 pm2 ecosystem, 默認(rèn)會(huì)生成pm2的配置文件)( ecosystem.config.js)
在配置文件里進(jìn)行關(guān)于應(yīng)用的各種配置

配置文件
執(zhí)行命令 pm2 ecosystem, 默認(rèn)會(huì)生成 ecosystem.config.js ?(和package.json放在一個(gè)根目錄下)
生成文件內(nèi)容如下
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':?''
????}
??}
};
- apps 是一個(gè)數(shù)組, 每一項(xiàng)數(shù)組成員對(duì)應(yīng)一個(gè)pm2中的應(yīng)用
對(duì)配置文件詳解
| apps | json結(jié)構(gòu),是一個(gè)數(shù)組,里面每一項(xiàng)是一個(gè)pm2的應(yīng)用 |
| name | 應(yīng)用程序名稱 |
| cwd | 應(yīng)用程序所在目錄 |
| script | 應(yīng)用程序啟動(dòng)文件所在目錄 |
| exec_mode | 應(yīng)用啟動(dòng)模式,默認(rèn)是fork, 可設(shè)置為 cluster集群 |
| instances | 應(yīng)用啟動(dòng)實(shí)例個(gè)數(shù),僅在cluster模式有效 |
| max_memory_restart | 最大內(nèi)存限制數(shù), 超出自動(dòng)重啟 |
| log_date_format | 日志文件格式 |
| error_file | 錯(cuò)誤日志文件路徑 |
| out_file | 正常日志文件路徑 |
| merge_logs | 設(shè)置追加日志而不是新建日志 |
| autorestart | 是否自動(dòng)重啟, true/false |
| watch | 是否啟用監(jiān)控模式,默認(rèn)是false。如果設(shè)置成true,當(dāng)應(yīng)用程序變動(dòng)時(shí),pm2會(huì)自動(dòng)重載 |
| ignore_watch | 不用監(jiān)聽(tīng)的文件,例如node_modules |
| restart_delay | 延時(shí)重啟時(shí)間 |
| env | 生產(chǎn)環(huán)境變量 |
| env_dev | 開(kāi)發(fā)環(huán)境變量 |
| env_test | 測(cè)試環(huán)境變量 |
| min_uptime | 如果應(yīng)用程序在這個(gè)時(shí)間退出,pm2會(huì)認(rèn)為程序異常退出,此時(shí)觸發(fā)重啟max_restarts設(shè)置數(shù)量 |
| max-restarts | 異常時(shí)重啟次數(shù) |
示例app進(jìn)行配置如下:
module.exports?=?{??apps?:?[
????{
??????name:?'xiaoyu_node_test',???//名稱
??????script:?'index.js',???//程序入口
??????watch:?'.',??//?需要監(jiān)控的目錄
??????error_file:?'/home/logs/err.log',??//錯(cuò)誤日志文件
??????out_file:?'/home/logs/info.log',??//?正常日志文件
??????log_date_format:?'YYYY-MM-DD?HH:mm:ss',??//?指定日志文件的時(shí)間格式
??????autorestart:?true,???//?發(fā)生異常是否自動(dòng)重啟,?true重啟,?false不重啟
??????env:?{
????????NODE_ENV:?'production',??//環(huán)境參數(shù),當(dāng)前指定為生產(chǎn)環(huán)境?process.env.NODE_ENV
????????REMOTE_ADDR:?''???//?process.env.REMOTE_ADDR
??????},
??????env_dev:?{
????????NODE_ENV:?'development',??//環(huán)境參數(shù),當(dāng)前指定為開(kāi)發(fā)環(huán)境?pm2?start?app.js?--env_dev
????????REMOTE_ADDR:?''???//?process.env.REMOTE_ADDR
??????}
????},?
????{
??????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':?''
????}
??}
};
常用命令
安裝pm2
npm?install?pm2?-g???????????//?要進(jìn)行全局安裝啟動(dòng)進(jìn)程(應(yīng)用)
1.直接啟動(dòng)對(duì)應(yīng)的js文件
pm2?start?index.js
2.啟動(dòng)pm2的配置文件
pm2?start?ecosystem.config.js
重啟
pm2?restart?ecosystem.config.js查看日志
pm2?logs
可以實(shí)時(shí)展示日志,而且會(huì)在自己配置文件中指定的路徑生成日志文件
查看進(jìn)程 以及 查看進(jìn)程詳情
pm2?list
具體的查看某一個(gè)進(jìn)程詳情,例如查看id=4的進(jìn)程
pm2?describe?4?????//id號(hào)
查看cpu和內(nèi)存資源占用等一些性能指標(biāo)
pm2?monit

*https://keymetrics.io/這個(gè)網(wǎng)址,經(jīng)過(guò)一些設(shè)置,可以可視化看一些指標(biāo)。由于打不開(kāi)這個(gè)頁(yè)面, 沒(méi)有進(jìn)行實(shí)際測(cè)試
停止進(jìn)程
pm2?stop?0????????????????//?0是id??id|name|namespace|all|json|stdin
status 已經(jīng)變成 stoped
刪除進(jìn)程
pm2?delete?0.????????//id號(hào)上述的列表里就會(huì)刪掉這一條
開(kāi)機(jī)自啟動(dòng)
pm2 start 配置文件
pm2 save ? ? ?// 保存現(xiàn)有列表數(shù)據(jù)
pm2 startup ? //設(shè)置開(kāi)機(jī)啟動(dòng)
結(jié)尾
Pm2 能做的還有很多,等待挖掘...
總結(jié)
以上是生活随笔為你收集整理的使用pm2启动node文件_PM2 是什么的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: java list 范围删除_JAVA中
- 下一篇: 有十五个数按由大到小顺序存放在一个数组中