Nginx和Tomcat叢集部署
目錄
1.安裝規劃
2.系統概述
2.1 硬體
2.2軟體
2.3安裝順序
3.軟體獲取
3.1Tomcat下載
3.2Nginx下載
4.Tomcat安裝
4.1JAVA環境配置
4.2 Tomcat安裝
4.2.1 Tomcat埠修改
4.2.2 啟動tomcat
5.Nginx安裝
5.1 nginx安裝
5.2 nginx配置檔案修改
5.3 nginx啟動
5.4 nginx關閉
6.Nginx靜態檔案部署
7.Nginx反向代理
8 Nginx叢集部署和負載均衡
1安裝規劃
為軟體專案部署到多臺伺服器搭建叢集環境
需要準備一臺代理伺服器和數臺普通伺服器
靜態資源部署在代理伺服器上,動態資源部署在普通伺服器上。
作業系統為window2003 或以上(以window10展示)
2系統概述
2.1 硬體
硬體要求不低於以下配置:
CPU Intel至強E5400系列CPU
RAM 1G 1333MHz
DISK 20G以上
2.2軟體
Nginx1.12.2
Tomcat7.x
2.3安裝順序
1.在普通伺服器安裝Tomcat
2.在代理伺服器安裝nginx
3.軟體獲取
3.1Tomcat下載
然後再左側Download欄下選擇Tomcat 7
然後在下方選擇zip格式,點選瀏覽器則提示下載
3.2Nginx下載
4.Tomcat安裝
4.1JAVA環境配置(已經安裝jdk並配置好的可以跳過)
然後安裝好JDK後在“我的電腦”右鍵 “屬性” 點選左側高階系統設定然後點選底部環境變數,然後選擇系統變數下的新建,在變數名輸入JAVA_HOME,然後變數值輸入jdk的安裝路徑或者用瀏覽目錄選擇,最後點確定。JDK環境配置完成(用CMD輸入java然後回車檢查是否安裝成功),如果還有問題請檢視百度https://jingyan.baidu.com/article/6dad5075d1dc40a123e36ea3.html
4.2 Tomcat安裝
Java環境配置好之後,解壓下載好的tomcat壓縮包,tomcat可以在一臺伺服器(或者PC)上部署多個,只需要解壓即可。但是多個tomcat要一起執行,必須改變配置資訊。
4.2.1 Tomcat埠修改
開啟tomcat資料夾,找到conf資料夾下的server.xml,以記事本方式開啟。
按圖片步驟修改埠號(不要與其他程式軟體衝突)
4.2.2 啟動tomcat
修改好配置檔案後就可以啟動tomcat了。開啟tomcat資料夾下的bin目錄找到startup.bat(Linux是startup.sh),雙擊啟動。(同一臺伺服器執行多個tomcat需要配置CATALINA_HOME,配置方法和JAVA_HOME類似)
注意:不要關閉這個視窗,否則tomcat會一起關閉。
Tomcat的日誌檔案放在tomcat下的log資料夾下的catalina.時間.log每天生成一個日誌檔案,如果無法啟動或者執行出錯請檢視日誌。
4.2.3 專案部署
方法一,先將專案檔案打包成war包,然後把.war檔案放置到tomcat資料夾下的webapps資料夾中,再次啟動tomcat時會自動解壓執行(tomcat執行起來後可以刪除.war檔案了)。
方法二,將專案檔案自己放置到tomcat資料夾下的webapps資料夾中,再次啟動tomcat專案就會運行了。
此外,靜態檔案也可以放置在webapps下提供給外部訪問,但一般靜態檔案都有專門的伺服器去存放。
5 nginx安裝
5.1 nginx安裝
Nginx的安裝和tomcat相似,只需要解壓即可,同樣可以一臺伺服器上安裝多個nginx(同樣要修改埠防止衝突,方法在部署中會提到)
注意:nginx的安裝目錄不能有中文,否則會啟動失敗
5.2 nginx配置檔案修改
Nginx的配置檔案在nginx/conf/nginx.conf以記事本方式開啟即可修改
如圖修改埠
5.3 nginx啟動
雙擊nginx.exe即可啟動,啟動後無視窗(啟動時有視窗閃一下)。開啟工作管理員檢視
上圖兩個nginx.exe說明nginx已經啟動成功,訪問http://服務訪問名:埠號/ 即可看到nginx歡迎介面
如果工作管理員沒有找到nginx的服務則在nginx/logs/error.log檢視錯誤
5.4 nginx關閉
要關閉nginx需要在工作管理員關閉nginx.exe的程序樹就可以了。
6 nginx靜態檔案部署
網頁專案的圖片和靜態網頁等靜態資源可以放在nginx上訪問
只需要在nginx.conf中修改location屬性
7 nginx反向代理
使用nginx進行反向代理其實很簡單,只需要在nginx.conf裡面配置好數臺普通伺服器ip就可以了。
首先開啟nginx.conf,配置多個server,給予不同listen。
給每個server新增porxy_pass屬性。
例如
server {
listen 80;
location / {
proxy_pass http://localhost:8080/;
}
}
server {
listen 81;
location / {
proxy_pass http://www.baidu.com/;
}
}
注意:以上因為是一臺電腦演示的,所以都用localhost,
實際上應用http://代理伺服器域名或IP:埠號/ 去訪問
8 nginx叢集部署和負載均衡
一般一個大的系統都會採用分散式來部署在機房中的數個伺服器中,這時就需要一個代理來分發請求給各個伺服器,用nginx代理只需要修改一下配置檔案nginx.conf 就行了。
首先專案需要拷貝到各個普通伺服器的tomcat中執行,並得到它們的訪問地址
然後將訪問地址配置到代理伺服器的nginx中
例如將a.txt放置到三個tomcat中,然後用nginx代理轉發
server{
listen 80;
server_namelocalhost;
upstreambakend{ }{
server127.0.0.1:8080 weight=2;
server 127.0.0.1:8081 weight=4;
server127.0.0.1:8082 weight=1;
}
location / {
proxy_passhttp://bakend;
}
}
但是並不是每個伺服器訪問到的概率都是一樣的,在地址後面加上weight屬性即可賦予權值,權值越高越容易被訪問到,使效能高的伺服器多幹活,效能低的伺服器少幹活。