1、在centos服務器上使用docker下載nginx鏡像
這個簡單得很就不廢話了
2、打包vue項目,npm run build 命令,會打包出一個dist文件夾,文件夾是不能直接上傳到服務器上的,所以我是把dist文件夾壓縮成zip格式的壓縮包然后再上傳到服務器
我把dist.zip壓縮包放在了服務器的/home/vue-project/nginx/ 目錄下:這個是解壓之后的
(centos解壓zip命令: unzip dist.zip 如果系統提示沒有unizp這個命令,那么就安裝一下:yum install unzip )
3、然后在/home/vue-project/nginx 這個目錄下要創建兩個文件分別是:nginx的配置文件default.conf 和 docker用來生成鏡像的文件dockerfile
3.1 default.conf配置文件內容如下:(有#號注釋的地方都是要改成自己的,其他的不動。吐槽下,百度出來別人博客上的nginx配置他媽的一大堆配置,簡單點不好嗎真的是)
server { listen 80; server_name xx.xx.xx.xx; #服務器的ip location / { root /home/vue-project/nginx; #打包的dist文件夾存放路徑 index index.html index.htm; try_files $uri $uri/ /index.html =404; } error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } }
3.2然后是docker的構建文件:dockerfile (這個文件就是沒有后綴的,直接vi dockerfile創建出來)
根據自己的目錄來配置,就簡單的幾行代碼
FROM nginx MAINTAINER myname_z RUN rm /etc/nginx/conf.d/default.conf ADD default.conf /etc/nginx/conf.d/ COPY dist/ /home/vue-project/nginx/
4、現在所有的配置都弄好了,使用命令來構建docker鏡像:
//nginx-test名稱后面有個.要注意
docker build -t nginx-test .
創建成功后,查看docker鏡像:docker images,會發現有個名叫nginx-test的鏡像,沒有就是沒成功,成功如下:
5、最后創建此鏡像的容器啟動運行:
docker run --name nginx-docker -p 80:80 -d nginx-test
查看運行的容器:docker ps
打開瀏覽器訪問服務器地址成功如下:
2020年12月4日==================================================
前端vue項目是發布成功了,但是訪問不到發布的后端地址
1、登錄請求,報了第一個錯:405 not allowed
百度一下:這個是nginx的問題說什么所有靜態資源請求只能用get請求
解決如下:(新測有效) 把他的405錯誤返回全轉成200狀態
2、405問題是解決了,但出出了一個問題,點擊登錄,怎么也請求不到后端。我用postman發送post登錄接口地址請求,服務器是有響應的
登錄請求是返回了200,但沒有返回任何response結果,在服務器使用:docker logs --tail 300 -f jz-project 命令查看我的后端項目日志,沒有任何請求進來,沒有任何日志打印
那么問題來了,很明顯請求根本沒有進入后端項目
接口地址請求沒有進入后端項目,后端項目又是正常的沒毛病,那肯定就是地址問題,記得我在vue項目里配置了axios的代理不知道有什么關系。百度了幾個小時之后終於找到解決辦法,感覺像是這么解決的就試了試,沒想到成功了。
解決辦法如下:
2.1 在nginx配置文件里配置代理就行了:因為我在vue項目里配置了axios代理,所有請求都是http://localhost:8080/api/xxx/xxx,在這個nginx配置文件里配置一個location{},目的是把所有請求地址:/api前面這段地址給換成:http://服務器ip:8080/jz-project 后端項目所在的服務器地址
最后就成功登錄進去了:=================上圖
。。。