您好,登錄后才能下訂單哦!
Tomcat服務(wù)器是一個(gè)免費(fèi)的開(kāi)源web應(yīng)用服務(wù)器,屬于輕量級(jí)應(yīng)用服務(wù)器,在中小型系統(tǒng)和并發(fā)用戶(hù)不是很多的場(chǎng)合中被普遍使用,是開(kāi)發(fā)和測(cè)試JSP程序的首選。一般來(lái)說(shuō),Tomcat雖然和apache或者Nginx這些web服務(wù)器一樣,具有處理HTML頁(yè)面的功能,然而由于其處理靜態(tài)頁(yè)面的能力遠(yuǎn)不如apache或者Nginx,所以Tomcat一般是作為一個(gè)servlet和JSP容器,單獨(dú)運(yùn)行在后端,Tomcat應(yīng)用場(chǎng)景如下:
用戶(hù)訪問(wèn)的永遠(yuǎn)是apache/Nginx服務(wù)器,然后由apache/Nginx服務(wù)器轉(zhuǎn)交給Tomcat服務(wù)器處理,所有服務(wù)器都連接著共享存儲(chǔ)服務(wù)器,以便使用戶(hù)每次訪問(wèn)到數(shù)據(jù)是一樣的,apache/Nginx是用來(lái)做調(diào)度的,也就是熟知的負(fù)載均衡,關(guān)于負(fù)載均衡不多解釋了。。。
通常情況下,一臺(tái)Tomcat站點(diǎn)由于可能出現(xiàn)單點(diǎn)故障及無(wú)法應(yīng)付過(guò)多的客戶(hù)復(fù)雜多樣的請(qǐng)求等問(wèn)題,不能單獨(dú)應(yīng)用于生產(chǎn)環(huán)境下,所以需要使用負(fù)載均衡來(lái)解決這些問(wèn)題。
Nginx是一個(gè)非常優(yōu)秀的http服務(wù)器軟件,它能夠支持高達(dá)50000個(gè)并發(fā)連接數(shù)的響應(yīng),擁有強(qiáng)大的靜態(tài)資源處理能力,運(yùn)行穩(wěn)定,并且內(nèi)存、CPU等系統(tǒng)資源消耗非常低。目前很多大型網(wǎng)站都應(yīng)用Nginx服務(wù)器作為后端網(wǎng)站程序的反向代理及負(fù)載均衡器,來(lái)提升整個(gè)站點(diǎn)的負(fù)載并發(fā)能力。
開(kāi)始準(zhǔn)備工作,搭建下面的環(huán)境,為了簡(jiǎn)化,就不部署共享存儲(chǔ)服務(wù)器了,環(huán)境如下:
一、部署前準(zhǔn)備:
三臺(tái)服務(wù)器均使用centos7來(lái)部署,部署過(guò)程中所用到的軟件如下:
二、配置Tomcat服務(wù)器:
這篇博文以實(shí)現(xiàn)最終效果為目的,若想了解關(guān)于Tomcat配置文件的說(shuō)明及作用,可以參考博文:https://blog.51cto.com/14154700/2412234 。
1、開(kāi)始在192.168.1.1服務(wù)器上部署Tomcat(關(guān)于防火墻的配置這里就省略了,請(qǐng)自行配置防火墻以放行相關(guān)流量,我這里直接停掉了防火墻,Tomcat默認(rèn)使用的端口號(hào)是8080;Nginx默認(rèn)使用的端口號(hào)是80):
[root@localhost ~]# java -version #查看JDK是否安裝,若沒(méi)有,自行安裝
openjdk version "1.8.0_161"
OpenJDK Runtime Environment (build 1.8.0_161-b14)
OpenJDK 64-Bit Server VM (build 25.161-b14, mixed mode)
[root@localhost media]# tar zxf apache-tomcat-8.5.16.tar.gz -C /usr/src #解壓Tomcat包
[root@localhost media]# cd /usr/src/
[root@localhost src]# mv apache-tomcat-8.5.16/ /usr/local/tomcat8
#Tomcat不用編譯安裝,解壓后即可用
[root@localhost src]# mkdir -p /web/webapp1 #建立Java的web站點(diǎn),用于存放網(wǎng)站文件
[root@localhost src]# vim /web/webapp1/index.jsp #建立一個(gè)index.jsp的測(cè)試頁(yè)面
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<html>
<head>
<title>JSP test1 page</title>
</head>
<body>
<% out.println("www.test1111.com");%>
</body>
</html>
[root@localhost src]# vim /usr/local/tomcat8/conf/server.xml #修改Tomcat的主配置文件
......................................
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true"> #定位到該行,然后添加下面兩行內(nèi)容
<Context docBase="/web/webapp1" path="" reloadable="false">
</Context>
#docBase:web應(yīng)用的文檔默認(rèn)目錄;
#path=""設(shè)置默認(rèn)“類(lèi);”
#reloadable設(shè)置監(jiān)視“類(lèi)”是否變化;
[root@localhost ~]# /usr/local/tomcat8/bin/startup.sh
#啟動(dòng)服務(wù),停止服務(wù)的話,只需將startup.sh換為shutdown.sh即可。
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/usr/local/tomcat8/bin/tomcat-juli.jar
Tomcat started.
[root@localhost src]# netstat -antp | grep 8080 #查看默認(rèn)端口8080是否在監(jiān)聽(tīng)狀態(tài)
tcp6 0 0 :::8080 :::* LISTEN 13220/java
本機(jī)測(cè)試訪問(wèn):192.168.1.1:8080,看到如下測(cè)試頁(yè)面:
至此,192.168.1.1的Tomcat就已經(jīng)配置完成了,另一臺(tái)Tomcat服務(wù)器192.168.1.2的配置和192.168.1.1的配置完全一樣,將上面的配置在192.168.1.2服務(wù)器上配置一遍即可,不過(guò)為了測(cè)試的時(shí)候可以看出負(fù)載均衡的效果,讓我們可以看出每次訪問(wèn)的服務(wù)器都不是同一臺(tái),需要將192.168.1.2的Tomcat服務(wù)器的測(cè)試頁(yè)面和192.168.1.1的頁(yè)面不一樣。
不過(guò)在實(shí)際生產(chǎn)環(huán)境中,兩臺(tái)Tomcat訪問(wèn)的一定是使用同一個(gè)共享存儲(chǔ)服務(wù)器,不管是哪臺(tái)服務(wù)器向用戶(hù)提供服務(wù),用戶(hù)接受到的頁(yè)面一定是一樣的。
自己在192.168.1.2的服務(wù)器上將上面的配置來(lái)一遍吧,將192.168.1.2服務(wù)器的測(cè)試頁(yè)面內(nèi)容更改一下,如下:
[root@localhost src]# vim /web/webapp1/index.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<html>
<head>
<title>JSP test1 page</title>
</head>
<body>
<% out.println("www.test22222222222222.com");%>
</body>
</html>
三、配置Nginx服務(wù)器(IP:192.168.1.1):
1、安裝Nginx:
[root@localhost ~]# yum -y install pcre-devel zlib-devel openssl-devel
#安裝依賴(lài)包
[root@localhost ~]# useradd www -s /bin/false #創(chuàng)建運(yùn)行用戶(hù)
[root@localhost media]# tar zxf nginx-1.12.0.tar.gz -C /usr/src #解包
[root@localhost media]# cd /usr/src/nginx-1.12.0/ #切換至該目錄
[root@localhost nginx-1.12.0]# ./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_module && make && make install #編譯安裝
[root@localhost nginx-1.12.0]# vim /usr/local/nginx/conf/nginx.conf #編輯主配置文件
.............................
#gzip on; #定位到該行,寫(xiě)入下面四行
upstream tomcat_server {
server 192.168.1.1:8080 weight=1;
server 192.168.1.2:8080 weight=1;
}
#寫(xiě)到這里結(jié)束
#weight參數(shù)表示權(quán)重,權(quán)重越高,表示被分配到的概率越大。
#為了測(cè)試效果明顯,這里將權(quán)重設(shè)置為一樣
server {
listen 80;
server_name localhost;
......................
location / {
root html;
index index.html index.htm;
proxy_pass http://tomcat_server; #定位到該{ }中,寫(xiě)入該行,“http://”后面的名字要和上面添加的upstream項(xiàng)后面的名字一致,才可實(shí)現(xiàn)調(diào)度。
}
2、優(yōu)化Nginx的控制:
[root@localhost nginx-1.12.0]# ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/
#創(chuàng)建主程序的鏈接文件
[root@localhost ~]# vim /etc/init.d/nginx #編輯服務(wù)腳本
#!/bin/bash
# chkconfig: - 99 20
PROG="/usr/local/nginx/sbin/nginx"
PIDF="/usr/local/nginx/logs/nginx.pid"
case "$1" in
start)
$PROG
;;
stop)
kill -s QUIT $(cat $PIDF)
;;
restart)
$0 stop
$0 start
;;
reload)
kill -s HUP $(cat $PIDF)
;;
*)
echo "USAGE:$0 {start | stop | restart | reload}"
exit 1
esac
exit 0
[root@localhost ~]# chmod +x /etc/init.d/nginx #添加執(zhí)行權(quán)限
[root@localhost ~]# chkconfig --add nginx #添加為系統(tǒng)服務(wù)
[root@localhost nginx-1.12.0]# 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 ~]# systemctl start nginx #啟動(dòng)Nginx服務(wù),以確認(rèn)腳本的正常運(yùn)行
[root@localhost ~]# netstat -anpt | grep nginx #查看80端口是否處于監(jiān)聽(tīng)狀態(tài)
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 90475/nginx: master
四、訪問(wèn)測(cè)試:
至此,部署工作已經(jīng)完成,現(xiàn)在使用客戶(hù)機(jī)訪問(wèn)Nginx服務(wù)器192.168.1.1測(cè)試,效果如下:
第一次訪問(wèn)將會(huì)看到如下界面:
刷新一下網(wǎng)頁(yè)將會(huì)看到如下界面
可以看到,我們?cè)L問(wèn)的是Nginx服務(wù)器,真正處理訪問(wèn)請(qǐng)求的是Tomcat服務(wù)器,而且每次訪問(wèn)請(qǐng)求都是不同的Tomcat服務(wù)器來(lái)處理,效果也就顯而易見(jiàn)了。
五、寫(xiě)在最后:部署過(guò)程中遇到的小小問(wèn)題:
在更改完Tomcat服務(wù)器的配置文件后,訪問(wèn)測(cè)試時(shí),看到訪問(wèn)的依然是Tomcat自帶的默認(rèn)頁(yè)面,有點(diǎn)摸不著頭腦,試著使用如下命令來(lái)對(duì)Tomcat服務(wù)進(jìn)行幾次啟停后,就好了:
[root@localhost webapp1]# /usr/local/tomcat8/bin/shutdown.sh #停止服務(wù)
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
[root@localhost webapp1]# /usr/local/tomcat8/bin/startup.sh #啟動(dòng)服務(wù)
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.
可能是這個(gè)服務(wù)啟停的問(wèn)題,沒(méi)有深究,這個(gè)服務(wù)與別的服務(wù)都不太一樣:
Nginx服務(wù)停止后,查端口號(hào)是查不到的,如下:
[root@localhost ~]# systemctl stop nginx
[root@localhost ~]# netstat -anpt | grep nginx #Nginx服務(wù)停止后,什么都查不到
[root@localhost ~]#
而Tomcat服務(wù)停止后,查端口號(hào)會(huì)發(fā)現(xiàn),狀態(tài)如下(啟動(dòng)時(shí)的Listen狀態(tài)變成了TIME_WAIT狀態(tài)),等待片刻后,才查不到相關(guān)信息:
[root@localhost webapp1]# netstat -antp | grep 8080
tcp6 0 0 ::1:56448 ::1:8080 TIME_WAIT
不深究了,最后效果出來(lái)就好了,而且也是第一次遇見(jiàn)這種情況。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。