前端基礎:React項目打包部署服務器教程

問題背景

我做了一個React框架的前端的Node項目,是一個單頁面應用。

頁面路由用的是,然后使用了React.lazy在路由層級對每一個不同頁面進行了懶加載,只有打開那個頁面才會加載對應資源。

然后現在我用了Webpack5對項目進行了打包,需要將項目部署到服務器上。

PS:vue項目打包部署同理。

打包好的build文件夾如下圖。

image-20231013102755228

問題解決

方法一:Serve靜態服務器

使用前服務器環境需要安裝好NodeJS和npm。

使用npm -v 和 node -v進行查看。

安裝好之后就要安裝serve。

# 全局安裝serve
npm install -g serve

安裝好之后,將本地打包的build文件夾都上傳到服務器目錄中。

用終端打開對應的項目的文件夾(注意文件路徑是在build文件夾的上一層,如下圖)。

image-20231013103919269

終端輸入serve -s build運行靜態服務器。

image-20231013104024656

運行成功的效果如上圖所示,該項目就運行在指定的端口中,可以輸入 -l 參數,指定運行端口。

serve -s -l 3333 build

方法二:Nginx代理靜態頁面

先確保服務器安裝好Nginx,能正常運行。

將項目的打包build文件夾上傳到服務器中。

然后就是改Nginx的配置文件了。

server
{listen 80;listen 443 ssl http2;server_name xxxxxxxxxxxx; # 改成自己的域名或ip index index.php index.html index.htm default.php default.htm default.html;root /www/frontTeachingSystem/build;#SSL-START SSL相關配置,請勿刪除或修改下一行帶注釋的404規則#error_page 404/404.html;ssl_certificate    /www/server/panel/vhost/cert/xxxxxxxxxxxx/fullchain.pem;ssl_certificate_key    /www/server/panel/vhost/cert/xxxxxxxxxxxx/privkey.pem;ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;ssl_ciphers EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5;ssl_prefer_server_ciphers on;ssl_session_cache shared:SSL:10m;ssl_session_timeout 10m;add_header Strict-Transport-Security "max-age=31536000";error_page 497  https://$host$request_uri;#SSL-END#ERROR-PAGE-START  錯誤頁配置,可以注釋、刪除或修改#error_page 404 /404.html;#error_page 502 /502.html;#ERROR-PAGE-END#PHP-INFO-START  PHP引用配置,可以注釋或修改include enable-php-00.conf;#PHP-INFO-END#REWRITE-START URL重寫規則引用,修改后將導致面板設置的偽靜態規則失效include /www/server/panel/vhost/rewrite/xxxxxxxxxxxx.conf;#REWRITE-ENDlocation / {try_files $uri $uri/ /index.html;}#禁止訪問的文件或目錄location ~ ^/(\.user.ini|\.htaccess|\.git|\.env|\.svn|\.project|LICENSE|README.md){return 404;}#一鍵申請SSL證書驗證目錄相關設置location ~ \.well-known{allow all;}#禁止在證書驗證目錄放入敏感文件if ( $uri ~ "^/\.well-known/.*\.(php|jsp|py|js|css|lua|ts|go|zip|tar\.gz|rar|7z|sql|bak)$" ) {return 403;}location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)${expires      30d;error_log /dev/null;access_log /dev/null;}location ~ .*\.(js|css)?${expires      12h;error_log /dev/null;access_log /dev/null;}access_log  /www/wwwlogs/xxxxxxxxxxxx.log;error_log  /www/wwwlogs/xxxxxxxxxxxx.error.log;
}

以上是我的Nginx的配置文件,我是弄了SSL證書的。

注意一定要加下面這段。

location / {try_files $uri $uri/ /index.html;
}

因為我部署的是單頁面應用,頁面的路由是虛擬路由,實際并沒有對應的文件,如果不加這個的話,路由跳轉時Nginx會去尋找對應的文件,導致找不到文件404錯誤,項目無法正常運行。

我一開始在網上搜索資料的時候,查到的讓把"root"屬性的文件路徑改在build文件夾的上一層,然后在index屬性中加入"build",像下面這樣

server
{listen 80;listen 443 ssl http2;server_name xxxxxxxxxxxx; # 改成自己的域名或ip index build index.php index.html index.htm default.php default.htm default.html;root /www/frontTeachingSystem;
}

但我試了下不能正常運行,改成上面的那樣就可以了。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/77206.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/77206.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/77206.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【深度學習:理論篇】--Pytorch基礎入門

目錄 1.Pytorch--安裝 2.Pytorch--張量 3.Pytorch--定義 4.Pytorch--運算 4.1.Tensor數據類型 4.2.Tensor創建 4.3.Tensor運算 4.4.Tensor--Numpy轉換 4.5.Tensor--CUDA(GPU) 5.Pytorch--自動微分 (autograd) 5.1.back…

使用 Spring Boot 快速構建企業微信 JS-SDK 權限簽名后端服務

使用 Spring Boot 快速構建企業微信 JS-SDK 權限簽名后端服務 本篇文章將介紹如何使用 Spring Boot 快速構建一個用于支持企業微信 JS-SDK 權限校驗的后端接口,并提供一個簡單的 HTML 頁面進行功能測試。適用于需要在企業微信網頁端使用掃一掃、定位、錄音等接口的…

工程師 - FTDI SPI converter

中國網站:FTDIChip- 首頁 UMFT4222EV-D UMFT4222EV-D - FTDI 可以下載Datasheet。 UMFT4222EVUSB2.0 to QuadSPI/I2C Bridge Development Module Future Technology Devices International Ltd. The UMFT4222EV is a development module which uses FTDI’s FT4222H…

rcore day6

批處理系統 (Batch System) 出現于計算資源匱乏的年代,其核心思想是: 將多個程序打包到一起輸入計算機;當一個程序運行結束后,計算機會 自動 執行下一個程序 應用程序難免會出錯,如果一個程序的錯誤導致整個操作系統都…

Linux系統學習Day2——在Linux系統中開發OpenCV

一、OpenCV簡介 OpenCV(Open Source Computer Vision Library)是一個開源的跨平臺計算機視覺和機器學習庫,廣泛應用于圖像處理、視頻分析、物體檢測等領域。它提供了豐富的算法和高效的工具集,支持C、Python等多種語言&#xff0c…

SAP Overview

SAP—企業運營的數字化引擎 在數字化轉型的浪潮中,SAP以其全面的企業應用軟件套件,為全球企業提供了強大的運營支持。SAP的模塊化解決方案覆蓋了企業運作的每一個關鍵環節,從銷售到倉庫管理,每個模塊都是針對特定業務需求精心設計…

Kafka 中的冪等機制

Kafka 中的 冪等性(Idempotence) 是生產者端的重要機制,旨在確保即使在網絡抖動、重試、Broker 重啟等情況下,同一條消息不會被重復寫入到 Topic 中。這是實現可靠消息傳遞、避免重復消費的關鍵手段之一。 ? 什么是冪等性&#…

用c語言寫一個linux進程之間通信(聊天)的簡單程序

使用talk 用戶在同一臺機器上talk指令格式如下: ? talk 用戶名ip地址 [用戶終端號] 如果用戶只登錄了一個終端,那么可以不寫用戶終端號,如: talk userlocalhost可以使用who指令來查看當前有哪些用戶登錄,他的終端號…

深入探索Scala:從基礎到進階的全面總結

在大數據技術領域,Scala語言憑借其獨特優勢占據重要地位。它與Spark緊密相連,為大數據計算提供強大支持。今天,讓我們一同深入回顧Scala從基礎到進階的關鍵知識點。 Scala開發環境搭建是入門的第一步,需確保JDK安裝成功&#xff0…

【每日一個知識點】分布式數據湖與實時計算

在現代數據架構中,分布式數據湖(Distributed Data Lake) 結合 實時計算(Real-time Computing) 已成為大數據處理的核心模式。數據湖用于存儲海量的結構化和非結構化數據,而實時計算則確保數據能夠被迅速處理…

GPT-5、o3和o4-mini即將到來

原計劃有所變更: 關于我們應有何期待的一些零散想法。 深度研究(Deep Research)確實強大但成本高昂且速度較慢(當前使用o3模型)。即將推出的o4-mini在性能上可能與o3相近,但將突破這些限制,讓全球用戶——甚至免費用戶(盡管會有速率限制)——都能用上世界頂級AI研究助…

Spring Cloud LoadBalancer負載均衡+算法切換

目錄 介紹核心功能負載均衡啟動兩個支付服務訂單模塊引入依賴LoadBalanced 注解啟動訂單服務測試結果 負載均衡算法切換總結 介紹 Spring Cloud LoadBalancer 是 Spring Cloud 提供的客戶端負載均衡解決方案,提供更現代化的 API 和更好的 Spring 生態系統集成。它支…

Chrome 瀏覽器插件收錄

1. Responsive Viewer 可以在同個窗口內,針對同一網站,添加多個不同設備屏幕顯示。 在前端開發,需要多端適配,尤其是移動端響應式適配的網站開發中,可以同時測試多個不同屏幕的適配效果。 2. VisBug 提供工具欄&#x…

SQL 函數概述

SQL 函數概述 SQL 函數可以分為幾大類,不同數據庫系統可能有略微不同的實現。以下是主要的 SQL 函數分類: 1. 聚合函數 (Aggregate Functions) COUNT() - 計算行數 SUM() - 計算總和 AVG() - 計算平均值 MIN() - 找最小值 MAX() - 找最大值 GROUP…

MySQL學習筆記九

第十一章使用數據處理函數 11.1函數 SQL支持函數來處理數據但是函數的可移植性沒有SQL強。 11.2使用函數 11.2.1文本處理函數 輸入: SELECT vend_name,UPPER(vend_name) AS vend_name_upcase FROM vendors ORDER BY vend_name; 輸出: 說明&#…

認識vue中的install和使用場景

寫在前面 install 在實際開發中如果你只是一個簡單的業務實現者,那么大部分時間你是用不到install的,因為你用到的基本上都是別人封裝好的插件、組件、方法、指令等等,但是如果你需要給公司的架構做建設,install就是你避不開的一個…

【SpringCloud】構建分布式系統的利器

一、引言 在當今數字化時代,隨著業務規模的不斷擴大和用戶量的急劇增長,單體應用逐漸暴露出諸多局限性,如可擴展性差、維護困難等。分布式系統應運而生,而 Spring Cloud 則成為了構建分布式系統的熱門框架之一。它提供了一系列豐…

mkdir通配符詳解

在 mkdir 命令中使用通配符可以簡化批量創建目錄的操作。通配符如 {} 和 * 可以用來生成多個目錄名稱,從而減少重復輸入。以下是一些常見的使用方法和示例。 使用 {} 通配符 {} 通配符可以用來生成一系列的目錄名稱,語法如下: mkdir dir_{…

Transformer的Word Embedding

一、Transformer 中的詞嵌入是什么? 1. 定義與作用 ? 詞嵌入(Word Embedding):將離散的詞語映射為低維連續向量,捕捉語義和語法信息。 ? 在 Transformer 中的位置: ? 輸入層:每個詞通過嵌入…

Linux 進程間通信:信號機制

Linux 進程間通信:信號機制 在多進程操作系統中,進程之間的通信至關重要,尤其是在Linux系統中,信號(Signal)作為一種特殊的進程間通信方式,廣泛用于進程之間的協調和控制。信號可以看作是操作系…