一、項目部署架構
二、項目部署環境
192.168.138.100(服務器A):
-Nginx :部署前端項目、配置反向代理
-MySQL:主從復制結構中的主庫
192.168.138.101(服務器B):
-JDK:運行Java項目
-Git:版本控制工具
-Maven:項目構建工具
-Jar:SpringBoot項目打成Jar包基于內置Tomcat運行
-MySQL:主從復制結構中的從庫
192.168.138.102(服務器C):
-Redis:緩存中間件
三、部署前端項目并配置Nginx 反向代理
192.168.138.100(服務器A):
-Nginx :部署前端項目、配置反向代理
-MySQL:主從復制結構中的主庫
步驟一:在服務器A中安裝Nginx,將disk(前端打包目錄)目錄上傳到Nginx的html目錄
步驟二:修改Nginx配置文件Nginx.conf
location \ {root html/dist;index index.html;
}
# 反向代理配置
步驟三:配置Nginx環境變量,啟動Nginx :
nginx
查看進程:
ps -ef | grep nginx
步驟四:配置Nginx 反向代理
前端請求路徑為 API/login,匹配到請求 URL重寫到這個地址192.168.138.101,轉發到服務器B
# 反向代理配置
location ^~ /api/ {rewrite ^/api/(.*)$ /$1 break;proxy_pass httpL//192.168.138.101:8080
}
四、部署后端項目并解決圖片展示問題
我們需要實現項目的自動部署,從而來簡化項目部署的操作。我們先來整體上了解一下項目自動部署的流程及操作步驟。
操作步驟如下:
1). 在Gitee上創建遠程倉庫,并將本地的項目代碼推送到遠程倉庫中
2). 在Linux中安裝Git,克隆代碼
3). 在Linux中安裝maven
4). 編寫Shell腳本(拉取代碼、編譯、打包、啟動)
5). 為用戶授予執行Shell腳本的權限
6). 執行Shell腳本
192.168.138.101(服務器B):
-JDK:運行Java項目
-Git:版本控制工具
-Maven:項目構建工具
-Jar:SpringBoot項目打成Jar包基于內置Tomcat運行
-MySQL:主從復制結構中的從庫
步驟一:在服務器B中安裝JDK、Git、Maven、MySQL,使用git clone命令將git遠程倉庫的代碼克隆下來;
步驟二:上傳reggieStart.sh文件到服務器B,通過chmod命令設置執行權限
Shell腳本:拉取GIt代碼,并通過maven命令打包;再通過java - jar 命令把SpringBoot項目運行;
步驟三:執行reggieStart.sh腳本文件,自動部署項目
在執行maven指令進行打包時,第一次執行可能會耗時比較長,因為在進行maven工程的打包時,需要到中央倉庫下載工程依賴的jar包和插件。
步驟四:解決圖片不顯示的問題,把路徑改成Linux下的路徑,把圖片放到Linux目錄下
#把路徑改成Linux下的路徑
path: /usr/local/img/
4.1 Git操作
1). Git軟件安裝
通過yum命令在線安裝git,執行如下指令:
yum list git 列出git安裝包
yum install git 在線安裝git
通過上述指令,安裝好git之后,我們就可以通過 git --version去驗證git的環境。
git --version
2). Git克隆代碼
cd /usr/local/
git clone https://gitee.com/RichardKong/platform.git
4.2 Maven安裝
由于我們的工程是maven工程,我們要想進行項目的編譯打包,需要用到maven的指令,所以需要安裝maven。具體操作步驟如下:
步驟一、上傳maven的安裝包
通過rz指令上傳maven安裝包
步驟二、解壓maven安裝包到/usr/local目錄
tar -zxvf apache-maven-3.5.4-bin.tar.gz -C /usr/local
步驟三、在/etc/profile配置文件中配置環境變量
vim /etc/profile修改配置文件,進入到命令模式,按G切換到最后一行,按a/i/o進入插入模式,然后在最后加入如下內容 :
export MAVEN_HOME=/usr/local/apache-maven-3.5.4
export PATH=$JAVA_HOME/bin:$MAVEN_HOME/bin:$PATH然后按ESC進入到命令模式,輸入 :wq 保存并退出
要想讓配置的環境變量生效,還需要執行如下指令:
source /etc/profile
步驟四、 修改maven的settings.xml配置文件,配置本地倉庫地址
A. 切換目錄
cd /usr/local/apache-maven-3.5.4/conf
B. 編輯settings.xml配置文件
vim settings.xml
在其中增加如下配置,配置本地倉庫地址:
<localRepository>/usr/local/repo</localRepository>
并在settings.xml中的標簽中,配置阿里云的私服:
<mirror> <id>alimaven</id> <mirrorOf>central</mirrorOf> <name>aliyun maven</name> <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
</mirror>
4.3 Shell腳本準備
Shell腳本(shell script),是一種Linux系統中的腳本程序。使用Shell腳本編程跟 JavaScript、Java編程一樣,只要有一個能編寫代碼的文本編輯器和一個能解釋執行的腳本解釋器就可以了。
在/usr/local/目錄下創建一個目錄 sh(mkdir sh),并將shell腳本上傳到該目錄下。或者直接在sh目錄下創建一個腳本bootStart.sh,然后將bootStart.sh文件打開,內容拷貝過來即可。
4.4 Linux權限
前面我們已經把Shell腳本準備好了,但是Shell腳本要想正常的執行,還需要給Shell腳本分配執行權限。 由于linux系統是一個多用戶的操作系統,并且針對每一個用戶,Linux會嚴格的控制操作權限。接下來,我們介紹一下Linux系統的權限控制。
1). chmod(英文全拼:change mode)命令是控制用戶對文件的權限的命令
2). Linux中的權限分為三種 :讀?、寫(w)、執行(x)
3). Linux文件權限分為三級 : 文件所有者(Owner)、用戶組(Group)、其它用戶(Other Users)
4). 只有文件的所有者和超級用戶可以修改文件或目錄的權限
5). 要執行Shell腳本需要有對此腳本文件的執行權限(x),如果沒有則不能執行
Linux系統中權限描述如下:
解析當前腳本的權限情況:
chmod命令可以使用八進制數來指定權限(0 - 代表無 , 1 - 執行x , 2 - 寫w , 4 - 讀r):
值 | 權限 | rwx |
---|---|---|
7 | 讀 + 寫 + 執行 | rwx |
6 | 讀 + 寫 | rw- |
5 | 讀 + 執行 | r-x |
4 | 只讀 | r– |
3 | 寫 + 執行 | -wx |
2 | 只寫 | -w- |
1 | 只執行 | –x |
0 | 無 | — |
舉例:
chmod 777 bootStart.sh 為所有用戶授予讀、寫、執行權限
chmod 755 bootStart.sh 為文件擁有者授予讀、寫、執行權限,同組用戶和其他用戶授予讀、執行權限
chmod 210 bootStart.sh 為文件擁有者授予寫權限,同組用戶授予執行權限,其他用戶沒有任何權限
注意:
三個數字分別代表不同用戶的權限
- 第1位表示文件擁有者的權限
- 第2位表示同組用戶的權限
- 第3位表示其他用戶的權限
4.5 授權并執行腳本
在測試階段,我們可以給所有的人都賦予執行該shell腳本的權限。所以可以執行如下指令:
chmod 777 bootStart.sh
權限解讀:
A. 第一個7,代表當前文件所有者root用戶,對該文件具有讀寫執行權限;
B. 第二個7,代表當前文件所有者所屬組的用戶,對該文件具有讀寫執行權限;
B. 第三個7,代表其他用戶,對該文件具有讀寫執行權限;
執行該shell腳本:
./bootStart.sh
注意: 在執行maven指令進行打包時,第一次執行可能會耗時比較長,因為在進行maven工程的打包時,需要到中央倉庫下載工程依賴的jar包和插件(可以在settings.xml中配置阿里云私服加速下載)。
啟動完成之后, 我們可以查看java進程:
ps -ef|grep java
訪問項目:
192.168.138.130:8080
4.6 設置靜態IP
我們目前安裝的Linux操作系統,安裝完畢之后并沒有配置IP地址,默認IP地址是動態獲取的,那如果我們使用該Linux服務器部署項目,IP動態獲取的話,也就意味著,IP地址可能會發生變動,那我們訪問項目的話就會非常繁瑣,所以作為服務器,我們一般還需要把IP地址設置為靜態的。
步驟一、設置靜態IP
設置靜態ip,我們就需要修改 /etc/sysconfig/network-scripts/ifcfg-ens33 配置文件,內容如下:
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
IPADDR="192.168.138.100" # 設置的靜態IP地址
NETMASK="255.255.255.0" # 子網掩碼
GATEWAY="192.168.138.2" # 網關地址
DNS1="192.168.138.2" # DNS服務器
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
UUID=afd0baa3-8bf4-4e26-8d20-5bc426b75fd6
DEVICE=ens33
ONBOOT=yes
ZONE=public
上述我們所設置的網段為138,并不是隨意指定的,需要和我們虛擬機中的虛擬網絡編輯器中的NAT模式配置的網關保持一致。
步驟二、重啟網絡服務
ip地址修改完畢之后,需要重啟網絡服務,執行如下指令:
systemctl restart network
注意:重啟完網絡服務后ip地址已經發生了改變,此時FinalShell已經連接不上Linux系統,需要創建一個新連接才能連接到Linux。
再次連接上Linux之后,我們再次查看IP地址,就可以看到我們所設置的靜態IP:
ip addr