Windows系統(tǒng)下使用nginx部署vue2項(xiàng)目的全過程
前言:
今天產(chǎn)品經(jīng)理過來找我,問我有沒有什么辦法能夠讓前端做的項(xiàng)目給他看,他要測試一下看看我們開發(fā)的需求有沒有對(duì)齊。然后我就說:可以,有幾種辦法:
直接訪問我本地idea啟動(dòng)的服務(wù),但是這樣我每次改代碼保存頁面就會(huì)刷新,這樣顯然不行,不穩(wěn)定。產(chǎn)品經(jīng)理直接把倉庫代碼拉下來自己在本地運(yùn)行代碼,額,這雖然解決了上面這個(gè)問題,但是問題又來了,產(chǎn)品經(jīng)理他不懂前端,你又要幫他在他的電腦上準(zhǔn)備好前端的開發(fā)環(huán)境,顯然很麻煩。前端把項(xiàng)目打包部署到測試環(huán)境,這是很好的辦法,但是我們沒有測試環(huán)境的機(jī)器,那這咋整??????
想了許久,感覺產(chǎn)品經(jīng)理都要懷疑我的能力了,最后靈機(jī)一動(dòng),咦!好像nginx也有windows版本的,我可以在我電腦上安裝一個(gè)nginx,然后把項(xiàng)目打包部署到nginx服務(wù)器上,那這樣產(chǎn)品經(jīng)理不是就可以訪問一個(gè)穩(wěn)定的測試環(huán)境了嗎。
最后就下載了windows版本的nginx,然后把項(xiàng)目打包部署到nginx服務(wù)器上,因?yàn)橹皀ginx接觸得少,所以這個(gè)過程中也遇到了很多問題,所以就寫一篇博客記錄一下,希望你看完這篇文章對(duì)你有所幫助,少走點(diǎn)彎路,廢話就不多說了,下面直接手摸手帶你部署vue2項(xiàng)目?。?!
第一步:下載安裝nginx
1、首先我們要去nginx的官網(wǎng)下載windows版本的nginx
下載地址:
瀏覽器打開下載地址會(huì)看到如下圖所示界面,第一個(gè)是最新版本,第二個(gè)是穩(wěn)定版本,建議下載穩(wěn)定版本就好了,少遇到一些坑??
2、點(diǎn)擊下載鏈接后會(huì)下載得到如下一個(gè)nginx的壓縮包:
3、解壓nginx壓縮包,這里需要注意了哈,nginx的解壓路徑不能存在中文,否則nginx服務(wù)會(huì)無法正常啟動(dòng)的哈,不信你試試??
4、我們雙擊nginx.exe文件啟動(dòng)服務(wù),細(xì)心觀察的小伙伴會(huì)發(fā)現(xiàn)有一個(gè)黑色的彈窗一閃而過就消失了,那這就啟動(dòng)就完成了。
5、然后我們打開瀏覽器訪問:http://localhost 如果出現(xiàn)如下界面則表示nginx服務(wù)成功啟動(dòng)!
6、如果無法正常訪問的話可以先查看nginx目錄下logs里面的日志文件,
造成無法正常啟動(dòng)的原因可能有如下兩點(diǎn):
a、檢查解壓nginx的路徑是否存在中文
b、打開cmd命令行窗口輸入如下命令,查看80端口是否被占用了,nginx默認(rèn)啟動(dòng)的端口是80端口
netstat -ano | findstr 0.0.0.0:80
如果輸入上面命令出現(xiàn)如下內(nèi)容則表示端口被占用
7、如果端口被占用,我們需要修改nginx的默認(rèn)啟動(dòng)端口,使用記事本打開conf目錄下的nginx.conf配置文件
然后把server下面的80改成8081,然后保存,重新點(diǎn)擊nginx目錄下的nginx.exe文件
如果還是無法正常啟動(dòng),可以查看nginx目錄下的logs目錄里面的錯(cuò)誤日志,然后自行百度一下,我只能幫到這里了??
8、下面來簡單介紹一下nginx的幾個(gè)常用命令:
注意:需要在nginx目錄下才能執(zhí)行這些命令:
a、啟動(dòng)nginx:
E:\nginx-1.22.0>start nginx 或 E:\nginx-1.22.0>nginx.exe
b、停止nginx:
E:\nginx-1.22.0>nginx.exe -s stop 或 E:\nginx-1.22.0>nginx.exe -s quit
c、重新啟動(dòng)nginx:
E:\nginx-1.22.0>nginx.exe -s reload
當(dāng)修改了配置文件nginx.conf的內(nèi)容后,需要執(zhí)行上面這條命令,修改的配置才會(huì)生效。
第二步:打包部署vue2項(xiàng)目
1、打包vue項(xiàng)目:
npm run build
2、執(zhí)行上面命令后會(huì)把項(xiàng)目打包并輸出到dist目錄下(打包后的文件因個(gè)人而異,這里是我公司項(xiàng)目打包后dist目錄下的內(nèi)容)
3、在nginx目錄下的html目錄下新建一個(gè)static目錄,并把剛剛打包后dist目錄下所有文件都復(fù)制到static目錄下
4、修改nginx.conf配置文件
擔(dān)心圖片你們復(fù)制不了,就把server里面添加的配置也粘貼到下面了:
server { # nginx啟動(dòng)監(jiān)聽的端口 listen 8081; # 可以是localhost和可以是本機(jī)ip地址,如果要給公司其他同事的電腦可以訪問,需要 配置為本機(jī)的ip地址 server_name 192.168.1.104; # 配置頁面中發(fā)送的請(qǐng)求代理到后端接口 location /api { #需要代理訪問的后端服務(wù)器地址 proxy_pass http://10.8.5.42:8084; #重寫以/api為baseURL的接口地址 rewrite "^/api/(.*)$" /$1 break; } location / { #程序根目錄配置,也就是剛剛打包文件放置的目錄 root E:\\nginx-1.22.0\\html\\static; index index.html index.htm; # 配置把所有匹配不到的路徑重定向到index.html,vue-router的mode是history模式的情況下需要配置,否則會(huì)出現(xiàn)刷新頁面404的情況 try_files $uri $uri/ /index.html; } }
在這里再詳細(xì)說明一下上面添加的這些配置信息:
假設(shè)我現(xiàn)在把我windows系統(tǒng)上的nginx服務(wù)器的配置文件修改成上面這樣子,然后啟動(dòng)nginx服務(wù)器,當(dāng)我在瀏覽器中輸入http://192.168.1.104:8081的時(shí)候,因?yàn)槲业膎ginx服務(wù)器配置文件中的listen配置的端口是8081,所以瀏覽器的發(fā)送的http://192.168.1.104:8081這個(gè)請(qǐng)求會(huì)被端口為8081的nginx服務(wù)進(jìn)行處理,然后會(huì)被location / {} 匹配,然后nginx就會(huì)找配置的root 路徑下的index.html文件,并響應(yīng)給瀏覽器,這時(shí)瀏覽器就可以訪問到我們項(xiàng)目的頁面了。
這樣頁面就可以訪問了,但是頁面中發(fā)送的請(qǐng)求怎么進(jìn)行處理呢?
在vue項(xiàng)目中當(dāng)我們?cè)陧撁嬷邪l(fā)送請(qǐng)求的時(shí)候,我們打開瀏覽器調(diào)試工具會(huì)看到,我們發(fā)送的請(qǐng)求的協(xié)議、域名和端口號(hào)其實(shí)是和訪問頁面的協(xié)議、域名和端口號(hào)是一樣的,但是真正后端服務(wù)器的接口請(qǐng)求地址不是這樣的。
這時(shí)候我們就需要使用nginx一個(gè)強(qiáng)大的功能了,沒錯(cuò)就是反向代理,我們可以配置nginx.conf文件,實(shí)現(xiàn)把頁面中發(fā)送的請(qǐng)求都通過nginx進(jìn)行反向代理訪問真實(shí)服務(wù)器(其實(shí)這也是一種跨域的解決方案)。
假設(shè)后端服務(wù)器的地址是http://10.8.5.42:8084,請(qǐng)求后端服務(wù)的登錄接口是http://10.8.5.42:8084/accounts/login,然后前端頁面中發(fā)送的登錄請(qǐng)求地址是:http://192.168.1.104:8081/api/accounts/login?userName=%E6%B2%88%E5%BF%A0%E6%98%8E&password=123456,這時(shí)我們就可以在nginx.conf配置文件中加入如下內(nèi)容:
看到這里有些伙伴可能就有疑問了,配置文件中的 :
rewrite "^/api/(.*)$" /$1 break;
具體是什么意思,這里我剛剛開始也不理解??,后來查閱了很多資料,最終就理解通了,
這段配置的作用就是重寫我們的請(qǐng)求地址,因?yàn)槲疫@里前端頁面發(fā)送的登錄請(qǐng)求接口http://192.168.1.104:8081/api/accounts/login有加了個(gè)/api的baseUrl,但是真實(shí)的后端服務(wù)的登錄接口http://10.8.5.42:8084/accounts/login是沒有這個(gè)/api前綴的,所以我在這里需要重寫前端發(fā)送的請(qǐng)求地址,把/api給去掉,想要具體了解的伙伴可以參考這篇文章:
https://cloud.tencent.com/developer/article/1531268
當(dāng)我們?cè)趎ginx.conf配置文件中添加了上面這些配置后,需要執(zhí)行nginx.exe -s reload命令來載入我們修改的配置,修改了配置文件一定要記得執(zhí)行這條命令哦!,如果執(zhí)行這個(gè)命令時(shí)出現(xiàn)下面的報(bào)錯(cuò)的話,不要慌!
出現(xiàn)這個(gè)問題的原因是:你的nginx并未啟動(dòng),所以無法加載配置文件,你先執(zhí)行start nginx命令啟動(dòng)nginx再執(zhí)行這條命令即可!
說道這里vue項(xiàng)目的部署基本上就搞定了,該說的也說了,不該說的也啰嗦了很多?。?!下面我們來總結(jié)一下吧!
總結(jié):
- 首先下載nginx壓縮包,然后解壓到一個(gè)沒有帶中文的路徑下,為啥要這樣我就不多說了
- 雙擊nginx目錄下的nginx.exe文件啟動(dòng)nginx服務(wù)
- 在瀏覽器中輸入http://localhost/,如果出現(xiàn)nginx的歡迎 頁面則表示成功啟動(dòng),如果無法訪問先看一下是不是解壓的路徑有中文,或者是端口是不是被占用了,如果不是以上原因,我們可以到logs目錄下查看nginx的錯(cuò)誤日志,然后自行百度。
- 到我們的vue項(xiàng)目的根目錄下執(zhí)行npm run build打包項(xiàng)目
- 然后把打包后的dist目錄下的所有內(nèi)容復(fù)制到nginx目錄下的html目錄下的static目錄里,這個(gè)路徑不是規(guī)定的,可以根據(jù)自己喜好,但是最好避免路徑中有中文。
- 然后就是修改nginx.conf配置文件了
- 最后一步也就是容易忘記的一步,就是執(zhí)行 nginx.exe -s reload 命令來重新載入配置文件。
到此這篇關(guān)于Windows系統(tǒng)下使用nginx部署vue2項(xiàng)目的文章就介紹到這了,更多相關(guān)Windows nginx部署vue2項(xiàng)目內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
vue項(xiàng)目動(dòng)態(tài)設(shè)置頁面title及是否緩存頁面的問題
這篇文章主要介紹了vue項(xiàng)目動(dòng)態(tài)設(shè)置頁面title及是否緩存頁面的問題,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-11-11vue watch監(jiān)聽對(duì)象及對(duì)應(yīng)值的變化詳解
下面小編就為大家分享一篇vue watch監(jiān)聽對(duì)象及對(duì)應(yīng)值的變化詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-02-02vue-music 使用better-scroll遇到輪播圖不能自動(dòng)輪播問題
根據(jù)vue-music視頻中slider組建的使用,當(dāng)安裝新版本的better-scroll,輪播組件,不能正常輪播。如何解決這個(gè)問題呢,下面小編給大家?guī)砹藇ue-music 使用better-scroll遇到輪播圖不能自動(dòng)輪播問題,感興趣的朋友一起看看吧2018-12-12vue3表單參數(shù)校驗(yàn)及正則表達(dá)式舉例詳解
最近項(xiàng)目中有一個(gè)校驗(yàn)身份證號(hào)手機(jī)號(hào)的業(yè)務(wù),索性給大家總結(jié)下,這篇文章主要給大家介紹了關(guān)于vue3表單參數(shù)校驗(yàn)及正則表達(dá)式的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下2024-04-04vue 實(shí)現(xiàn)一個(gè)簡單的全局調(diào)用彈窗案例
這篇文章主要介紹了vue 實(shí)現(xiàn)一個(gè)簡單的全局調(diào)用彈窗案例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-09-09Vue2中compiler和runtime模式報(bào)錯(cuò)template compiler is 
本文主要介紹了Vue2中compiler和runtime模式報(bào)錯(cuò)template compiler is not available,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-07-07關(guān)于vue?src路徑動(dòng)態(tài)拼接的小知識(shí)
這篇文章主要介紹了vue?src路徑動(dòng)態(tài)拼接的小知識(shí),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。2022-04-04Vue3 elementUI 中 date-picker 使用過程遇到坑
這篇文章主要介紹了Vue3 elementUI 中 date-picker 使用過程遇到坑,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧2023-10-10