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.pswp.cn/web/37474.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/37474.shtml
英文地址,請注明出處:http://en.pswp.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;那么在我們前端到底處于怎樣…