热搜: fiddler git ip 代理
历史搜索

宝塔下使用pm2部署node项目-pm2

游客2024-12-19 15:55:45

首先说一下,你的宝塔终端必须可是正确的打印出node -v npm -v pm2 -v 的版本号信息,如果不行那就看我一步一步来操作

我的系统linux -  Debian 11

安装nvm 

curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.3/install.sh | bash

重新加载 shell 配置:

source ~/.bashrc  # 或 ~/.zshrc,取决于你使用的 shell

使用 nvm 安装最新版本的 Node.js

nvm install node

报错

export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh"  # This loads nvm
[ -s "$NVM_DIR/bash_completion" ] && . "$NVM_DIR/bash_completion"  # This loads nvm bash_completion
admin@ip-172-26-7-87:~$ nvm -v
-bash: nvm: command not found

解决

手动加载 nvm

export NVM_DIR="$HOME/.nvm"[ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh"  # This loads nvm[ -s "$NVM_DIR/bash_completion" ] && . "$NVM_DIR/bash_completion"  # This loads nvm bash_completion

启动 4 个实例:

bash复制代码pm2 start app.js -i 4

根据 CPU 核心数自动分配:

bash复制代码pm2 start app.js -i max

使用 ecosystem.config.js 文件配置多进程

你可以通过 PM2 的配置文件(ecosystem.config.js)更方便地管理多进程。

创建配置文件:

bash复制代码pm2 init

编辑配置文件:

将生成的 ecosystem.config.js 修改为如下内容:

javascript复制代码module.exports = {  apps: [
    {      name: "your-app-name",      // 应用名称
      script: "./app.js",         // 启动脚本路径
      instances: "max",           // 实例数量:"max" 表示使用所有 CPU 核心
      exec_mode: "cluster",       // 使用集群模式
      env: {                      // 环境变量配置
        NODE_ENV: "production"
      }
    }
  ]
};

启动应用:

bash复制代码pm2 start ecosystem.config.js

3. 动态调整进程数量

如果你的应用已经运行,可以动态调整实例数量。

增加实例:

bash复制代码pm2 scale your-app-name +2

表示在当前实例基础上增加 2 个进程。

减少实例:

bash复制代码pm2 scale your-app-name -2

表示减少 2 个实例。

直接设置实例数量:

bash复制代码pm2 scale your-app-name 4

将实例数调整为 4。


4. 集群模式的自动负载均衡

PM2 集群模式会自动对多个进程之间的负载进行均衡分配。例如,如果你运行一个 HTTP 服务器,集群模式会自动为每个请求分配不同的进程处理。