预览和上线
近期
node
低版本安装依赖时会提示建议升级到18+,但请谨慎升级,如果升级后出现_fetch is not a function
报错,请使用小于18
的node
版本进行编译,或者确定服务器端同样使用了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
部署为例:
- 确定服务端开发者:已于
config/buildadmin.php
中配置好当前站点的域名允许跨域,然后线上部署好服务端 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,
},
],
}
- 将项目上传至服务器,本示例中不仅仅需要上传
web-nuxt/.output
目录,请确保web-nuxt/ecosystem.config.js
和web-nuxt/package.json
文件亦有被上传,笔者此处是将整个web-nuxt
目录除了node_modules
以外都上传至了服务器(使用了git
来管理代码)。 - 服务器上安装好
node
、pm2
、包管理器:yarn/pnpm/npm
- 安装依赖,需要在
项目根目录
或者web-nuxt/.output/server 目录
再次执行pnpm install
非常重要 - 于
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.
- 访问测试,此时访问
服务器ip:3000
,可以正常访问项目,则运行正常。 - 默认端口为
3000
,请确保服务器已经对外开放此端口号,开放端口文档。 web-nuxt/.output
是可以单独跑起来的,开发者可自行研究,但笔者认为不便管理,因为该目录总是在重新编译时被清空。- 若需绑定域名,请继续查看下一节