你的浏览器无法正常显示内容,请更换或升级浏览器!

使用PM2配置并部署项目上线。

tenfei
tenfei
发布于2023-10-17 15:43 阅读392次
使用PM2配置并部署项目上线。
无论我们使用VUE、REACT、NUXT等各种框架开发项目后,最终上线部署都会选择PM2,特别是对于需要Nodejs做Server支撑的项目,因pm2是基于nodejs开发的进程管理器,适用于后台常驻脚本管理,同时对node网络应用有自建负载均衡功能。 **一、pm2特点:说一些pm2有哪些优点好处呢?** 1. 支持进程行为配置 ,即可以通过配置,实现对pm2管理应用的一些基础属性更新修改,如应用名称,启动模式等; 2. 支持集群模式,支持负载均衡,但因采用nodejs的cluster模块实现,仅适用于nodejs进程; 3. 支持source map,此项针对js, source map文件是js源文件的信息文件,里面存储着源文件的位置信息; 4. 支持热重启; 5. 支持部署工作流,pm2可依据测试环境和线上环境自动部署到不同的服务器,同时运行在不同配置下; 6. 支持监听重启,在文件更新等情况下可实现进程自动重启; 7. 支持linux的startup进程启动,startup是指系统boot, 进程自启动,如centos的chkconfig; 8. 日志管理,两种日志,pm2系统日志与管理的进程日志,默认会把进程的控制台输出记录到日志中; 9. 命令自动补全功能,个人感觉这个功能意义不大,而且尝试了一下,没有原生的linux命令自动补全反应敏捷; 10. 监控功能,pm2 monit监控cpu和memory使用情况,keymetrics监控更为详细; 11. 支持开发调试模式,非后台运行,pm2-dev start <appName>; 12. 支持pm2模块开发,实现pm2的功能扩展; 13. keymetrics监控,比pm2 monit监控更为详细友好,通过web页面展示; 14. 最大内存重启,设置最大内存限制,超过限制自动重启; 15. 编程API,提供API供开发者通过编程方式灵活管理进程; **二、pm2常用命 常用命令通常都是比较简单。下面列举一些pm2常用的管理命令** 1. pm2 start <script\_file|config\_file> [options] 启动指定应用,如pm2 start index.js --name httpServer; 2. pm2 stop <appName> [options] 停止指定应用,如pm2 stop httpServer; 3. pm2 reload|restart <appName> [options] 重启指定应用,如pm2 restart httpServer; 4. pm2 show <appName> [options] 显示指定应用详情,如pm2 show httpServer; 5. pm2 delete <appName> [options] 删除指定应用,如pm2 delete httpServer,如果修改应用配置行为,最好先删除应用后,重新启动方才生效,如修改脚本入口文件; 6. pm2 kill 杀掉pm2管理的所有进程; 7. pm2 logs <appName> 查看指定应用的日志,即标准输出和标准错误; 8. pm2 monit 监控各个应用进程cpu和memory使用情况; **三、使用ecosystem.config.js文件配置** ``` module.exports = {//pm2下配置 apps: [ { name: 'ProjectName', port: 3000, script: './server/index.mjs', cwd: './',//项目运行基础目录 以ecosystem.config.js文件为相对路径 exec_mode: 'fork',//fork单实例 cluster集群 instances: 1,//实例数,默认为1,在cluster集群模式下可支持多个 watch: false,//监听文件变化 自动重启 max_memory_restart: '150M', //此应用超出指定内存便会自动重启 } ] }; ``` **四、更多ecosystem.config.js配置选项** 1. name 应用进程名称; 2. script 启动脚本路径; 3. cwd 应用启动的路径,关于script与cwd的区别举例说明:在/home/polo/目录下运行/data/release/node/index.js,此处script为/data/release/node/index.js,cwd为/home/polo/; 4. args 传递给脚本的参数; 5. interpreter 指定的脚本解释器; 6. interpreter\_args 传递给解释器的参数; 7. instances 应用启动实例个数,仅在cluster模式有效,默认为fork; 8. exec\_mode 应用启动模式,支持fork和cluster模式; 9. watch 监听重启,启用情况下,文件夹或子文件夹下变化应用自动重启; 10. ignore\_watch 忽略监听的文件夹,支持正则表达式; 11. max\_memory\_restart 最大内存限制数,超出自动重启; 12. env 环境变量,object类型,如{"NODE\_ENV":"production", "ID": "42"}; 13. log\_date\_format 指定日志日期格式,如YYYY-MM-DD HH:mm:ss; 14. error\_file 记录标准错误流,\$HOME/.pm2/logs/XXXerr.log),代码错误可在此文件查找; 15. out\_file 记录标准输出流,\$HOME/.pm2/logs/XXXout.log),如应用打印大量的标准输出,会导致pm2日志过大; 16. min\_uptime 应用运行少于时间被认为是异常启动; 17. max\_restarts 最大异常重启次数,即小于min\_uptime运行时间重启次数; 18. autorestart 默认为true, 发生异常的情况下自动重启; 19. cron\_restart crontab时间格式重启应用,目前只支持cluster模式; 20. force 默认false,如果true,可以重复启动一个脚本。pm2不建议这么做; 21. restart\_delay 异常重启情况下,延时重启时间;

2

0

文章点评
暂无任何评论
Copyright © from 2021 by namoer.com
458815@qq.com QQ:458815
蜀ICP备2022020274号-2