pm2:ecosystem.config.js

news/2024/12/13 1:53:20/

一、理解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(集群),默认是forkexec_mode: 'fork',// 应用启动实例个数,仅在cluster模式有效 默认为fork;或者 maxinstances: 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 --envenv: {// 环境参数,当前指定为生产环境 process.env.NODE_ENVNODE_ENV: 'production',// 当前环境接口地址,如果不用可不配置 process.env.REMOTE_ADDRREMOTE_ADDR: 'http://www.abc.com/'},// 开发环境配置// $ pm2 start app.js --env_devenv_dev: {// 环境参数,当前指定为开发环境 process.env.NODE_ENVNODE_ENV: 'development',// 当前环境接口地址,如果不用可不配置 process.env.REMOTE_ADDRREMOTE_ADDR: 'http://www.abc.com/'},// 测试环境配置// $ pm2 start app.js --env_testenv_test: {// 环境参数,当前指定为测试环境 process.env.NODE_ENVNODE_ENV: 'test',// 当前环境接口地址,如果不用可不配置 process.env.REMOTE_ADDRREMOTE_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.ppmy.cn/news/21937.html

相关文章

某FPS游戏飞天辅助及原理

FPS游戏先天的竞技性以及对战性决定了他必然有很多的BUG可以被利用又必须的去检测解决。 FPS游戏中有这样的外挂&#xff0c;飞在高空中打敌人,因为很少有人会注意头顶 躲在墙壁中攻击敌人&#xff0c;敌人根本无法看到高空墙壁中的人物。 那么胜利就很简单了。 FPS游戏能够…

SpringBoot结合XXL-JOB实现定时任务

《从零打造项目》系列文章 工具 比MyBatis Generator更强大的代码生成器 ORM框架选型 SpringBoot项目基础设施搭建SpringBoot集成Mybatis项目实操SpringBoot集成Mybatis Plus项目实操SpringBoot集成Spring Data JPA项目实操 数据库变更管理 数据库变更管理&#xff1a;Liquibas…

高效学 C++|编程实例之计算器

本节将实现一个能进行实数间加、减、乘、除运算的简易计算器。首先创建一个基于QWidget带界面的Qt项目&#xff0c;然后按照如下步骤进行操作&#xff1a; 01、计算器界面设计 在界面中拖入两个单行文本框和十七个按钮&#xff0c;按钮上显示的文字、按钮对象和单行文本框对象…

java进阶—一篇文章搞懂set 集合 及其底层实现

上节我们知道了List 下的两大 子类 ArrayList 跟 linkedList ArrayList 数组结构 查询快&#xff0c;增删慢 LinkedList 链表结构 查询慢&#xff0c;增删快 来看看我们今天的主角: Set Set 是 不可重复的&#xff0c;其底下也有两大子接口&#xff1a; HashSet&#xff1…

《MFC编程》:MFC程序执行流程

《MFC编程》&#xff1a;MFC程序启动《MFC编程》&#xff1a;MFC程序启动入口函数执行流程CWinApp的成员视频链接《MFC编程》&#xff1a;MFC程序启动 入口函数 MFC程序的入口函数与win32程序一样&#xff0c;都是从WinMain入口。 但是MFC库已经实现了WinMain函数&#xff0…

Leetcode.1145 二叉树着色游戏

题目链接 Leetcode.1145 二叉树着色游戏 Rating &#xff1a; 1741 题目描述 有两位极客玩家参与了一场「二叉树着色」的游戏。游戏中&#xff0c;给出二叉树的根节点 root&#xff0c;树上总共有 n个节点&#xff0c;且 n为奇数&#xff0c;其中每个节点上的值从 1到 n各不相…

新手入门,深入解析 python lambda表达式

lambda 表达式是 Python 中的匿名函数。它接受任意数量的参数&#xff0c;并返回一个单个表达式的值。它的语法格式如下&#xff1a; lambda arguments: expression 文章目录lambda 函数原型解释lambda 函数用作其它参数lambda 函数高级的技巧多个参数返回多个值条件表达式嵌套…

我通过 tensorflow 预测了博客的粉丝数

前言&#xff1a;由于最近接触了 tensorflow.js&#xff0c;出于试一下的心态&#xff0c;想通过线性回归预测一下博客的粉丝走向和数量&#xff0c;结果翻车了。虽然场景用错地方&#xff0c;但是整个实战方法用在身高体重等方面的预测还是有可行性&#xff0c;所以就记录下来…