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

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

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