当前位置: 首页 > ops >正文

Nuxt3部署

最近接了一个项目,需要用到 nuxt3 技术来满足甲方所要求的需求,在部署的时候遇到了很多问题,这里我一一给大家讲述部署流程,以及所遇到的坑

打包部署

部署分为俩种方式:

静态(spa)部署ssr部署

静态部署

静态部署指的是打包后 只包含静态的 html,css,js文件,对于seo不友好,部署之后和vue3项目部署没什么很大的差别

在终端输入命令:

npx nuxi generate

生成 dist 文件夹,可直接把dist文件夹放入到服务器上,即可访问,可参考我过往的这篇文章:

vue3部署全流程https://blog.csdn.net/lxh0113/article/details/142858608?spm=1001.2014.3001.5501

ssr部署

打包

ssr部署在部署后,页面有利于seo,所有的dom元素都能被检索到

可以执行

nuxt build

也可以修改 package.json 文件:

在终端输入

pnpm  build
#或者
npm run build

这样子就打包好了,内容会在这个 .output 目录下

安装node和npm

首先需要在服务器上安装 node 和 npm 以及 nginx

可参考该文章

Linux环境安装配置nodejs详细教程_linux安装nodejs-CSDN博客https://blog.csdn.net/qq_40743057/article/details/139139574

安装好后

可使用 xftp 上传文件到(我上传的是 /root/usr)目录

上传该目录,但是由于该文件前缀字符是 . 需要在设置里面选择显示隐藏文件夹

并在该目录下,上传一个 ecosystem.config.cjs(可在本地新建,然后写入内容,进行修改)

在官方给出的配置上,我加了俩行代码,一个是 error_files 和 out_file 这俩个在后续部署很有用,因为部署难免会出现很多错误,但是生产环境难以看到错误在哪里,浏览器下面检查也无法固定到错误问题,这个就能让我们定位到相关错误代码的位置,并去解决问题,它输出的文件在上图有所展示。

module.exports = {apps: [{name: 'demo', exec_mode: 'cluster',instances: 'max', port: '3000',script: './.output/server/index.mjs',args: 'start',error_file: './err.log', // 错误日志存放地址out_file: './out.log', // 输出日志存放地址}]
}

pm2配置

上传完毕之后,我们需要安装pm2

安装pm2 是因为需要该 ssr 渲染 ,是实实在在开了一个服务器,所以需要进程管理,有了pm2后,可以对该服务器进行更好的设置,也不会因为服务器掉线而导致网站失效

安装pm2

npm install pm2 -g
#或者
pnpm install pm2 -g

然后在 /root/usr 目录下,执行

pm2 start ecosystem.config.cjs

 会出现如下图,这个name指的是 你的 ecosystem.config.cjs 中的name字段,可修改

 

常用命令
保存服务
pm2 save
开机自启(操作系统开机自启)
pm2 startup
停止进程
pm2 stop demo #你的进程名字
 删除进程
pm2 delete demo#你的进程名字

另外一种部署:

这个部署需要把 .nuxt nuxt.config.ts package,json 和 public 文件夹 都上传到 服务器。不太推荐该方式,因为该方式有一些弊端:

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

最好新建一个文件夹,然后把这几个文件夹放在一个文件夹内,然后在 该文件夹下的目录下执行

安装依赖

pnpm i
#或者
npm install

 然后也可以进行pm2配置,如上述步骤是一样的。

错误日志查看:

配置好如上信息后,如若遇到报错,需要查看报错信息,打开 /root/usr 目录下的

就可以查看错误了:

 配置nginx

这一步也十分重要,如何安装nginx在我上面提到的 vue3 部署有说哦

安装好nginx后

我们在 nginx.conf 中给到如下内容(因为我们本地的项目服务端口是3000,所以转发到3000端口即可,如果你的端口不一样,也可以修改端口)

server {listen       80;listen       [::]:80;#index index.html;#try_files $uri $uri/ /index.html;server_name  localhost;#root         /root/usr/dist;# Load configuration files for the default server block.location / {proxy_pass http://localhost:3000;}error_page 404 /404.html;location = /404.html {}error_page 500 502 503 504 /50x.html;location = /50x.html {}}

最后执行 nginx -s reload 即可 

踩坑记录:

问题一

我之前遇到了这种情况,就是在打包的时候一直报错,导致无法打包,具体原因是因为这里面的依赖出现了冲突导致打包出现了问题

翻遍了github 尝试了相关解决办法,依旧没有,后面在大佬的建议下是重开了项目,把nuxt版本升到了最高级,然后安装依赖也是按照这个来安装的,网上的安装相关插件多多少少都可能有些问题,看官方的示例会更好。

Nuxt 模块 - Nuxt 中文文档

问题二

后面打包是没问题了,但是在部署的时候还是出现了问题。部署之后,在生产环境是无法知道错误的,所以这个时候就需要错误日志了,

也是尝试了很多办法,最后这个解决方法解决了我的问题

 在nuxt.config.ts 下

build: {transpile: ["vue-router", "@vue/devtools-api"]},

然后完结撒花!!!

http://www.xdnf.cn/news/10538.html

相关文章:

  • TS 星际通信指南:从 TCP 到 UDP 的宇宙漫游
  • (Python)列表的操作(增删改查、排序)
  • 2025年ESWA SCI1区TOP,改进成吉思汗鲨鱼算法MGKSO+肝癌疾病预测,深度解析+性能实测
  • 网络攻防技术四:网络侦察技术
  • 重温经典算法——快速排序
  • 探秘集成学习:从基础概念到实战应用
  • 微软PowerBI考试 PL-300学习指南
  • DeepSeek 赋能车路协同:智能交通的破局与重构
  • 模块二:C++核心能力进阶(5篇) 篇一:《STL源码剖析:vector扩容策略与迭代器失效》
  • 核心机制:滑动窗口
  • 相机--相机标定
  • 芝麻酱工作创新点分享1——SpringBoot下使用mongo+Redis做向量搜索
  • PyTorch——卷积操作(2)
  • [网页五子棋][匹配对战]落子实现思路、发送落子请求、处理落子响应
  • Python 在金融中的应用- Part 1
  • JSP、HTML和Tomcat
  • Linux运维笔记:服务器感染 netools 病毒案例
  • Windows+VSCode搭建小智(xiaozhi)开发环境
  • 通信革新与网络安全探索与创新:开启未来之门
  • ShenNiusModularity项目源码学习(33:ShenNius.Admin.Mvc项目分析-18)
  • 【看到哪里写到哪里】C的指针-3(函数指针)
  • P1115 最大子段和
  • 打卡第43天
  • 【Ragflow】24.Ragflow-plus开发日志:增加分词逻辑,修复关键词检索失效问题
  • 从 AMQP 到 RabbitMQ:核心组件设计与工作原理(一)
  • [Java恶补day13] 53. 最大子数组和
  • 判断使用什么技术来爬取数据详细讲解
  • 【Redis】笔记|第5节|Redisson实现高并发分布式锁核心源码
  • 个人总结八股文之-基础篇(持续更新)
  • 汽车软件 OTA 升级技术发展现状与趋势