pm2:ecosystem.config.js

news2024/9/22 1:17:56

一、理解ecosystem.config.js

1.1、字面理解:pm2生态系统配置文件。

1.2、个人理解:pm2配置文件。类似于vite.config.ts、nuxt.config.ts。

1.3、理解pm2:pm2 是一个带有负载均衡功能的Node应用的进程管理器。

1.4、pm2的能力:

1.4.1、日志管理:pm2系统日志、进程日志,默认会把进程的控制台输出记录到日志中。

1.4.2、负载均衡:PM2可以通过创建共享同一服务器端口的多个子进程来扩展您的应用程序。这样做还允许以零秒停机时间重新启动应用程序。

1.4.3、终端监控:可以在终端中监控应用程序并检查应用程序运行状况(CPU使用率,使用的内存,请求/分钟等)。

1.4.4、SSH部署:自动部署,避免逐个在所有服务器中进行ssh。

1.4.5、静态服务:支持静态服务器功能。

1.4.6、支持开发调试模式,非后台运行,pm2-dev start <appName>。

1.4.7、其他。

1.5、pm2常用命令

pm2 start ecosystem.config.js // 启动node程序
pm2 list // 查看所有进程
pm2 save // 保存设置
pm2 restart all // 重启所有进程
pm2 stop all // 停掉所有应用
pm2 kill // 杀死所有进程

1.6、模式(fork、cluster)

二、创建ecosystem.config.js

pm2 init

初始化之后内容如图:

三、ecosystem.config.js字段说明

module.exports = {
  // apps是一个json结构的数组 ,每一个数组成员对应一个pm2中运行的应用
  apps : [
    {
      // 应用程序名称
      name: 'nuxt-snow',
      // 执行文件
      script: 'index.js',
      // 应用程序所在的目录
      cwd: './',
      // 传递给脚本的参数
      args: '',
      // 指定的脚本解释器
      interpreter: '',
      // 传递给解释器的参数
      interpreter_args: '',
      // 是否启用监控模式,默认是false。如果设置成true,当应用程序变动时,pm2会自动重载。这里也可以设置你要监控的文件。
      watch: true, // watch: './',
      // 不用监听的文件
      ignore_watch: [
        'node_modules',
        'logs'
      ],
      // 应用程序启动模式,这里设置的是 cluster_mode(集群),默认是fork
      exec_mode: 'fork',
      // 应用启动实例个数,仅在cluster模式有效 默认为fork;或者 max
      instances: 1,
      // 最大内存限制数,超出自动重启
      max_memory_restart: 8,
      // 自定义应用程序的错误日志文件(错误日志文件)
      error_file: './logs/app-err.log',
      // 自定义应用程序日志文件(正常日志文件)
      out_file: './logs/app-out.log',
      // 设置追加日志而不是新建日志
      merge_logs: true,
      // 指定日志文件的时间格式
      log_date_format: 'YYYY-MM-DD HH:mm:ss',
      // 最小运行时间,这里设置的是60s即如果应用程序在* 60s内退出,pm2会认为程序异常退出,此时触发重启 max_restarts设置数量,应用运行少于时间被认为是异常启动
      min_uptime: '60s',
      // 设置应用程序异常退出重启的次数,默认15次(从0开始计数),最大异常重启次数,即小于min_uptime运行时间重启次数;
      max_restarts: 10,
      // 启用/禁用应用程序崩溃或退出时自动重启,默认为true, 发生异常的情况下自动重启
      autorestart: true,
      // 定时启动,解决重启能解决的问题,crontab时间格式重启应用,目前只支持cluster模式;
      cron_restart: '',
      // 异常重启情况下,延时重启时间
      restart_delay: '60s',
      // 环境配置
      // env: {
      //   // 公共变量
      //   COMMON_VARIABLE: true
      // },
      // 生产环境配置
      // $ pm2 start app.js --env
      env: {
        // 环境参数,当前指定为生产环境 process.env.NODE_ENV
        NODE_ENV: 'production',
        // 当前环境接口地址,如果不用可不配置 process.env.REMOTE_ADDR
        REMOTE_ADDR: 'http://www.abc.com/'
      },
      // 开发环境配置
      // $ pm2 start app.js --env_dev
      env_dev: {
        // 环境参数,当前指定为开发环境 process.env.NODE_ENV
        NODE_ENV: 'development',
        // 当前环境接口地址,如果不用可不配置 process.env.REMOTE_ADDR
        REMOTE_ADDR: 'http://www.abc.com/'
      },
      // 测试环境配置
      // $ pm2 start app.js --env_test
      env_test: {
        // 环境参数,当前指定为测试环境 process.env.NODE_ENV
        NODE_ENV: 'test',
        // 当前环境接口地址,如果不用可不配置 process.env.REMOTE_ADDR
        REMOTE_ADDR: 'http://www.abc.com/'
      }
    }
  ],

  // 环境部署
  deploy : {
    // 生成环境
    // 1、上传代码到云端仓库
    // 2、部署命令预览:
    // 首次部署: $ pm2 deploy ecosystem.json production setup 
    // 更新版本: $ pm2 deploy ecosystem.json production update 
    // 返回上一个版本: $ pm2 deploy ecosystem.json production revert 1 
    // 3、执行首次部署:$ pm2 deploy ecosystem.json production setup
    // 4、执行部署运行:$ pm2 deploy ecosystem.json production
    // 5、看到 success 成功,报错看错误自行百度
    production : {
      // ssh的用户名,登录远程服务器的用户名
      user : 'snow',
      // 要发布的机器,远程服务器的IP或hostname,此处可以是数组同步部署多个服务器
      host : '10.0.0.0',
      // 服务器端口
      port : 3000,
      // 要发布的代码分支,远端名称及分支名
      ref  : 'origin/master',
      // 代码Git仓库地址
      repo : 'git@gitlab.dzm.net:dzm/nuxt-test',
      // 服务器存储代码地址,远程服务器部署目录,需要填写user具备写入权限的目录,也就是服务器存放上面git库代码的地方
      path : '/usr/local/var/www/production',
      // ssh权限配置
      // 'ssh_options': 'StrictHostKeyChecking=no',
      'ssh_options': ['StrictHostKeyChecking=no', 'PasswordAuthentication=no'],
      // 1、在 setup 前触发,如安装 git
      'pre-setup': '',
      // 2、在 setup 后触发,如做一些其他配置
      'post-setup': '',
      // 3、在 deploy 前触发,执行本地脚本
      'pre-deploy-local': '',
      // 4、在 deploy 前触发,执行远程脚本
      'pre-deploy': 'git fetch --all',
      // 5、在 deploy 后触发,执行远程脚本,如 npm install,部署后需要执行的命令
      // 'post-deploy' : 'npm install && pm2 startOrRestart ecosystem.config.js --env production',
      'post-deploy' : 'npm install && pm2 reload ecosystem.config.js --env production',
      // 环境变量
      'env'  : {
        // 指定为生成环境
        'NODE_ENV': 'production'
      }
    }
  }
};

四、实例(nuxt3 ecosystem.config.js)

4.1、ecosystem.config.js文件

module.exports = {
    apps: [
      {
        name: 'NuxtAppName',
        exec_mode: 'fork',
        instances: '1',
        script: './.output/server/index.mjs',
        env: {
          NODE_ENV: "development",
          NITRO_PORT: 3000,
          NITRO_HOST: '127.0.0.1'
        },
        env_production: {
          NODE_ENV: "production",
          NITRO_PORT: 3000,
          NITRO_HOST: '127.0.0.1'
        }
      }
    ]
  }

4.2、运行

pm2 start ecosystem.config.js

4.3、启动成功

参考链接:

https://blog.csdn.net/weixin_40964777/article/details/118334848

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/196510.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【React】React入门(一)--React的创建、Jsx语法与组件以及状态(state)

&#x1f380;个人主页&#xff1a;努力学习前端知识的小羊 感谢你们的支持&#xff1a;收藏&#x1f384; 点赞&#x1f36c; 加关注&#x1fa90; 文章目录React简介react的特性虚拟Dom传统dom更新虚拟Domcreate-react-appJSX语法与组件jsx语法class组件函数组件组件嵌套组件…

基于Springboot搭建java项目(三十六)—— 服务监控工具WGCLOUD

服务监控工具WGCLOUD 一、服务监控 ​ “要想晚上睡的好&#xff0c;服务监控少不了”&#xff0c;服务器监控是应用程序开发中必不可少的一部分&#xff0c;做好服务监控有以下几个优点&#xff1a; 能够及时发现应用程序的漏洞能够定位到程序运行的瓶颈&#xff0c;查看程…

一篇搞懂SQL

前言 根据廖雪峰老师的教程&#xff0c;整理出一篇文章 一&#xff0c;为什么需要数据库&#xff1f; 小量的数据可以使用excel或者cvs存储&#xff0c;但是大批量的数据&#xff0c;这些都无法满足需求。如何管理这些数据就成了大问题。 所以&#xff0c;数据库作为一种专门…

机器视觉_HALCON_HDevelop用户指南_5.HDevelop过程(打磨ing)

文章目录五、HDevelop过程5.1. 过程类型5.2. 文件类型5.2.1. HDevelop程序5.2.2. 过程文件5.2.3. 库5.3. 过程作用域5.4. 过程位置5.5. 过程解析5.6. 受保护的过程5.7. 过程文档5.8. 即时编译&#x1f53a;五、HDevelop过程 Procedure&#xff1a; 在HDevelop文档中&#xff08…

【PyTorch】ImageNet数据集的使用和miniImageNet的构建

【PyTorch】ImageNet的使用和miniImageNet的构建1. ImageNet下载和简介1.1 下载地址1.2 初步处理1.3 devkit介绍2. miniImageNet2.1 miniImageNet的划分3. 使用ImageFolder构建数据集类3.1 重写DataFolder中的方法3.2 BatchSampler实现episode采样3.3 batch可视化1. ImageNet下…

Oracle数据库入门大全

oracle数据库 Oracle 数据库、实例、用户、表空间、表之间的关系 数据库 数据库是数据集合。Oracle是一种数据库管理系统&#xff0c;是一种关系型的数据库管理系统。 通常情况了我们称的“数据库”&#xff0c;并不仅指物理的数据集合&#xff0c;他包含物理数据、数据库管理…

let/const相关内容(五)

1.块级作用域的应用 &#xff08;一&#xff09;if-switch-for代码中的应用 ① if语句的代码就是块级作用域 // if语句的代码块是块级作用域 if (true) {var foo "foo"let bar "bar" }console.log(foo) console.log(bar);② switch语句的代码也是块级…

SQL面试题62--一种准确求近30天消费金额的方法

1 需求现在test表有三个字段 用户&#xff1a; user_id 日期&#xff1a;dt 订单金额 price&#xff0c;计算出一个消费者历史上“首次”在近30天周期内累计消费金额达到1W的日期2 分析&#xff08;1&#xff09;数据准备create table test as select a as user_id,7000 as pri…

数据分析很火吗?千万不要轻易尝试!

据说数据分析现在很火&#xff1f;“现在是数字化时代&#xff0c;工作生活都是与互联网交织在一起&#xff0c;我们的生活习惯、兴趣爱好等都会演变成各种不同的数据被互联网收集存储&#xff08;云存储&#xff09;。作为个人而言这些数据单看的话是没有什么价值和意义的&…

安全卫“视”!昂视助力极片卷绕对齐度检测

价格大涨、产能扩充、加速融资、加快出海、与车企深度绑定&#xff0c;动力电池产业在2022年表现出了极高的市场活力&#xff0c;在疫情的大环境之下&#xff0c;其发展势头是业内外公认的“高亢”。全国乘用车市场信息联席会预计&#xff0c;2023年新能源乘用车销量有望达850万…

SCI论文阅读-深度学习在测井气体红外光谱定量分析中的应用

期刊&#xff1a; Applied Optics中科院最新分区&#xff08;2022年12月最新版&#xff09;&#xff1a;4区影响因子&#xff08;2021-2022&#xff09;&#xff1a;1.905第一作者&#xff1a;宋丽梅通讯作者&#xff1a;Yangang Yang原文链接&#xff1a;Application of deep …

一文弄懂什么是对比学习(Contrastive Learning)

本文是自己学习对比学习的总结&#xff0c;如有问题&#xff0c;欢迎批评指正。 前言 有的paper将对比学习称为自监督学习&#xff08;Self-supervised learning&#xff09;&#xff0c;有的将其称为无监督学习&#xff08;Unsupervised Learning , UL&#xff09;。自监督学…

spring事务执行流程分析_6(事务的真正执行)

代理对象的执行 执行案例中的bookService.addUser(user);会调用到JdkDynamicAopProxy#invoke方法 JdkDynamicAopProxy#invoke public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {Object oldProxy null;boolean setProxyContext false;…

2023年黑马Java入门到精通教程--编程思维训练

编程案例分享 编程思维 使用所学的Java技术解决问题的思维方式和编写代码实现出来的能力。 关于提升编程思维和编程能力的建议 编程思维和编程能力不是一朝一夕形成的&#xff0c;需要时间的沉淀和大量练习。 前期&#xff1a;先模仿&#xff0c;后期&#xff1a;再创新。…

为游戏玩家提供卓越价值,英特尔锐炫游戏性能大幅提升!

2月1日晚英特尔推出锐炫显卡新版驱动(4086)&#xff0c;相较此前驱动(3490)能够为DirectX 9游戏带来40%以上的平均性能提升。同时英特尔还宣布&#xff0c;现在起锐炫A750限量版显卡的全球价格将调整为249美元&#xff0c;此前上市价格为289美元起。 在英特尔发布锐炫显卡后&…

HTML5+CSS3(五)-全面详解(学习总结---从入门到深化)

目录 容器元素&#xff08;div&#xff09; 学习效果反馈 HTML5新增布局标签 学习效果反馈 视频和音频 视频 音频 source 学习效果反馈 HTML5新增标签 figure details mark meter datalist canvas 学习效果反馈 容器元素&#xff08;div&#xff09; <!DOCTYPE h…

k8s核心资源存储对象

一、简介 和docker类似&#xff0c;k8s也需要存储数据&#xff0c;比如redis和mysql都需要外部存储对象&#xff0c;要不然重新拉起pod&#xff0c;在其他机器上数据会消失。 二、NFS共享存储 NFS这个文件系统提供了远程挂载共享数据&#xff0c;我们可以利用这个文件系统来…

ASEMI整流模块MDA300-16封装,MDA300-16大小

编辑-Z ASEMI整流模块MDA300-16参数&#xff1a; 型号&#xff1a;MDA300-16 最大重复峰值反向电压&#xff08;VRRM&#xff09;&#xff1a;1600V 最大RMS电桥输入电压&#xff08;VRMS&#xff09;&#xff1a;1700V 最大平均正向整流输出电流&#xff08;IF&#xff0…

408计组巅峰之路:总线技术、总线仲裁

文章目录总线概念总线的基本概述总线分类标准①按数据传输格式②按总线功能&#xff08;连接的部件&#xff09;③按时序控制方式微机总线&#xff08;补充&#xff09;性能指标典型的计算机总线1.个人计算机总线测控机箱底板总线仪器与计算机互联总线PCI 总线局部总线1.PCI总线…

单片机复位详解

复位&#xff08;stm32f407ZGT6&#xff09;-属于中断操作共有三种类型的复位&#xff0c;分别为系统复位、电源复位和备份域复位。系统复位除了时钟控制寄存器 CSR 中的复位标志和备份域中的寄存器外&#xff0c;系统复位会将其它全部寄 存器都复位为复位值。只要发生以下事件…