Tomcat服務器是一個免費的開放源代碼的web應用服務器,屬於輕量級應用服務器,是開發和調試JSP程序的首選。因爲Tomcat處理靜態HTML的能力運不及Apache或者Nginx,因此Tomcat一般是做爲一個Servlet和JSP容器,單獨運行在後端。html
一般狀況下,一個Tomcat站點因爲可能出現單點故障及沒法應付過多客戶複雜請求等問題,不能單獨應用於生產環境下,目前不少大型網站都應用Nginx服務器做爲後端網站程序的反向代理及負載均衡器,簡單來講就是Nginx做爲負載均衡器,響應客戶端的請求,Tomcat做爲應用服務器的負載集羣,處理客戶端的請求,也就是說Nginx將訪問請求轉發給後端服務器池的服務器來處理。網站拓撲圖如圖所示:java
案例環境:linux
主機操做系統IP地址主要軟件Nginx服務器RedHat7.3 x86_64192.168.113.151nginx-1.12.0.tar.gzTomcat服務器1CentOS7.4 x86_64192.168.113.129jdk-8u91-linux-x64.tar.gz / apache-tomcat-8.5.16.tar.gzTomcat服務器2CentOS7.4 x86_64192.168.113.150jdk-8u91-linux-x64.tar.gz / apache-tomcat-8.5.16.tar.gznginx
1.啓動主機後關閉防火牆c++
複製代碼
systemctl disable firewalld.service //禁用防火牆服務 systemctl stop firewalld.service //關閉防火牆服務 複製代碼
2.安裝JDK,配置Java環境web
(1).解壓jdk軟件至/opt目錄下,並將解壓後生成的jdk文件夾移到/usr/local/下,更名爲java。shell
複製代碼
tar zxvf jdk-7u65-linux-x64.gz -C /opt mv jdk1.7.0_65/ /usr/local/java 複製代碼
(2).在/etc/profile.d/下創建java.sh腳本。apache
複製代碼
[root@centos7-1 ~]# vim /etc/profile.d/java.sh export JAVA_HOME=/usr/local/java //設置Java根目錄 export PATH=$PATH:$JAVA_HOME/bin //在PATH環境變量中添加Java根目錄下的bin/子目錄 複製代碼
(3).將java.sh腳本導入到環境變量,使其生效bootstrap
複製代碼
source /etc/profile.d/java.sh 複製代碼
(4).運行java-version命令查看java版本是否和以前安裝的一致。vim
複製代碼
[root@centos7-1 ~]# java -version openjdk version "1.8.0_131" OpenJDK Runtime Environment (build 1.8.0_131-b12) OpenJDK 64-Bit Server VM (build 25.131-b12, mixed mode) 複製代碼
3.安裝配置Tomcat
(1).解壓apache-tomcat-8.5.16.tar.gz包至/opt目錄,並將解壓後生成的文件夾移動到/usr/local/下,更名爲tomcat8。
複製代碼
tar zxvf apache-tomcat-8.5.16.tar.gz -C /opt/ mv apache-tomcat-8.5.16/ /usr/local/tomcat8 複製代碼
(2).啓動Tomcat
複製代碼
[root@centos7-1 ~]# /usr/local/tomcat8/bin/startup.sh Using CATALINA_BASE: /usr/local/tomcat8 Using CATALINA_HOME: /usr/local/tomcat8 Using CATALINA_TMPDIR: /usr/local/tomcat8/temp Using JRE_HOME: /usr/local/java Using CLASSPATH: /usr/local/tomcat8/bin/bootstrap.jar:/usr/local/tomcat8/bin/tomcat-juli.jar Tomcat started. 複製代碼
Tomcat默認運行在8080端口,運行netstat命令查看8080端口監聽的信息。
複製代碼
[root@centos7-1 ~]# netstat -ntap | grep 8080 tcp6 0 0 :::8080 :::* LISTEN 1583/java 複製代碼
(3).打開瀏覽器訪問測試http://192.168.113.129:8080/, 若是出現x下面的界面,則表示Tomcat已經配置啓動成功。
4.創建Java的web站點
(1).在根目錄下創建一個web目錄,並在裏面創建一個webapp1目錄,用於存放網站文件。
複製代碼
[root@centos7-1 ~]# mkdir -pv /web/webapp1 mkdir: 已建立目錄 "/web" mkdir: 已建立目錄 "/web/webapp1" 複製代碼
(2).在webapp1目錄下創建一個index.jsp的測試頁面。
複製代碼
[root@centos7-1 ~]# 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("Welcome to test site,http://www.test1.com");%> //測試頁主體內容 </body> </html> 複製代碼
(3).修改Tomcat的server.xml文件。
定義一個虛擬主機,並將網站文件路徑指向已經創建的/web/webapp1,在host段增長context段。
複製代碼
[root@centos7-1 ~]# vim /usr/local/tomcat8/conf/server.xml <Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true"> <Context docBase="/web/webapp1" path="" reloadable="false"> </Context> 複製代碼
(4).關閉Tomcat,再從新啓動。
複製代碼
/usr/local/tomcat8/bin/shutdown.sh //關閉Tomcat /usr/local/tomcat7/bin/startup.sh //重啓Tomcat 複製代碼
(5).經過瀏覽器訪問http://192.168.113.129:8080/, 出現下面的界面,說明Tomcat站點配置成功而且可以運行JSP了。
1.啓動主機後關閉防火牆。
2.安裝JDK,配置Java環境,版本與Tomcat1 server一致。
3.安裝配置Tomcat,版本與Tomcat1 server一致。
4.建立/web/webapp1目錄,修改Tomcat配置文件server.xml文件,將網站文件目錄更改到/web/webapp1/路徑下。
5.在/web/webapp1/路徑下創建index.jsp,爲了區別將測試頁index.jsp的內容更改以下:
複製代碼
[root@localhost ~]# vim /web/webapp1/index.jsp <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> //註釋 <html> <head> <title>JSP test2 page</title> //測試頁標題 </head> <body> <% out.println("Welcome to test site,http://www.test2.com");%> //測試頁主體內容 </body> </html> 複製代碼
6.啓動tomcat,瀏覽器訪問http://192.168.113.150:8080/, 出現下面的界面,說明Tomcat站點配置成功而且可以運行JSP了。
複製代碼
systemctl disable firewalld.service systemctl stop firewalld.service 複製代碼
複製代碼
yum install gcc gcc-c++ make pcre pcre-devel zlib-devel openssl-devel -y 複製代碼
複製代碼
useradd -s /bin/false www //建立運行用戶www,強制禁止登錄系統shell環境 tar zxvf nginx-1.12.0.tar.gz -C /opt //解壓nginx軟件至/opt目錄下 cd /opt/nginx-1.12.0/ //切換到解壓後的nginx文件夾目錄下 ./configure \ //配置nginx的具體選項 --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 \ --with-http_ssl_module 複製代碼
加q羣:834962734,可獲取一份Java架構進階技術學習資源。(高併發+Spring源碼+JVM原理解析+分佈式架構+微服務架構+多線程併發原理等...這些成爲架構師必備的內容)以及Java進階學習路線圖。
4.配置nginx.conf
複製代碼
vim /usr/local/nginx/conf/nginx.conf 複製代碼
(1).在http{...}中加入如下代碼,設定負載均衡的服務器列表,weight參數表示權值,權值越高被分配到的機率越大。爲了使測試效果明顯,把權重設置爲同樣。
複製代碼
upstream tomcat_server { server 192.168.113.129:8080 weight=1; server 192.168.113.150:8080 weight=1; } //配置後端服務池tomcat_server,以提供響應數據 複製代碼
(2).在http{...} - server{...} - location /{...}中加入一行「proxy_pass http://tomcat_server;」 。
複製代碼
location / { root html; index index.html index.htm; proxy_pass http://tomcat_server; //配置將訪問請求轉發給後端服務器池的服務器處理 } 複製代碼
利用以上方式,把Nginx的默認站點經過proxy_pass方法代理到了設定好的tomcat_server負載均衡服務器組上。
5.測試nginx配置文件是否正確。
複製代碼
[root@RedHat7-1 ~]# /usr/local/nginx/sbin/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 複製代碼
6.啓動Nginx服務並查看其端口
複製代碼
[root@RedHat7-1 ~]# ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/ //建立nginx主程序的軟連接,方便調用nginx命令 [root@RedHat7-1 ~]# nginx //啓動nginx服務 [root@RedHat7-1 ~]# netstat -ntap | grep nginx tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 17819/nginx: master [root@RedHat7-1 ~]# killall -1 nginx //重啓nginx服務 複製代碼
1.打開瀏覽器訪問http://192.168.113.151/.
2.不斷刷新瀏覽器測試,能夠看到因爲權重相同,頁面會反覆在如下兩個頁面切換。
第一次訪問,出現test1的測試頁面,刷新後,第二次訪問出現test2的測試頁面,這說明負載均衡集搭建成功,已經能夠在兩個tomcat server站點間進行切換了。
真實環境中,服務器集羣站點的內容相同,這裏是爲了測試負載均衡集的效果而創建2個不一樣的測試頁面。