NodeJS项目使用pm2代理

前端
观看:0
文章标签:#node#pm2#重载
最后更新:2025年08月08 09:46
pm2可以代理nodeJS的服务,具有服务中断自动重启,轮转日志等功能

前端项目使用NextJS编写,需要代理服务

该文章默认项目路径为:/home/aiochem/client,请自行更改

全局安装pm2

shell
# 全局安装pm2
sudo npm install -g pm2
# 安装日志轮转
pm2 install pm2-logrotate

编写配置文件

在前端的项目根目录(package.json同级),新建ecosystem.config.js文件

javascript
module.exports = {
  apps: [
	{
      name: 'aiochem-client',  // 在 PM2 中的进程名
      cwd: '/home/aiochem/client', // ← 指定nodeJS项目根目录
      script: 'npm',  // 启动命令
      args: 'start',
      // --- 如果你直接用 node 启动,请改成下面两行并删除 script/args:
      //script: 'server.js',   // 入口文件
      //args: '',               // 无额外参数
      // —— 负载均衡(Cluster Mode)——
      exec_mode: 'cluster',     // cluster 模式:开启多进程
      instances: 'max',         // 根据 CPU 核数自动 fork 等量子进程
      exec_mode: 'fork',  // 单进程
      instances: 1,
      env: {
        NODE_ENV: 'production',  // 指定生产环境
        HOST: '0.0.0.0',
        PORT: 3000
      },
      // PM2 默认会写到 ~/.pm2/logs/下,也可在这里自定义路径:
      error_file: '/home/aiochem/logs/client/web-aiochem-err.log',
      out_file: '/home/aiochem/logs/client/web-aiochem-out.log',
      log_date_format: 'YYYY-MM-DD HH:mm Z'
    },
  ]
};

这样就配置完成了,一般项目是本地build以后,把.next文件夹上传进来

项目目录如下:源码可以不放在生产环境的服务器内,几个配置文件和静态资源需要放进来。

image.png

配置逻辑

每天凌晨 0 点轮转、保留最近 7 天、大小超过 100 MB 也轮转、并压缩旧文件

shell
pm2 set pm2-logrotate:rotateInterval '0 0 * * *'
pm2 set pm2-logrotate:retain 7
pm2 set pm2-logrotate:max_size 100M
pm2 set pm2-logrotate:compress true

启动代理

shell
# 进入项目目录
cd /home/aiochem/client

# 启动所有在 ecosystem.config.js 定义的应用
pm2 start

# 保存当前进程列表,以便重启机器时可自动恢复
pm2 save

# 生成开机自启脚本(输出一行 systemd/startup 命令,复制并执行它)
pm2 startup

本地构建

在本机构建项目后,压缩.next文件夹,上传到服务器即可。

补充:

unzip的命令

shell
unzip -o /home/aiochem/version/.next001.zip -d /home/aiochem/client/

-o 参数表示直接覆盖

-d 指定覆盖位置

重启项目

然后重新load项目,这里的your_prj_name是配置中写的那个name参数,自行替换

shell
pm2 reload your_prj_name

pm2也可以代理其他服务,比如django、celery等,写对应的配置就可以(不推荐代理数据库)

使用--only参数可以仅启动单个任务

shell
pm2 start ecosystem.config.js --only aiochem-server

请登录后再发表评论
🔍 快速搜索
文章推荐
基于文本相似性

没有推荐的文章...

文章推荐
化学结构同出现

没有对应的文章...

AioChem © 2025

晋ICP备2025060790号-1