雲計算:Ubuntu下Vue+Springboot前后端分離項目部署(多節點)


一、機器准備

首先准備三台機器:
我是一台WINDOWS系統主機,在WINDOWS里的 VMware 中安裝兩台Ubuntu系統虛擬機

如果你的虛擬機只有 CentOS,可以參考這篇文章:https://www.cnblogs.com/qwg-/p/13237210.html

VMware 中如何克隆虛擬機

右鍵點擊你的原虛擬機,選擇管理 ----> 克隆

我創建的是完整克隆,根據自身情況選擇存放路徑

以下是分布式部署項目的機器結構

(三台主機需要連接同一個WLAN)

主機名 負責部署 IP地址
ytt132 前后端 192.168.193.129
ytt132_02 訪問 192.168.193.130
WINDOWS 數據庫 192.168.0.107

如何查詢機器IP地址

  1. 查詢當前 Ubuntu 虛擬機(ytt132)的IP地址

    (1) 打開終端

    (2) 輸入 ifconfig

  2. 查詢WINDOWS主機的IP地址

    (1) WIN鍵 + R打開“運行”

    (2) 輸入 cmd 打開 “命令提示符”

    (3) 輸入 ipconfig 查詢,WLAN下的IPv4地址即本機的IP地址,我的是192.168.0.107

二、項目准備

WINDOWS :

准備一個 VUE+SPINGBOOT 項目,在IDEA中打開,並且能夠成功運行

本人使用的項目是一個基於Vue框架的前端(項目名CRUDDemo)和一個基於SpringBoot框架的后端(項目名CRUDServer02)

運行要求

前端:安裝好npm、Vue

后端:安裝好Maven

三、前端部署

前端准備

先安裝 nginx 代理服務器

nginx 簡介:https://www.runoob.com/w3cnote/nginx-setup-intro.html

安裝方法一(建議使用)

1. 在終端中輸入命令:
sudo apt-get install nginx

2. 輸入 nginx -v 查看是否安裝成功,出現版本號即安裝成功

3. 啟動 nginx 服務:
sudo service nginx start

補充兩個 nginx 操作:

sudo service nginx stop        # 停止nginx服務
sudo service nginx restart     # 重啟nginx服務
4. 在瀏覽器地址欄輸入本機IP地址,若出現以下歡迎界面即安裝成功

其他安裝方法

其他安裝方法參考:https://blog.csdn.net/qq_23832313/article/details/83578836

前端打包

1. 修改URL(根據個人項目情況操作)

先檢查項目文件中有沒有使用 http://localhost:xxxx/ 這種URL進行 POST 和 GET 方法的語句(可以使用 CTRL + F 搜索 'localhost' 來查找),我是寫在了vue文件中的

因為 localhost 指的是本地IP地址,與 127.0.0.1 一樣,所以使用外部主機訪問該URL時是無法進行遠程訪問的

因此,我們要把所有 localhost 修改為你用來部署前后端的主機IP,例如我使用的是 ytt132端 部署的前后端,剛剛已經查詢過為192.168.193.129

復制該IP后,將其粘貼並替換vue中所有帶 localhost 的URL地址

2. 開始打包

修改完成后,打開終端 Terminal ,輸入 npm run build (注意項目路徑)

項目資源管理窗口中出現 dist 文件夾即打包完成

在文件資源管理器中打開 dist 文件夾所在位置,對其進行壓縮

注:若你傳輸文件的常用方式為共享文件夾,則不用壓縮和解壓,可以直接上傳文件夾

3. 上傳文件

將 dist.zip 壓縮文件發送到將要部署前后端的虛擬機(ytt132)中

(可以用 SSH 連接主機和虛擬機或者 空投 等方式傳文件)

本人喜歡用空投嘻嘻:AirPortal 空投快傳

上傳成功!

找一個地方存放打包好的前端文件夾,我是在 /usr/local 下新建文件夾 project 專門存放前后端打包文件

新建文件夾命令

sudo mkdir /usr/local/project
4. 解壓文件

將dist.zip壓縮文件解壓到/usr/local/project目錄下

解壓zip文件命令:

sudo unzip -d /usr/local/project ~/下載/dist.zip

前端配置

配置文件具體位置如圖:

使用apt工具安裝 nginx 的配置文件在 /etc/nginx/nginx.conf

但在 nginx.conf 文件里有一條這樣的語句,它引用了 /etc/nginx/sites-enabled 下所有文件中的內容

進入 /etc/nginx/sites-enabled 目錄,可以看到目錄下只有一個 default 文件

所以我們需要對該 default 文件進行前端配置

1. 修改配置文件
sudo gedit default

在server中添加如下語句:

root /usr/local/project/dist;    # 前端打包文件夾所在位置    # 注意要分號

保存 default 文件即前端配置完成!

2. 重啟nginx服務
sudo service nginx restart

前端部署成功

四、數據庫部署

WINDOWS:

運行 navicat premium

1. 打開 localhost_3306 連接

右鍵選擇新建數據庫,數據庫命名要與后端項目src/main/resources/application.properties中url里的數據庫名對應

例如我的是 cruddemo_db

2. 雙擊打開數據庫
3. 運行數據庫文件

接下來是運行你的數據庫文件,如果是 sql文件 的話直接右鍵運行 sql文件

以下是還原 nb3備份文件 的步驟:

右鍵備份,選擇還原備份從...

點擊 “還原” ,完成后直接關閉

數據表導入完成

4. 修改用戶權限

在數據庫開啟的狀態下,點擊上方菜單欄中的用戶

雙擊 ‘ root@localhost ’ 進入root用戶設置界面,將主機名從localhost修改為%(表示所有用戶可連接)

至此,數據庫配置完成

五、后端部署

后端打包

(確保maven插件已安裝,並且項目能夠成功運行)

在 src/main/resources 目錄下找到 application.properties ,這是編寫連接數據庫代碼的文件,找到項目對應的數據庫名字,我這里是 cruddemo_db

該文件中有幾個要注意的參數

  • server.port:后端運行的端口號

  • spring.datasource.url:連接MYSQL數據庫

  • username:MYSQL用戶名

  • password:MYSQL密碼

(可以使用自行設置的端口號,但要保證虛擬機在運行后端時沒有相同端口號的進程在運行)

在后面的配置文件中也會使用到這個端口號

這里url地址要將 localhost 修改為你要進行部署數據庫的主機IP地址,即 WINDOWS端 的IP地址

1. 修改后端url的IP地址

並檢查 username 和 password 是否和你的 MYSQL 連接的用戶名和密碼相同

檢查無誤后開始打包

2. 開始打包

點開右側邊欄中的 Maven,按照以下目錄選擇 clean、compile、package,然后點擊上方的綠色三角運行打包

打包成功界面

打包出來的文件在項目的 target 目錄下,是一個jar包

3. 上傳文件

將這個jar包上傳到部署前后端的虛擬機上(ytt132)

后端配置

再次進入 /etc/nginx/sites-enabled 目錄,對default文件進行后端配置

sudo gedit default

在 location 中添加如下語句:

proxy_pass http://192.168.193.129:8081;    # 192.168.193.129為當前主機IP,8081為后端部署的端口

注:若后面后端運行失敗,連虛擬機本地都不能訪問WEB的話,嘗試在default文件中注釋原來的location,並在后面添加以下代碼:

location  ^~ /prod-api/ {
    proxy_pass http://192.168.193.129:8081/;     # 192.168.193.129為當前主機IP,8081為后端部署的端口
}

(只是修改了location方法頭)

保存 default 文件即后端配置完成

后端運行

1. 運行jar包

在jar包所在目錄下運行以下命令

java -jar crud-demo-0.0.1-SNAPSHOT.jar

2. 重啟 nginx 服務
sudo service nginx restart
3. 訪問服務

在瀏覽器中輸入本機IP訪問

后端數據成功顯示,前后端部署完成

注:

在后端運行過程中可以輸入 CTRL+Z 終止運行

但這樣並未真正終止進程,再次運行可能會出現以下報錯:

終端里輸入 sudo netstat -anutp | grep 8081 查看占用了8081端口的進程PID:3963

殺死該進程PID號

kill -9 3963

重新運行jar包成功

六、外部訪問

最后,要在外部主機訪問WEB服務,本人是在 ytt132_02端 進行訪問的

打開另一個虛擬機的瀏覽器,輸入 ytt132 (部署前后端)的IP地址:http://192.168.193.129/

成功訪問!

防火牆問題

可以使用 ping 對方主機IP地址 來測試兩台主機能否連接

若兩台機器之間無法ping通,檢查一下ping的那台機器是否開啟了防火牆,很有可能是防火牆阻擋了外部訪問你的IP

WINDOWS打開或關閉 Microsoft Defender 防火牆:https://support.microsoft.com/zh-cn/windows/打開或關閉-microsoft-defender-防火牆-ec0844f7-aebd-0583-67fe-601ecf5d774f

Ubuntu防火牆常用命令:

sudo ufw status     # 查看防火牆活動狀態
sudo ufw allow 3306     # 開放防火牆3306端口,也可以把8081端口也開放
sudo ufw enable    # 開啟防火牆
sudo ufw reload     # 重啟防火牆
sudo ufw disable      # 關閉防火牆


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM