前言
對於 SpringBoot + Vue 前后端分離項目,一般是先啟動后端,再啟動前端,通過訪問前端地址進行預覽。
比如,后端的端口號是 8081,前端的端口號是 8080。既然前后端是不同的端口號,怎么通過訪問前端進而與后端通信呢?
這里就涉及到 Vue 配置請求轉發,具體可以參考文章:Vue 配置請求轉發。
通過在前端配置請求轉發,所有訪問 8080 端口的請求,統統都會轉發到 8081 上去,進而實現與后端通信。
部署前后端分離項目實操
1. 本地數據庫遷移到服務器上
首先要確保服務器上有可供使用的 mysql 數據庫,因為我們編寫代碼一般使用的本地 mysql,但部署到服務器上后,可不能再使用本地 mysql 了。
在服務器上(如騰訊雲服務器)安裝 mysql ,建議使用 docker 進行安裝。
將項目用到的數據庫導入到服務器上的數據庫中,並修改后端項目 application.properties 文件,使其連接服務器上的數據庫。
2. 打包前端項目
使用 webstorm 打開前端項目,打開終端,運行命令:
npm run build
該命令執行成功之后,前端項目目錄下會生成一個 dist 文件夾,將該文件夾中的兩個文件 static 和 index.html 拷貝到 SpringBoot 項目中resources/static/ 目錄下。
3. 打包后端項目
具體操作見下圖:
1、2、3 是單擊,為了關閉 test,4 是雙擊,為了打包成 jar 包。
運行成功后,后端項目的 target 目錄下,會有一個 jar 包,這就是整個項目的 jar 包,之后就發布這個 jar 包就可以了。
4. 將 jar 包拷貝到服務器上,並編寫 dockerfile
推薦使用 xshell 連接自己的騰訊雲服務器,進入到某個目錄中,將 jar 包用鼠標拖拽進來,可以達到上傳 jar 包到服務器的效果。也可以使用 xftp 進行上傳。
使用命令 vim Dockerfile
編寫 dockerfile ,dockerfile 內容如下:
FROM centos:7.6.1810
LABEL "author"="愛吃西瓜的番茄醬"
LABEL "version"="1.0"
LABEL "email"="you170917@gmail.com"
ADD blogserver-0.0.1-SNAPSHOT.jar blogserver.jar
ADD jdk1.8.0_261 jdk8
ENV PATH jdk8/bin:$PATH
# 配置環境變量支持中文
ENV LANG="en_US.UTF-8"
EXPOSE 8081
ENTRYPOINT ["java","-jar","blogserver.jar"]
注意,Dockerfile 中暴露的端口號,就是后端的端口號 8081。
關於 dockerfile 的編寫,可以參考文章:Dockerfile 編寫規范整理
5. 通過 Dockerfile 部署運行 jar 包
主要分為三步:
1、編寫 Dockerfile
2、構建鏡像
3、運行容器
這里,就使用上面那個 Dockerfile 。
先構建鏡像:
docker build -t blogserver:2.0 .
-
docker build 是構建鏡像的初始命令
-
-t blogserver:2.0 :指定鏡像的名字和版本號,可任意取
-
最后的
.
表示 Dockerfile 在當前目錄下
運行容器
docker run --name=blog -p 8080:8081 --restart=always -d blogserver:2.0
-
docker run:是運行容器的初始命令
-
--name=blog:表示容器的名字叫做 blog
-
-p 8080:8081:表示將服務器 8080 端口,映射到容器內的 8081 端口(這個就是 dockerfile 中暴露的端口號)
-
--restart=always:表示讓容器一直運行
-
-d:表示容器后台運行
-
blogserver:2.0 這是運行容器的基礎鏡像和版本號
6. 效果
瀏覽器訪問:http://xxx.xxx.xxx.xxx:8080/index.html,效果如下:
成功部署好了。
每天學習一點點,每天進步一點點。