前端Vue項(xiàng)目部署到服務(wù)器的全過程以及踩坑記錄
需求
前后端完成項(xiàng)目后,需要部署到本地的服務(wù)器上。
第一次部署,以下是從0開始慢慢學(xué)著弄的詳細(xì)過程
過程
1、首先,肯定需要將vue的項(xiàng)目進(jìn)行打包
npm run build ,打包成功后,會出現(xiàn)dist文件夾
這時候你可以先試試打開dist文件夾下的index.html能不能顯示頁面。如果可以,直接跳到第二步。如果和我一樣打開后沒頁面,是空白頁的。可以試試下面的操作。
在vue.config.js中,添加下面三行代碼
如果這時候還是不行的話,看看你路由是不是用的hash模式
這樣,應(yīng)該就可以打開了。
2、將dist文件上傳到服務(wù)器
因?yàn)榉?wù)器就在身邊,所以沒那么麻煩,直接用移動硬盤拷進(jìn)去了。 如果需要遠(yuǎn)程上傳的話,可以參考用Xftp相關(guān)的帖子。
3、使用Nginx配置
首先要保證服務(wù)器里面安裝了nginx。我是Ubuntu下安裝,所以直接用apt-get
# 切換至root用戶 sudo su root apt-get install nginx
查看nginx是否安裝成功
nginx -v
啟動nginx
service nginx start
瀏覽器輸入服務(wù)器ip地址就能看到了
然后修改nginx
終端下 cd /etc/nginx sudo vim nginx.conf
vim是進(jìn)行文件修改,cat是進(jìn)行查看 sudo是以管理員身份運(yùn)行,防止權(quán)限問題
ps:修改配置文件時,按一下 i 進(jìn)入編輯模式,編輯完了 按Esc,然后切換到英文輸入法,輸入 :wq 保存并退出
然后在http代碼塊內(nèi)輸入下面的代碼
server { listen 9000 default_server; listen [::]:80 default_server; root /home/www/dist; index index.html index.htm index.nginx-debian.html; server_name _; location / { try_files $uri $uri/ /index.html; } }
其實(shí)主要就是添加server,我這里設(shè)置的端口號是9000,可以根據(jù)自己的需求設(shè)置,不用一樣,root放的就是我拷到服務(wù)器的dist文件存放的目錄 (就是這里,遇到了3個坑,后面會講的,這里還不是最終代碼,一步一步來)
可以輸入 sudo nginx -t 查看是否修改的正確,輸出如下 (其實(shí)感覺只能檢查出最基本的錯誤,有一些小問題也沒法檢查出來)
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful
然后就重新加載nginx ,輸入:
sudo nginx -s reload
做完上面的步驟以后,我以為就已經(jīng)解決了,然后打開瀏覽器,訪問 主機(jī)號:端口號 然后報錯 404
下面就記錄一下,跟著上面步驟踩坑的過程。如果有類似的,可以參考。
踩坑
nginx服務(wù)器404錯誤的原因 404 Not Found
首先,我們還是要回到nginx.conf配置文件去檢查有沒有寫錯ip地址和端口號
然后 location / {} 里面 如果是try_files $uri $uri/ =404;的話,把=404改掉,改成你的html名,大部分應(yīng)該都是index.html
nginx服務(wù)器500錯誤的原因 500 Internal Server Error
解決完404以后,又訪問一下,結(jié)果是500的錯。這個坑折騰了我很久。
首先,我們遇到500,先去看報的什么錯,再具體問題具體分析。
error.log 和 access.log 都在/var/log/nginx 下 (如果沒有的話,可以看看你的nginx.conf,里面應(yīng)該會有寫),所以輸入
cd /var/log/nginx cat error.log
然后發(fā)現(xiàn),報錯內(nèi)容是 rewrite or internal redirection cycle while internally redirecting to "/index.html"
如果你也是這個問題,一定去檢查你的路徑,也就是上文中我們在nginx.conf里面配置的 server中的 root和location / {}
root /home/www/dist; location / { try_files $uri $uri/ /index.html; }
我上文中寫的是這樣子,其實(shí)我在home和www文件夾中還有一個文件夾被我漏掉了,一定要仔細(xì)檢查,要么就是路徑,要么就是斜杠,要么就是文件名或者后綴寫錯了。
所以,完整路徑應(yīng)該是 /home/abc/www/dist/index.html
所以,應(yīng)該要改成
root /home/abc/www/dist; location / { try_files $uri $uri/ /index.html; }
還看到一個報錯,是Permission denied,這個是權(quán)限問題,在nginx。conf的第一行應(yīng)該是又 user root這個權(quán)限的,如果被注釋了,打開就行。
nginx反向代理
又解決完500后,終于能訪問到了。但是還有一個坑,就是后臺接口用不了,數(shù)據(jù)一個都沒返回。第一次用,所以不知道還要配置反向代理
server { listen 9000 default_server; listen [::]:80 default_server; root /home/hhu4204/www/dist; index index.html index.htm index.nginx-debian.html; server_name 121.xxx.xxx.xx; location ^~/api/ { proxy_pass http://121.xxx.xxx.xx:8083; } location / { try_files $uri $uri/ /index.html; } }
后臺接口的主機(jī)號和服務(wù)器的主機(jī)號是一直的,都是121.xxx.xxx.xx, server_name添加了主機(jī)號,因?yàn)樗薪涌诙加泄餐熬Y api,所以反向代理,接口是8083
至此,部署全部完畢
總結(jié)
到此這篇關(guān)于前端Vue項(xiàng)目部署到服務(wù)器的全過程以及踩坑記錄的文章就介紹到這了,更多相關(guān)前端Vue項(xiàng)目部署服務(wù)器內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
深入探討Vue計(jì)算屬性與監(jiān)聽器的區(qū)別和用途
在Vue的開發(fā)中,計(jì)算屬性(Computed Properties)和監(jiān)聽器(Watchers)是兩種非常重要的概念,它們都用于響應(yīng)式地處理數(shù)據(jù)變化,本文將帶你深入了解計(jì)算屬性和監(jiān)聽器的區(qū)別,以及在何時使用它們,感興趣的朋友可以參考下2023-09-09基于vue監(jiān)聽滾動事件實(shí)現(xiàn)錨點(diǎn)鏈接平滑滾動的方法
本篇文章主要介紹了基于vue監(jiān)聽滾動事件實(shí)現(xiàn)錨點(diǎn)鏈接平滑滾動的方法,非常具有實(shí)用價值,有興趣的可以了解一下2018-01-01vue實(shí)現(xiàn)學(xué)生錄入系統(tǒng)之添加刪除功能
本文給大家?guī)硪粋€小案例基于vue實(shí)現(xiàn)學(xué)生錄入系統(tǒng)功能,代碼簡單易懂非常不錯,具有一定的參考借鑒價值,需要的朋友參考下吧2018-07-07詳解為element-ui的Select和Cascader添加彈層底部操作按鈕
這篇文章主要介紹了詳解為element-ui的Select和Cascader添加彈層底部操作按鈕,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-02-02警告[vue-router]?Duplicate?named?routes?definition簡單解決方法
這篇文章主要關(guān)于介紹了警告[vue-router]?Duplicate?named?routes?definition的解決方法,這個錯誤提示是因?yàn)樵赩ue Router中定義了重復(fù)的路由名稱,需要的朋友可以參考下2023-12-12