预览和上线

近期 node 低版本安装依赖时会提示建议升级到18+,但请谨慎升级,如果升级后出现 _fetch is not a function 报错,请使用小于 18node 版本进行编译,或者确定服务器端同样使用了 18+pm2 可使用 pm2 show 来查看运行环境的node版本

快速预览

开发完成后,于 web-nuxt/.env.production 文件内配置好服务端域名,然后使用 pnpm build 命令对项目进行编译,完成后执行 node .output/server/index.mjs 命令,命令执行成功时如下所示:

PS E:\demo\cms-demo\web-nuxt> node .output/server/index.mjs
Listening http://[::]:3000

您可以访问 http://localhost:3000,预览部署版本。

正式上线

以上的快速预览无误后,您可以开始准备上线站点,以下为示例的流程,以使用 pm2 部署为例:

  1. 确定服务端开发者:已于 config/buildadmin.php 中配置好当前站点的域名允许跨域,然后线上部署好服务端
  2. web-nuxt 目录内,建立 ecosystem.config.cjs 文件,其中内容如下
module.exports = {
    apps: [
        {
            name: 'BANuxt-3000',
            port: '3000',
            exec_mode: 'cluster',
            instances: 'max', // 启动的进程数量
            script: './.output/server/index.mjs',
            watch: false,
        },
    ],
}
  1. 将项目上传至服务器,本示例中不仅仅需要上传 web-nuxt/.output 目录,请确保 web-nuxt/ecosystem.config.jsweb-nuxt/package.json 文件亦有被上传,笔者此处是将整个 web-nuxt 目录除了 node_modules 以外都上传至了服务器(使用了 git 来管理代码)。
  2. 服务器上安装好 nodepm2包管理器:yarn/pnpm/npm
  3. 安装依赖,需要在 项目根目录 或者 web-nuxt/.output/server 目录 再次执行 pnpm install 非常重要
  4. web-nuxt 根目录,同时是刚刚建立的 ecosystem.config.cjs 文件所在目录,运行 pm2 start ecosystem.config.cjs,输出类似:
> pm2 start ecosystem.config.cjs

[PM2][WARN] Applications BuildAdminNuxtCMS not running, starting...
[PM2] App [BuildAdminNuxtCMS] launched (2 instances)
┌────┬──────────────────────┬─────────────┬─────────┬─────────┬──────────┬────────┬──────┬───────────┬──────────┬──────────┬──────────┬──────────┐
│ id │ name │ namespace │ version │ mode │ pid │ uptime │ ↺ │ status │ cpu │ mem │ user │ watching │
├────┼──────────────────────┼─────────────┼─────────┼─────────┼──────────┼────────┼──────┼───────────┼──────────┼──────────┼──────────┼──────────┤
│ 0 │ BuildAdminNuxtCMS │ default │ 0.0.0 │ cluster │ 429371 │ 0s │ 0 │ online │ 0% │ 39.8mb │ www │ disabled │
│ 1 │ BuildAdminNuxtCMS │ default │ 0.0.0 │ cluster │ 429378 │ 0s │ 0 │ online │ 0% │ 37.6mb │ www │ disabled │
└────┴──────────────────────┴─────────────┴─────────┴─────────┴──────────┴────────┴──────┴───────────┴──────────┴──────────┴──────────┴──────────┘
[PM2][WARN] Current process list is not synchronized with saved list. Type 'pm2 save' to synchronize.
  1. 访问测试,此时访问 服务器ip:3000,可以正常访问项目,则运行正常。
  2. 默认端口为 3000,请确保服务器已经对外开放此端口号,开放端口文档
  3. web-nuxt/.output 是可以单独跑起来的,开发者可自行研究,但笔者认为不便管理,因为该目录总是在重新编译时被清空。
  4. 若需绑定域名,请继续查看下一节