package.json 、ecosystem.config.js、nuxt.config.ts文件-- 注意端口号,必须保持一致


【第1步:生产级进程守护(PM2 + ecosystem.config.js)-package.json】

  "name": "nuxt-app",
  "private": true,
  "type": "module",
  "scripts": {
    "build": "nuxt build",
    "dev": "nuxt dev --port 3010",
    "start": "set PORT=3010 && node .output/server/index.mjs",
    "generate": "nuxt generate",
    "preview": "nuxt preview",
    "postinstall": "nuxt prepare",
     "pm2:start": "pm2 start ecosystem.config.cjs",
    "pm2:stop": "pm2 stop ecosystem.config.cjs",
    "pm2:restart": "pm2 restart ecosystem.config.cjs",
    "pm2:logs": "pm2 logs nuxt-app"
  },

【第2步:生产-ecosystem.config.js】

ecosystem.config.js文件 线上部署的时候需要复制一个后缀改成 ecosystem.config.cjs

module.exports = {
  apps: [
    {
      name: 'productName',
      port: '3010',
      exec_mode: 'cluster',
      instances: 1,
      script: './.output/server/index.mjs',
	  autorestart: true
    },
  ],
}

【第3步:生产-nuxt.config.ts】

 export default defineNuxtConfig({
  devtools: { enabled: true },
  srcDir: 'src/',
  modules: ['@nuxt/ui', '@vueuse/nuxt', '@nuxt/image', '@pinia/nuxt', "@pinia-plugin-persistedstate/nuxt", '@element-plus/nuxt'],
    
  postcss: {
    plugins: {
      tailwindcss: {},
      autoprefixer: {},
    },
  }, 
  pinia: {
    autoImports: [
      'defineStore', // import { defineStore } from 'pinia'
    ],
  },
  imports: {
    dirs: [
      // 扫描顶级模块
      'composables',
      // ... 或扫描带有特定名称和文件扩展名的一级嵌套模块
      'composables/*/index.{ts,js,mjs,mts}',
      // ... 或扫描给定目录中的所有模块
      'composables/**'
    ]
  },
  devServer: {
    host: '0.0.0.0',
    port: 3010
  },
  hooks: {
    'pages:extend' (routes) {
      routes.push({
        path: '/:pathMatch(.*)',
        redirect: '/',
      });
    }
  },
  plugins: [
    // '@/plugins/lazyload.js',
    '@/plugins/sharethis.client.ts'
  ],
  nitro:{
    logLevel:'debug', 
  },
  routeRules: {
    '/': { ssr: false },   // 只对首页禁用 SSR,改为客户端渲染
  },
  compatibilityDate: '2024-11-05'
})

【第4步:运行测试】

npm install               # 安装 cross-env

npm install --legacy-peer-deps  # 如果仍然遇到 peer 警告(但通常不会阻断),可以使用 --legacy-peer-deps 临时绕过:

npm run build             # 构建生产版本
npm run start             # 监听 3010 端口

【第5步:部署步骤】

npm install
npm run build

创建日志目录(可选)

mkdir -p logs

启动 PM2 进程

pm2 start ecosystem.config.cjs #注意这个文件的后缀

保存当前进程列表(开机自启)

pm2 save

设置 pm2 开机启动(需执行一次)

pm2 startup
常用 PM2 运维命令
pm2 list                # 查看进程状态
pm2 monit               # 实时监控 CPU/内存
pm2 logs nuxt-app       # 查看日志
pm2 restart nuxt-app    # 重启应用
pm2 reload nuxt-app     # 零停机重载
pm2 delete nuxt-app     # 删除进程

常见操作

第1步:初始化项目依赖

npm install --legacy-peer-deps 

第2步:编译项目

npm run build

注意事项:注意 node版本号

第3步:启动站点

pm2 start ecosystem.config.cjs

第4步:查看站点启动日志 ,500是最后500行日志记录

pm2 logs stiteName --err --lines 500

第5步:根据站点id查看占用的端口号

pm2 env 25 | findstr PORT

第6步:根据站点id删除站点

pm2 del 25

第7步:查看列表

pm2 ls

更多推荐