這裡我們只講解兩個人之間的關係
(1)主要目錄說明
—bin/ : | 存放 Windows 或 Linux 平臺上啟動和關閉 Tomcat 的指令碼檔案。 |
---|---|
—conf/: | 存放 Tomcat 伺服器的各種全域性組態檔,其中最重要的是 server.xml 和 web.xml。 |
—lib/: | 存放 Tomcat 執行需要的庫檔案(JARS)。 |
—logs: | 存放 Tomcat 執行時的 LOG 檔案。 |
—webapps: | Tomcat 的主要 Web 釋出目錄(包括應用程式範例)。 |
—work: | 存放 JSP 編譯後產生的 class 檔案 |
(2)組態檔說明 執行「ll conf/」命令,便可看到組態檔清單。
●catalina.policy: | 許可權控制組態檔。 |
---|---|
●catalina.properties: | Tomcat 屬性組態檔。 |
● context.xml: | 上下文組態檔。 |
● logging.properties: | 紀錄檔 log 相關組態檔。 |
● server.xml: | 主組態檔。 |
●tomcat-users.xml : | manager-gui 管 理 用 戶 配 置 文 件 ( Tomcat 安 裝 後 提 供 一 個manager-gui 的管理介面,通過設定該檔案可以開啟存取)。 |
●web.xml: | Tomcat 的 servlet、servlet-mapping、filter、MIME 等相關設定。 |
Nginx是一款非常優秀的HTTP伺服器軟體
支援高達50 000個並行連線數的響應
擁有強大的靜態資源處理能力
執行穩定
記憶體、CPU等系統資源消耗非常低
目前很多大型網站都應用Nginx伺服器作為後端網站程式的反向代理及負載均衡器,提升整個站點的負載並行能力
Nginx設定反向代理的主要引數 | : |
---|---|
upstream服務池名{} | 設定後端伺服器池,以提供響應資料 |
proxy_pass http://服務池名 | 設定將存取請求轉發給後端伺服器池的伺服器處理 |
如上圖:
使用者端傳送請求過來:有動態也有靜態
靜態交給Nginx處理,動態交給Tomcat處理
Nginx靜態處理優勢 |
---|
Nginx處理靜態頁面的效率遠高於Tomcat的處理能力 |
若Tomcat的請求量為1000次,則Nginx的請求量為6000次 |
Tomcat每秒的吞吐量為0.6M,Nginx的每秒吞吐量為3.6M |
Nginx處理靜態資源的能力是Tomcat處理的6倍 |
Nginx這個時候相當於排程器的角色,靜態自己處理,動態Tomcat處理
【排程器1】 | 【WEB1】 | 【WEB2】 |
---|---|---|
20.0.0.23 | 20.0.0.24 | 20.0.0.25 |
Nginx | Tomcat1 | Tomcat2 |
其他: | 防火牆,核心防護關閉 |
---|---|
閘道器: | 全部指向20.0.0.1 |
最小安裝在開局前需要安裝: | |
---|---|
yum -y install net-tools | 最小安裝必裝,可以使用ifconfig,netstat等 |
yum -y install bash-completion | 這個是最小安裝自動補全命令 |
2、檢視JDK是否安裝
執行 java -version 命令檢視 Java 是否安裝。如果沒有安裝需要自行下載安裝
[root@localhost ~]# java -version
可以yum 安裝 java-1.8.0-openjdk或者上傳包到opt下
[root@localhost ~]# cd /opt
[root@localhost ~]# tar xf apache-tomcat-8.5.16.tar.gz
#解壓後生成 apache-tomcat-8.5.16 資料夾,將該資料夾移動到/usr/local/下,並 改名為 tomcat8。
[root@localhost ~]# mv apache-tomcat-8.5.16/ /usr/local/tomcat8
#啟動 tomcat。
#建立軟連線tomcatup
ln -s /usr/local/tomcat8/bin/startup.sh /usr/bin/tomcatup
#建立軟連線tomcatdown
ln -s /usr/local/tomcat8/bin/shutdown.sh /usr/bin/tomcatdown
[root@localhost opt]# tomcatup ######啟動tomcat
Using CATALINA_BASE: /usr/local/tomcat8
Using CATALINA_HOME: /usr/local/tomcat8
Using CATALINA_TMPDIR: /usr/local/tomcat8/temp
Using JRE_HOME: /usr
Using CLASSPATH: /usr/local/tomcat8/bin/bootstrap.jar:/usr/local/tomcat8/bin/tomcat-juli.jar
Tomcat started.
#檢測是否啟動,8080埠是否工作正常
[root@localhost opt]# netstat -anpt | grep 8080
tcp6 0 0 :::8080 :::* LISTEN 68238/java
#建立 Java 的 Web 站點
在根目錄下建立一個 web 目錄,並在裡面建立一個 webapp1 目錄,用於存放網站檔案。
[root@localhost ~]# mkdir -pv /web/webapp1
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<html>
<head>
<title>JSP test1 page</title>
</head>
<body>
<% out.println("動態頁面 1,http://www.5111111.com");%>
</body>
<body>
<div>靜態頁面的圖片 1</div><br><img src="2.jpg">
</body>
</html>
###注意#####
<div>靜態頁面的圖片 1</div><br><img src="2.jpg">
這裡的2.jpg是等一下 Nginx(20.0.0.23):/usr/local/nginx/html/img/下的圖片名稱
因為我們將靜態網頁交給Nginx處理了,Tomcat只處理動態的
tomcat指路徑,Nginx放圖片
########
#修改 Tomcat 的 server.xml 檔案。
定義一個虛擬主機,並將網站檔案路徑指向已經建立的/web/webapp1,
在 host 段增加 context 段
[root@localhost ~]# vim /usr/local/tomcat8/conf/server.xml
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true"> ##在這條命令下新增下面兩行
<Context docBase="/web/webapp1" path="" reloadable="false" >
</Context>
###docBase:web 應用的檔案基準目錄
###reloadable 設定監視"類"是否變化
###path="" 設定預設"類"
#關閉 Tomcat,再重新啟動。
[root@localhost ~]# tomcatdown
[root@localhost ~]# tomcatup
通過瀏覽器存取 http://192.168.100.22:8080/
顯示「靜態頁面的圖片 1」文字,並沒有出現logo.jpg 圖片,原因是由於靜態圖片暫時沒配,所以載入不出來
###測試#####在筆電上測試
http://20.0.0.24:8080/ 檢視預設測試頁是否正常顯示
2、檢視JDK是否安裝
執行 java -version 命令檢視 Java 是否安裝。如果沒有安裝需要自行下載安裝
[root@localhost ~]# java -version
可以yum 安裝 java-1.8.0-openjdk或者上傳包到opt下
[root@localhost ~]# cd /opt
[root@localhost ~]# tar xf apache-tomcat-8.5.16.tar.gz
#解壓後生成 apache-tomcat-8.5.16 資料夾,將該資料夾移動到/usr/local/下,並 改名為 tomcat8。
[root@localhost ~]# mv apache-tomcat-8.5.16/ /usr/local/tomcat8
#啟動 tomcat。
#建立軟連線tomcatup
ln -s /usr/local/tomcat8/bin/startup.sh /usr/bin/tomcatup
#建立軟連線tomcatdown
ln -s /usr/local/tomcat8/bin/shutdown.sh /usr/bin/tomcatdown
[root@localhost opt]# tomcatup ######啟動tomcat
Using CATALINA_BASE: /usr/local/tomcat8
Using CATALINA_HOME: /usr/local/tomcat8
Using CATALINA_TMPDIR: /usr/local/tomcat8/temp
Using JRE_HOME: /usr
Using CLASSPATH: /usr/local/tomcat8/bin/bootstrap.jar:/usr/local/tomcat8/bin/tomcat-juli.jar
Tomcat started.
#檢測是否啟動,8080埠是否工作正常
[root@localhost opt]# netstat -anpt | grep 8080
tcp6 0 0 :::8080 :::* LISTEN 68238/java
#建立 Java 的 Web 站點
在根目錄下建立一個 web 目錄,並在裡面建立一個 webapp1 目錄,用於存放網站檔案。
[root@localhost ~]# mkdir -pv /web/webapp1
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<html>
<head>
<title>JSP test1 page</title>
</head>
<body>
<% out.println("動態頁面 2,http://www.52222222.com");%>
</body>
<body>
<div>靜態頁面的圖片 2</div><br><img src="3.jpg">
</body>
</html>
●修改 Tomcat 的 server.xml 檔案。
定義一個虛擬主機,並將網站檔案路徑指向已經建立的/web/webapp1,
在 host 段增加 context 段
[root@localhost ~]# vim /usr/local/tomcat8/conf/server.xml
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true"> ##在這條命令下新增下面兩行
<Context docBase="/web/webapp1" path="" reloadable="false" >
</Context>
###docBase:web 應用的檔案基準目錄
###reloadable 設定監視"類"是否變化
###path="" 設定預設"類"
●關閉 Tomcat,再重新啟動。
[root@localhost ~]# tomcatdown
[root@localhost ~]# tomcatup
通過瀏覽器存取 http://20.0.0.25:8080/
顯示「靜態頁面的圖片 1」文字,並沒有出現 logo.jpg 圖片,原因是由於靜態圖片暫時沒配,所以載入不出來
在 Nginx 伺服器 20.0.0.23 上安裝 Nginx,反向代理到兩個 Tomcat 站點,並實現 負載均衡
(1)關閉防火牆。
(2)安裝相關軟體包。
[root@localhost ~]# yum -y install pcre-devel zlib-devel openssl-devel gcc-c++
(3)解壓並安裝 Nginx。
[root@localhost ~]# groupadd www
[root@localhost ~]# useradd -g www www -s /bin/false
cd /opt
[root@localhost opt]# tar xzvf nginx-1.15.9.tar.gz
[root@localhost opt]# cd nginx-1.15.9/
[root@localhost nginx-1.15.9]#
./configure --prefix=/usr/local/nginx --user=www --group=www --with-file-aio --with-http_stub_status_module --with-http_gzip_static_module --with-http_flv_modu
[root@localhost nginx-1.12.0]# make && make install
[root@localhost nginx-1.12.0]# ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/
[root@localhost nginx-1.12.0]# ls -l /usr/local/sbin/nginx
lrwxrwxrwx 1 root root 27 5 月 16 16:50 /usr/local/sbin/nginx -> /usr/local/nginx/sbin/nginx
[root@localhost ~]# nginx -t
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
[root@localhost ~]# killall -3 nginx ###停止服務
如果出現: -bash: killall: command not found
[root@localhost ~]# yum -y install psmisc
[root@localhost ~]# nginx ####啟動
yum -y install net-tools
[root@localhost ~]# netstat -anpt | grep nginx
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN
[root@localhost ~]# vim /lib/systemd/system/nginx.service
[Unit]
Description=nginx
After=network.target
[Service]
Type=forking
PIDFile=/usr/local/nginx/logs/nginx.pid
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/usr/bin/kill -s HUP $MAINPID
ExecStop=/usr/bin/kill -s QUIT $MAINPID
PrivateTmp=true
[Install]
WantedBy=multi-user.target
########################################
[root@localhost ~]# chmod 754 /lib/systemd/system/nginx.service
killall -3 nginx
systemctl start nginx
[root@localhost ~]# systemctl enable nginx.service
Created symlink from /etc/systemd/system/multi-user.target.wants/nginx.service to
/usr/lib/systemd/system/nginx.service.
這樣一來, 就可以 systemctl 命令來啟動、 停止、 重新啟動、 過載 Nginx 伺服器了, 方法是
在執行時新增相應的 start、 stop、 restart、 reload 引數
#######重新啟動系統#########
systemctl start nginx.service
systemctl stop nginx.service
systemctl reload nginx.service
systemctl restart nginx.service
systemctl status nginx.service
(4)設定 nginx.conf。
設定命令如下: 下面只是告訴你新增的位置
[root@localhost ~]# vim /usr/local/nginx/conf/nginx.conf
把 Nginx 的預設站點通過 proxy_pass 方法代理到了設定好的 tomcat_server 負載均衡
伺服器組上。設定完成的 nginx.conf 檔案內容如下。
…… //省略部分內容
http {
…… ###省略部分內容 第一個新增內容為:
#gzip on;
upstream tomcat_server {
server 20.0.0.24:8080 weight=1;
server 20.0.0.25:8080 weight=1;
}
server {
listen 80;
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main; 在這條命令下面新增以下內容:
location ~ .*.jsp$ {
proxy_set_header HOST $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Client-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://tomcat_server;
}
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|css)$ {
root /usr/local/nginx/html/img;
expires 30d;
}
location / { 這個是系統自帶不需要動
root html;
index index.html index.htm;
}
###檢查語法問題
[root@localhost nginx-1.15.9]# nginx -t
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
#下面在 Nginx 上準備靜態圖片
#建立靜態檔案目錄
[root@nginx ~]# mkdir /usr/local/nginx/html/img
[root@nginx ~]# cp /opt/2.jpg /usr/local/nginx/html/img
[root@nginx ~]# cp /opt/3.jpg /usr/local/nginx/html/img
或者用Xshell直接傳兩張叫2和3的圖片到img下面,圖片格式字尾名字為jpg
(1)測試靜態頁面效果 開啟瀏覽器存取 http://20.0.0.23/,可以看到存取到 nginx 靜態頁面, |
---|
(2)測試負載均衡效果 開啟瀏覽器存取 http://20.0.0.23/index.jsp。 不斷重新整理瀏覽器測試, |
可以看到由於權重相同,頁面會反覆在以下兩個頁面來回切換。 第一次存取,出現 5111111的測試頁面,
並且能正常載入 nginx 上的靜態頁面圖片,重新整理後,第二次存取,出現 5222222 的測試頁面,
示。,就說明負載均衡群集搭建成功,已經可以 在兩個 Tomcat server 站點進行切換了。
#(1)當你在安裝Nginx後
#killall -3 nginx 想使用systemctl進行管理時,不可以直接使用,需要操作流程如下
killall -3 nginx
systemctl stop nginx.service
systemctl start nginx.service
#不然會一直報錯
#(2)新增Nginx.conf完畢後,檢查一下下面的兩個},一個是http的,一個是server的
#如果缺少,就算提示你哪裡錯誤,你也想不到是括號的問題
#(3)<div>靜態頁面的圖片 1</div><br><img src="3.jpg">
這裡的3.jpg是等一下 Nginx(20.0.0.23):/usr/local/nginx/html/img/下的圖片名稱
因為我們將靜態網頁交給Nginx處理了,Tomcat只處理動態的
tomcat指路徑,Nginx放圖片