Nuxt:Nuxt3项目部署【详细教程-亲测有效~!】

在这里插入图片描述

提示:本篇文章主要针对Nuxt3项目上线部署方法进行记录讲述!

Nuxt项目部署可分为多种包含但不限于 官方PM2 部署方法,Docker部署等,本文就PM2部署方法进行介绍!~


一、环境介绍:

系统版本: Ubuntu版本 23.04
Node版本: v20.13.0
PM2版本: 5.4.3
Nuxt框架版本: 3.7.4

二、环境安装:

1.操作系统安装Node环境:

(1)方法一:使用Ubuntu的官方软件仓库:

sudo apt update
sudo apt install nodejs npm

(2)方法二:手动下载Node安装包上传至目标服务器手动解压安装:
下载地址1:https://nodejs.org/zh-cn/download
在这里插入图片描述
下载地址2:https://nodejs.cn/download/
在这里插入图片描述
在系统/usr/local目录下创建node文件夹,将下载好的node安装软件包,使用Xftp软件上传。
在这里插入图片描述
解压并安装

# 进入目录
cd /usr/local/node
# 解压
xz -d node-v20.13.0-linux-x64.tar.xz
tar -xvf node-v20.13.0-linux-x64.tar

(3)方法三:使用nvm node包管理工具进行下载,相较于上面两种方法可以灵活切换node版本:
方法参照与文章: Linux:安装 node 及 nvm node 版本管理工具(ubuntu )

2.配置node环境变量

如果手动下载解压安装的方法安装的node可能需要单独配置node环境变量;

# 打开profile文件进行编辑
sudo vi /etc/profile
# profile文件中,按i键进行编辑插入
# 在最上面写入如下环境变量的配置
export NODE_HOME=/usr/local/node 
export PATH=$NODE_HOME/bin:$PATH
# 编辑完按Esc键退出编辑,最后输入:wq保存退出(注意:要写)

查看是否安装成功
在这里插入图片描述

3.安装pm2

PM2(进程管理器 2)是一个快速且简单的解决方案,用于在你的服务器或虚拟机上托管你的 Nuxt 应用。
pm2 是开源的基于Node.js的进程管理工具,可实现资源高效调度和负载均衡,包括守护进程、监控、日志的一整套完整的功能。

npm i -g pm2

三、具体部署:

1.项目打包

# 执行命令
npm run build

在这里插入图片描述
在项目文件夹中生成一个.output文件夹;
在这里插入图片描述
.output文件夹通过Xftp软件上传到服务器目标文件夹中
在这里插入图片描述

需要注意的是:当我们把.output文件夹移入目标文件夹后,.output文件是隐藏文件,是看不见的。

2.配置pm2

在服务区放置.output文件的目录下创建一个pm2的执行脚本文件ecosystem.config.cjs


需要注意:网上查询有的说道文件名称是ecosystem.config.js或者ecosystem.config.json都行,但是经过亲测,目前ecosystem.config.js在后续运行pm2时会报错,ecosystem.config.json并没有尝试过; 官网上是指定文件名称为ecosystem.config.cjs,从网上部分相关截图来看ecosystem.config.js是nuxt官方在旧版本时推出的写法,而ecosystem.config.cjs是新版本的写法。
在这里插入图片描述
在这里插入图片描述
需要注意得是:这里得新版本和旧版本区别,不是说:旧版本用旧版本的命名写法,新版本用新版本的命名写法;而是,新版本更新后,目前新旧版本都得使用ecosystem.config.cjs命名,以.cjs后缀结尾,因为我的项目在部署时,其nuxt版本是3.7.4,已经低于上图中的v3.12版本了。
在这里插入图片描述


创建好ecosystem.config.cjs文件后,对其进行编辑操作。

#进入所在目录进行编辑操作:
sudo vim ecosystem.config.cjs

#将下面内容赋值到ecosystem.config.cjs文件中保存:
module.exports = {
  apps: [
    {
      name: 'gw', 
      exec_mode: 'cluster',
      instances: 'max', 
      port: '8080',
      script: './.output/server/index.mjs',
      args: 'start'
    }
  ]
}
# 上面配置项:“name”是pm2运行进程的名称(自定义);“port”是指定访问的端口(自定义,作用:修改Nuxt打包默认3000端口)
#			“script”是脚本执行的最终命令
			

有关pm2(进程管理)的配置参数的具体解释请查询文章下发相关链接!!~!

3.利用pm2后台运行nuxt项目

使用pm2运行Nuxt项目:进入项目文件目录,运行pm2命令,pm2会在当前文件目录内查找ecosystem.config.cjs文件来运行启动

#pm2操作常用命令

#1.使用pm2启动(启动服务)
pm2 start ecosystem.config.cjs
#2.保存当前运行的应用程序列表(保存服务)
pm2 save
#3.生成一个启动脚本,并将保存到应用程序列表添加到系统启动项中(保存设置当前服务为系统自启动服务)
#执行 pm2 startup 命令后,每当服务器在关机重启后,都会自启动当前运行项目的服务进程。
pm2 startup
#4.终止进程,但程序还在(终止服务)
pm2 stop 自定义名称
#5.删除(删除服务)
pm2 delete 自定义名称
#6.取消系统自启动服务
pm2 unstartup systemd
#7.重启某服务
pm2 restart 自定义名称
#8.显示所有进程状态
pm2 list
#9.服务器重启
systemctl reboot

开启服务步骤:

  1. pm2 start 【 脚本文件】
pm2 start ecosystem.config.cjs

在这里插入图片描述

  1. pm2 save 保存服务 (pm2层面的自启)
    在这里插入图片描述

  2. 开机自启 pm2 startup (操作系统开机后的自启)
    在这里插入图片描述在这里插入图片描述


关闭服务步骤:

  1. pm2 delete 【pm2服务名称】
pm2 delete gw

在这里插入图片描述

  1. pm2 save (关闭不执行save ,那么开机的时候服务会重新启动)
    在这里插入图片描述
    3.删除系统自动启动服务 pm2 unstartup systemd
    在这里插入图片描述
    需要注意得是: 在我们不需要这个服务的时候,在执行完pm2 delete 【服务名】 命令后,还需要执行pm2 save命令,否则当pm2启动时,pm2会恢复到上一次save的状态,从而又开启服务启动时的进程服务。

4.拓展:一种PM2方式下的部署方法(不太推荐但可行)

执行完上面三步Nuxt3利用PM2进行管理部署的方法就完成了。这里介绍一种PM2方式,不同的脚本命令部署的方法。

(1)使用npm run build 项目打包后,将.nuxtnuxt.config.jspackage.jsonpublic文件上传到服务器
在这里插入图片描述

注意:.nuxt文件同上面涉及的.output文件一样是隐藏的;【Linux系统中以.开头的文件名是隐藏文件】


(2)在项目文件目录下,执行npm i命令安装依赖
在这里插入图片描述


(3)在项目文件下,创建PM2配置文件ecosystem.config.cjs文件;

#进入所在目录进行编辑操作:
sudo vim ecosystem.config.cjs

#将下面内容赋值到ecosystem.config.cjs文件中保存:
module.exports = {
  apps: [
    {
      name: 'gw', 
      exec_mode: 'cluster',
      instances: 'max', 
      port: '8080',
      script: './node_modules/nuxt/bin/nuxt.mjs',
      args: 'start'
    }
  ]
}
# 上面配置项:“name”是pm2运行进程的名称(自定义);“port”是指定访问的端口(自定义,作用:修改Nuxt打包默认3000端口)
#			“script”是脚本执行的最终命令
			

在这里插入图片描述

区别上面方法pm2配置文件的执行脚本 script命令不同;执行的文件不一样;拓展的这个方法,是通过执行node_modules文件中nuxt/bin/nuxt.mjs文件,而上面那种方法是执行.output/server/index.mjs 文件

之所以不推荐但可以用,是因为node_modules文件+public文件内存大小远大于上面方法的.output文件,过多占用服务器内存不实用。其次在下载安装依赖包生成node_modules文件过程中,可能因为环境问题出现下载速度过慢卡顿,兼容报错等问题。


(4)利用pm2后台运行nuxt项目,步骤同上述步骤相同。


四、注意事项:

提示:整个部署过程中需要注意的点总结

  1. pm2配置文件ecosystem.config.cjs命名后缀需要注意,目前版本是.cjs后缀结尾。
  2. 如果需要修改默认nuxt项目打包后的3000端口,可以在pm2配置文件中通过“port”配置修改。
  3. 注意pm2托管项目启动服务和取消服务时save的进程状态。启动服务时需要save,删除服务也需要save。
  4. 可查看拓展内容,体会PM2的配置过程 与 Nuxt项目通过不同启动配置文件(index.mjs、nuxt.msj)的实际区别。

五、相关链接:

  1. Nuxt3项目搭建踩坑记录——项目初始化失败问题;
  2. 官网部署介绍;
  3. [详细教程]Nuxt2前端项目的部署;
  4. PM2入门及其常用命令;
  5. PM2 配置文件(ecosystem.config.js 字段详细介绍);
  6. Nuxt3用pm2启动报错[PM2][ERROR] File ecosystem.config.js malformated;
  7. pm2 设置开机自动启动已启动的服务;
  8. 使用pm2指令无法关闭程序;
### Nuxt 3 部署指南与最佳实践 #### 准备工作 为了成功部署 Nuxt 3 应用程序,确保项目已经按照官方文档完成开发环境配置并试无误。Nuxt 3 支持多种托管平台和服务提供商,选择合适的主机对于优化性能至关重要[^1]。 #### 构建生产版本 构建命令会创建一个高效的生产就绪应用程序,在 `package.json` 中通常定义如下脚本: ```json { "scripts": { "build": "nuxi build", "generate": "nuxi generate" } } ``` 执行 `npm run build` 或者针对静态站点生成使用 `npm run generate` 来准备用于发布的文件结构。 #### 使用 Node.js 运行时服务端渲染 (SSR) 如果选择了 SSR 方式,则需设置服务器来处理请求并通过 Node.js 执行应用逻辑。可以利用 PM2 等进程管理工具保持长期运行稳定性和自动重启功能。 #### 静态网站生成 (Static Site Generation, SSG) 当采用 SSG 方法时,只需上传由 `npm run generate` 命令产生的 `.output/public/` 文件夹下的资源到任何支持 HTML/CSS/JS 的 Web 主机即可。 #### 容器化解决方案 Docker 是一种流行的容器技术,能够简化跨不同操作系统间的部署流程。编写 Dockerfile 并通过 CI/CD 流水线自动化整个过程有助于提高效率和一致性。 #### 性能调优建议 - 启用 HTTP 缓存控制头以减少重复加载时间; - 实施代码分割策略降低初始页面体积; - 利用 CDN 加速全球访问速度; - 对图片和其他媒体资产实施懒加载机制; #### 日志记录与监控 集成日志聚合系统如 ELK Stack 及实时监仪表板可以帮助及时发现潜在问题并快速响应异常情况。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值