A帮手 - 常用软件下载安装教程 | 网盘资源下载 | 绿色软件下载

宝塔面板PM2部署nuxt SSR项目

  • 2026-03-25
  • 阅读:6

打包项目

# npm
npm run build

# pnpm
pnpm run build

# yarn
yarn build

# bun
bun run build

上传Nuxt代码

上传Nuxt打包好的静态文件


1 安装 PM2‌

npm install -g pm2

2 创建 PM2 生态文件(可选)‌

为了更方便地管理你的 Nuxt 3 应用,可以创建一个 PM2 生态文件(ecosystem.config.js)。这个文件可以定义应用的启动配置,比如环境变量、实例数量等。

在项目根目录下创建 ecosystem.config.js 文件,内容如下:

// ecosystem.config.js 完整配置(复制即用)
module.exports = {
  apps: [
    {
      name: 'nuxt3-project', // 你的项目名称(自定义)
      exec_mode: 'cluster',  // 集群模式,多核CPU推荐;单机用 'fork' 即可
      instances: 'max',      // 集群模式下启动CPU核心数的进程数;fork模式写 1
      script: './.output/server/index.mjs', // Nuxt3打包后的服务入口文件,固定路径!
      port: 3000, // ✅ 核心配置:指定你的自定义端口(比如3000,可改成任意端口如3001/8080)
      env: {
        NODE_ENV: 'production', // 生产环境
        PORT: 3000 // ✅ 关键:必须同步配置 PORT 环境变量,和上面的port值一致
      },
      // 可选优化配置
      max_memory_restart: '1G', // 内存占用超过1G自动重启,防止内存泄漏
      log_date_format: 'YYYY-MM-DD HH:mm:ss', // 日志时间格式
      out_file: './logs/out.log', // 正常日志输出
      error_file: './logs/err.log' // 错误日志输出
    }
  ]
}

 

3 使用 PM2 启动 Nuxt 3 应用‌

使用以下命令通过 PM2 启动你的 Nuxt 3 应用:

pm2 start ecosystem.config.js

 

或者通过PM2命令直接启动运行(极简,适合临时启动):

# 方式A:基础命令行启动,指定端口 3000(推荐)
npm run build && pm2 start .output/server/index.mjs --name nuxt3-project -- env PORT=3000

# 方式B:带集群模式的命令行启动,指定端口 3000
npm run build && pm2 start .output/server/index.mjs -i max --name nuxt3-prod -- env PORT=3000
  1. -i max :开启集群模式,自动适配 CPU 核心数
  2. --name xxx :给进程命名,方便后续管理
  3. -- env PORT=xxx :核心,注入端口环境变量,指定自定义端口

4 管理 PM2 进程‌

PM2 提供了一系列命令来管理你的应用:

查看应用状态‌:

pm2 list

停止应用‌:

pm2 stop nuxt3-app
或者
pm2 stop ./ecosystem.config.js
可选:停止当前所有PM2进程(比如你的nuxt3项目)
pm2 stop all

配置 Nginx(可选)‌

server {
    listen 80;
    server_name your-domain.com;

    location / {
        proxy_pass http://localhost:3000; # 与 PM2 配置的端口一致
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
        proxy_cache_bypass $http_upgrade;
    }
}

然后重启 Nginx:

sudo systemctl restart nginx

部分评论