nuxt3搭建和部署

Nuxt 3是一个基于Vue 3的静态网站生成框架,它提供了高性能、SEO友好的Web应用程序开发体验。Nuxt 3重写了许多核心代码,增加了新功能,如基于Vite的构建系统、改进的路由系统、数据获取和插件系统。它支持TypeScript和多种渲染模式(CSR、SSG、SSR),提供了更好的性能和更快的加载速度。Nuxt 3是Vue 3生态系统中一个完善且强大的解决方案,适用于需要服务端渲染和SEO优化的项目。

1、使用npx nuxi搭建项目

初始化一个名字为portal的项目

npx nuxi@latest init portal
npm WARN config global `--global`, `--local` are deprecated. Use `--location=global` instead.
Need to install the following packages:nuxi@latest
Ok to proceed? (y) yWARN  Current version of Node.js (16.15.1) is unsupported and might cause issues.                          Please upgrade to a compatible version >= 18.0.0.ERROR  Error: Failed to download template from registry: h is not a function       
上面报错的原因是nodejs版本太低了,使用nuxt3,nodejs的版本最低需要18.0。
npx nuxi@latest init portalERROR  Error: Failed to download template from registry: Failed to download https://raw.githubusercontent.com/nuxt/starter/templates/templates/v3.json: TypeError: fetch failed
网络连接失败,需要手动配置一下hosts

打开C:\Windows\System32\drivers\etc\hosts,添加raw.githubusercontent.com与IP的对应关系,我的电脑没有hosts文件,手动创建了一个,内容如下

185.199.109.133 raw.githubusercontent.com
# 185.199.110.133 raw.githubusercontent.com
# 185.199.111.133 raw.githubusercontent.com

我试了一下配置这个IP是可以的185.199.109.133(查找域名对应的IP可以在 https://sites.ipaddress.com/ 网站查询)

>npx nuxi@latest init portal> Which package manager would you like to use?
> npm
pnpm
yarn
bun
如果执行命令后是这样子,就说明成功了,根据自己情况选择,我选择了默认的npm安装。
>node -v
v18.20.3

本次安装的node版本18.20.3

  "dependencies": {"nuxt": "^3.11.2","sass": "^1.77.4","vue": "^3.4.27","vue-router": "^4.3.2"}

新建项目时的nuxt版本3.11.2

2、新建必要目录

i.默认情况下仅有public和server目录,我们需要手动创建components、assets和pages目录

组件的用法请查看文档: components/ · Nuxt 目录结构 - Nuxt 中文 (nuxtjs.org.cn)

ii.新建/pages/index.vue

路由无需配置,会根据目录自动配置好

详情请看文档: pages/ · Nuxt 目录结构

iii.修改app.vue的内容

NuxtPage组件用于显示位于pages/目录中的页面, 它是对 Vue Router 的RouterView 组件的封装。

<template><div>
<!--    <NuxtWelcome />--><NuxtPage /></div>
</template>

项目运行后访问 localhost:3000 即可看到index.vue页面的内容

3、线上部署

i.先执行nuxt build打包

打包结束后会在项目根目录生成**.output文件夹**,把文件内的内容上传至服务器(假设为portal目录)

ii.使用node命令运行项目

项目默认使用3000端口运行

# 当前在portal目录
ls
nitro.json  public  server
node server/index.mjs
Listening on http://[::]:3000

可以看到项目在3000端口运行

注意:使用node命令运行的项目会随着窗口关闭而关闭,如果想要项目在后台运行需要安装pm2

iii.使用curl检测项目是否运行
curl http:// localhost:3000
<!DOCTYPE html><html><head><meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
................................
iv.配置nginx让域名可以访问网站

在nginx中增加如下配置

server {listen 80;server_name www.xxxx.run;location /{proxy_pass http://localhost:3000; # 反向代理至node服务器}
}

最后执行nginx -s reload 让配置重载一下

现在可以在浏览器使用http:// www.xxxx.run访问刚才的部署的网站了

4、使用pm2部署

i.线上部署需要安装pm2程序

PM2是一个Node.js应用程序的生产进程管理器,可以用来启动、重启、停止和删除应用程序。使用npm install pm2 -g进行全局安装。

pm2 --version
5.4.1
ii.配置ecosystem.config.js

这是一个用于PM2的配置文件,需要放在项目的根目录下(portal/ecosystem.config.js)。文件中需要指定项目的名称、执行模式、实例数量以及启动脚本的路径等信息。

module.exports = {apps: [{name: 'portal',port: '3000',exec_mode: 'cluster', // 使用集群模式运行instances: 'max', // 根据CPU核心数自动分配实例数script: './server/index.mjs'}]
}

参考: 部署 · Nuxt 入门 - Nuxt 中文 (nuxtjs.org.cn)

iii. 使用PM2启动项目

在项目的根目录下执行pm2 start ecosystem.config.js命令,启动Nuxt3项目。如果一切正常,PM2会显示项目已经在线(online),并且可以通过指定的端口进行访问。

pm2 start ecosystem.config.js 
[PM2][WARN] Applications portal not running, starting...
[PM2] App [portal] launched (2 instances)
┌────┬────────────────────┬──────────┬──────┬───────────┬──────────┬──────────┐
│ id │ name               │ mode     │ ↺    │ status    │ cpu      │ memory   │
├────┼────────────────────┼──────────┼──────┼───────────┼──────────┼──────────┤
│ 0  │ portal             │ cluster  │ 0    │ online    │ 0%       │ 43.7mb   │
│ 1  │ portal             │ cluster  │ 0    │ online    │ 0%       │ 38.0mb   │
└────┴────────────────────┴──────────┴──────┴───────────┴──────────┴──────────┘

服务器CPU是两核,于是它启动了两个实例

附:pm2常用命令

  • 启动单个Node.js应用程序:pm2 start app.js
  • 启动并命名应用程序:pm2 start app.js --name="api"
  • 停止单个应用程序:pm2 stop app_name|app_id
  • 停止所有应用程序:pm2 stop all
  • 重启单个应用程序:pm2 restart app_name|app_id
  • 重启所有应用程序:pm2 restart all
  • 删除单个应用程序:pm2 delete app_name|app_id
  • 删除所有应用程序:pm2 delete all
  • 列出所有启动的应用程序:pm2 list
  • 显示应用程序的详细信息:pm2 show app_name|app_id
  • 监视每个应用程序的CPU和内存使用情况:pm2 monit
  • 查看所有应用程序的日志:pm2 logs
  • 查看指定应用程序的日志:pm2 logs app_name|app_id
  • 设置应用程序开机自启动:pm2 startup

如果是nuxt2请查看:https://blog.csdn.net/dan_seek/article/details/102875068

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/37474.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

20240701 每日AI必读资讯

&#x1f3eb;AI真炼丹&#xff1a;整整14天&#xff0c;无需人类参与 - 英矽智能推出全球首个AI参与决策的生物学实验室&#xff0c;实现了14天内完成靶点发现和验证的全自动化闭环实验。 - 该实验室由PandaOmics平台驱动&#xff0c;集成多种预测模型和海量数据&#xff0…

conda安装d2l教程

前言 提前安装anaconda为什么直接安装d2l会出错&#xff1f;- 因为python版本问题&#xff0c;最好的解决办法就是利用conda来建立一个虚拟的环境 第一步 创建新的虚拟环境 打开conda命令行&#xff0c;也就是anaconda prompt输入下面的命令 conda create --name d2l pytho…

【Python】从基础到进阶(二):了解Python语言基础以及数据类型转换、基础输入输出

&#x1f525; 个人主页&#xff1a;空白诗 文章目录 一、引言二、基本数据类型转换1. 隐式转换2. 显式转换 三、基本输入输出1. 输入&#xff08;input&#xff09;2. 输出&#xff08;print&#xff09;3. 案例&#xff1a;输入姓名、年龄、身高以及体重&#xff0c;计算BMI指…

《从零开始学习大语言模型》专栏来啦!

欢迎来到我的专栏LLM-from-scratch&#xff0c;这是一个致力于从零开始学习和掌握大语言模型的知识宝库。无论你是刚入门的新手&#xff0c;还是想要深入了解的高级用户&#xff0c;这里都有适合你的内容。以下是专栏的精彩章节&#xff1a; LLM-from-scratch-1.图解tokenizat…

DM表级触发器

可以理解为行变动级 触发体中写逻辑 这是表修改时调用存储过程 感谢大哥分享: https://blog.csdn.net/WuLex/article/details/83181449 感谢大哥分享: https://blog.csdn.net/ChennyWJS/article/details/131913198

湘潭大学软件工程信息与网络安全复习笔记最后一篇

文章目录 复习建议分数占比流密码A5/1RC4 分组密码DESAES 复习建议 现在笔者复习算是收尾了&#xff0c;现在也是考前的最后一天了&#xff0c;走了不少弯路&#xff0c;但是可能也是必不可少的&#xff0c;复习建议是硬着头皮把这份文件看一遍&#xff0c;不理解的地方找英文…

如何使用sr2t将你的安全扫描报告转换为表格格式

关于sr2t sr2t是一款针对安全扫描报告的格式转换工具&#xff0c;全称为“Scanning reports to tabular”&#xff0c;该工具可以获取扫描工具的输出文件&#xff0c;并将文件数据转换为表格格式&#xff0c;例如CSV、XLSX或文本表格等&#xff0c;能够为广大研究人员提供一个…

软件接口自动化测试

使用软件工具工装治具测试 在当今快速迭代的软件开发环境中&#xff0c;确保软件质量与高效交付成为了每个开发团队的首要任务。软件接口作为系统之间交互的关键桥梁&#xff0c;其稳定性和可靠性直接影响到整个应用生态的性能。因此&#xff0c;软件接口自动化测试成为了提升…

在 Python 中将字典内容保存到 Excel 文件

目录&#xff1a; 使用 Pandas 转 Excel使用 Openpyxl 转 Excel使用 xlsxwriter 转 Excel使用 csv 转 Excel Python 中的字典是一个数据集合&#xff0c;其中每个值对应一个键。它们是无序的、可变的&#xff0c;并且对字典中存储的值和键的数据类型没有限制。Python 程序员经常…

【SpringCloud】Ribbon源码解析

ribbon是一个负载均衡组件&#xff0c;它可以将请求分散到多个服务提供者实例中&#xff0c;提高系统的性能和可用性。本章分析ribbon是如何实现负载均衡的 1、LoadBalanced 消费者在引入ribbon组件后&#xff0c;给http客户端添加LoadBalanced注解就能启用负载均衡功能。Load…

压缩包怎么解压,解压压缩包不损坏文件

常见格式&#xff1a; ZIP&#xff1a;最常见的压缩文件格式之一&#xff0c;支持跨平台。RAR&#xff1a;另一种常见的压缩文件格式&#xff0c;通常压缩率比ZIP高&#xff0c;但不如ZIP普及。7Z&#xff1a;来自7-Zip的压缩格式&#xff0c;支持更高的压缩率和一些高级特性。…

手机照片数据恢复,2个技巧解决你的疑惑与困扰

手机照片是我们日常生活中记录美好瞬间的重要工具&#xff0c;然而&#xff0c;当照片存储量越来越大&#xff0c;以至于手机内存不足时&#xff0c;我们就不得不放弃一部分。照片数据恢复是否还有希望呢&#xff1f;当然啦&#xff01;本文将为你提供2个实用的技巧&#xff0c…

虚拟机配置与windows之间文件夹共享samba服务:

虚拟机配置与windows之间文件夹共享samba服务: #输入安装命令&#xff1a; 第一步: 下载samba cd /etc/ sudo apt-get install samba第二步: 配置用户 sudo smbpasswd -a 虚拟机用户名第三步: 进入配置文件配置共享文件 sudo vim /etc/samba/smb.conf末尾输入以下内容: [s…

经典递归题 扩充序列 两种做法

一道经典递归题&#xff0c;两种做法&#xff0c;常规递归做法和模拟数学规律解法 3695. 扩充序列 - AcWing题库 扩充序列 样例解释 对于样例 1&#xff0c;经过 2 次扩充&#xff0c;得到序列 [1,2,1,3,1,2,1]其第 2 个元素为 2。 对于样例 2&#xff0c;经过 3次扩充&…

针对airtest的poco标签正则匹配

1.text属性方式定位 poco(text“中古屋”) 换成正则表达式定位 poco(textMatches“正则表达式”) poco(textMatches".*中古屋") 2.name属性方式定位 poco(name‘com.addcn.android.house591:id/grid_item_text’) 换成正则表达式定位 poco(nameMatches“正则表…

Linux下如何设置可执行文件和库文件的环境变量?

在Linux系统中&#xff0c;可执行文件和库文件的查找路径是由环境变量控制的&#xff0c;其中最重要的是PATH环境变量用于可执行文件&#xff0c;而动态库的查找路径则由LD_LIBRARY_PATH环境变量决定。下面分别介绍这两个方面&#xff1a; 可执行文件的搜索路径&#xff08;PA…

对不起,AI大模型不是风口

“我们正处在全新起点&#xff0c;这是一个以大模型为核心的人工智能新时代&#xff0c;大模型改变了人工智能&#xff0c;大模型即将改变世界。”——5月26日&#xff0c;百度创始人、董事长兼CEO李彦宏先生在2023中关村论坛发表了《大模型改变世界》演讲。 李彦宏指出&#…

【SpringCloud】Hystrix源码解析

hystrix是一个微服务容错组件&#xff0c;提供了资源隔离、服务降级、服务熔断的功能。这一章重点分析hystrix的实现原理 1、服务降级 CAP原则是分布式系统的一个理论基础&#xff0c;它的三个关键属性分别是一致性、可用性和容错性。当服务实例所在服务器承受过大的压力或者受…

c++【入门】挖胡萝卜

限制 时间限制 : 1 秒 内存限制 : 128 MB 题目 小兔朱迪挖了x个胡萝卜&#xff0c;狐狸尼克挖到胡萝卜数量是小兔挖到的3倍&#xff0c;小羊肖恩挖到胡萝卜的数量比狐狸尼克少8个&#xff1b; 请你编程计算一下狐狸尼克和小羊肖恩分别挖了几个胡萝卜&#xff0c;以及平均每…

前端工程化09-webpack静态的模块化打包工具(未完结)

9.1、开发模式的进化历史 webpacks是一个非常非常的强大的一个工具&#xff0c;相应的这个东西的学习也是有一定的难度的&#xff0c;里边的东西非常的多&#xff0c;里面涉及到的 概念的话也是非常非常的多的。 这个东西既然非常重要&#xff0c;那么在我们前端到底处于怎样…