目錄
引言
實驗圖解?
1.實驗環境搭建?
2.部署Nginx服務器及配置靜態頁面Web服務
3.部署Tomcat服務及配置動態頁面Web服務
4.實驗驗收
動態頁面
靜態頁面
引言
tomcat服務既可以處理動態頁面,也可以處理靜態頁面;但其處理靜態頁面的速度遠遠不如nginx和apache服務,但ngingx和apache服務無法直接處理動態頁面,下文就講述了nginx和tomcat組合使用,實現動靜分離和負載均衡;目前很多大型網站都應用Nginx服務器作為后端網站程序的反向代理及負載均衡器,提升整個站點的負載并發能力。
-
standalone模式,Tomcat單獨運行,直接接受用戶的請求,不推薦。
反向代理,單機運行,提供了一個Nginx作為反向代理,可以做到靜態由nginx提供響應,動態jsp代理給Tomcat
-
LNMT:Linux + Nginx + MySQL + Tomcat
LAMT:Linux + Apache(Httpd)+ MySQL + Tomcat
前置一臺Nginx,給多臺Tomcat實例做反向代理和負載均衡調度,Tomcat上部署的純動態頁面更適合
LNMT:Linux + Nginx + MySQL + Tomcat
-
多級代理
LNNMT:Linux + Nginx + Nginx + MySQL + Tomcat
動態服務器的問題,往往就是并發能力太弱,往往需要多臺動態服務器一起提供服務。如何把并發的壓力分攤,這就需要調度,采用一定的調度策略,將請求分發給不同的服務器,這就是Load Balance負載均衡。當單機Tomcat,演化出多機多級部署的時候,一個問題便凸顯出來,這就是Session。而這個問題的由來,都是由于HTTP協議在設計之初沒有想到未來的發展。
實驗圖解?
在部署Tomcat之前,要部署好環境(JDK),因為JDK是Tomcat運行的必要環境
1.實驗環境搭建?
根據實驗環境,客戶端可以用真機模擬,此實驗需要五臺虛擬機,Centos7-1Nginx代理服務器,Centos7-2和Centos7-3作為負載均衡第一分支的后端服務器,Centos7-4和Centos7-6作為負載均衡第二分支的后端服務器;Centos7-2和Centos7-4作為處理靜態資源的服務器,需要搭建Nginx服務;Centos7-3和Centos7-6作為處理動態資源的服務器,需要搭建Tomcat服務
五臺虛擬機統一關閉防火墻
2.部署Nginx服務器及配置靜態頁面Web服務
Centos7-1、Centos7-2、Centos7-4都要部署Nginx服務
[root@7-1 opt]#yum -y install pcre-devel zlib-devel openssl-devel gcc gcc-c++ make
#安裝依賴關系包
[root@7-1 opt]#useradd -M -s /sbin/nologin nginx
#新建Nginx用戶 方便管理
[root@7-1 opt]#yum install nginx -y
[root@7-1 opt]#systemctl start nginx
[root@7-1 opt]#systemctl status nginx
● nginx.service - The nginx HTTP and reverse proxy serverLoaded: loaded (/usr/lib/systemd/system/nginx.service; disabled; vendor preset: disabled)Active: active (running) since 六 2024-03-02 13:40:43 CST; 3s agoProcess: 2436 ExecStart=/usr/sbin/nginx (code=exited, status=0/SUCCESS)Process: 2433 ExecStartPre=/usr/sbin/nginx -t (code=exited, status=0/SUCCESS)Process: 2429 ExecStartPre=/usr/bin/rm -f /run/nginx.pid (code=exited, status=0/SUCCESS)Main PID: 2438 (nginx)CGroup: /system.slice/nginx.service├─2438 nginx: master process /usr/sbin/nginx├─2439 nginx: worker process└─2440 nginx: worker process3月 02 13:40:42 7-1 systemd[1]: Starting The nginx HTTP and reverse prox.....
3月 02 13:40:43 7-1 nginx[2433]: nginx: the configuration file /etc/ngin...ok
3月 02 13:40:43 7-1 nginx[2433]: nginx: configuration file /etc/nginx/ng...ul
3月 02 13:40:43 7-1 systemd[1]: Started The nginx HTTP and reverse proxy...r.
Hint: Some lines were ellipsized, use -l to show in full.
?
[root@7-2 ~]#yum -y install pcre-devel zlib-devel openssl-devel gcc gcc-c++ make
#安裝依賴關系包
[root@7-2 ~]#useradd -M -s /sbin/nologin nginx
#新建Nginx用戶 方便管理
[root@7-2 ~]#systemctl start nginx
[root@7-2 ~]#systemctl status nginx
● nginx.service - The nginx HTTP and reverse proxy serverLoaded: loaded (/usr/lib/systemd/system/nginx.service; static; vendor preset: disabled)Active: active (running) since Sat 2024-03-02 00:32:49 EST; 5s agoProcess: 1986 ExecStart=/usr/local/nginx/sbin/nginx (code=exited, status=0/SUCCESS)Process: 1983 ExecStartPre=/usr/local/nginx/sbin/nginx -t (code=exited, status=0/SUCCESS)Main PID: 1988 (nginx)CGroup: /system.slice/nginx.service├─1988 nginx: master process /usr/local/nginx/sbin/nginx└─1989 nginx: worker processMar 02 00:32:49 node2.localdomain systemd[1]: Starting The nginx HTTP and ....
Mar 02 00:32:49 node2.localdomain nginx[1983]: nginx: the configuration fi...k
Mar 02 00:32:49 node2.localdomain nginx[1983]: nginx: configuration file /...l
Mar 02 00:32:49 node2.localdomain systemd[1]: Failed to read PID from file...t
Mar 02 00:32:49 node2.localdomain systemd[1]: Started The nginx HTTP and r....
Hint: Some lines were ellipsized, use -l to show in full.
[root@7-2 ~]#cd /usr/local/nginx/
[root@7-2 nginx]#ls
client_body_temp fastcgi_temp logs sbin uwsgi_temp
conf html proxy_temp scgi_temp
[root@7-2 nginx]#cd html/
[root@7-2 html]#ls
50x.html index.html
[root@7-2 html]#mkdir /usr/local/nginx/html/static
[root@7-2 html]#ls
50x.html index.html static
[root@7-2 html]#cd static/
[root@7-2 static]#rz -E
rz waiting to receive.
[root@7-2 static]#ls
f32b966ddaf1002dfa4b2f6c556e57f0.jpg
[root@7-2 static]#mv f32b966ddaf1002dfa4b2f6c556e57f0.jpg nginx.jpg
[root@7-2 static]#ls
nginx.jpg
[root@7-2 static]#vim /usr/local/nginx/conf/nginx.conf
靜態要加jpg,路徑要修改為/usr/local/nginx/html/static?
[root@7-4 ~]#yum -y install pcre-devel zlib-devel openssl-devel gcc gcc-c++ make
#安裝依賴關系包
[root@7-4 ~]#useradd -M -s /sbin/nologin nginx
#新建Nginx用戶 方便管理
[root@7-4 ~]#systemctl start nginx
[root@7-4 ~]#systemctl status nginx
● nginx.service - The nginx HTTP and reverse proxy serverLoaded: loaded (/usr/lib/systemd/system/nginx.service; static; vendor preset: disabled)Active: active (running) since 六 2024-03-02 13:33:00 CST; 12s agoProcess: 1962 ExecStart=/usr/local/nginx/sbin/nginx (code=exited, status=0/SUCCESS)Process: 1960 ExecStartPre=/usr/local/nginx/sbin/nginx -t (code=exited, status=0/SUCCESS)Main PID: 1964 (nginx)CGroup: /system.slice/nginx.service├─1964 nginx: master process /usr/local/nginx/sbin/nginx└─1965 nginx: worker process3月 02 13:32:59 G.D systemd[1]: Starting The nginx HTTP and reverse prox.....
3月 02 13:33:00 G.D nginx[1960]: nginx: the configuration file /usr/loca...ok
3月 02 13:33:00 G.D nginx[1960]: nginx: configuration file /usr/local/ng...ul
3月 02 13:33:00 G.D systemd[1]: Started The nginx HTTP and reverse proxy...r.
Hint: Some lines were ellipsized, use -l to show in full.
[root@7-4 ~]#cd /usr/local/nginx/html/
[root@7-4 html]#ls
50x.html index.html
[root@7-4 html]#mkdir static
[root@7-4 html]#cd static/
[root@7-4 static]#ls
[root@7-4 static]#rz -E
rz waiting to receive.
[root@7-4 static]#ls
f32b966ddaf1002dfa4b2f6c556e57f0.jpg
[root@7-4 static]#mv f32b966ddaf1002dfa4b2f6c556e57f0.jpg nginx.jpg
[root@7-4 static]#ls
nginx.jpg
3.部署Tomcat服務及配置動態頁面Web服務
Centos7-3和Centos7-6需要部署Tomcat服務
[root@7-3 ~]#cd /opt
[root@7-3 opt]#rz -E
rz waiting to receive.
[root@7-3 opt]#ls
jdk-8u291-linux-x64.tar.gz
[root@7-3 opt]#tar xf jdk-8u291-linux-x64.tar.gz
[root@7-3 opt]#ls
jdk1.8.0_291 jdk-8u291-linux-x64.tar.gz
[root@7-3 opt]#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)
[root@7-3 opt]#mv jdk1.8.0_291/ /usr/local/
[root@7-3 opt]#cd /usr/local/
[root@7-3 local]#ls
bin games jdk1.8.0_291 lib64 nginx share
etc include lib libexec sbin src
[root@7-3 local]#vim /etc/profile.d/jdk.sh
[root@7-3 local]#cat /etc/profile.d/jdk.sh
export JAVA_HOME=/usr/local/jdk
export PATH=$JAVA_HOME/bin:$PATH
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=$JAVA_HOME/lib/:$JRE_HOME/lib/
[root@7-3 local]#source /etc/profile.d/jdk.sh
[root@7-3 local]#echo $PATH
/usr/local/jdk1.8.0_91/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
[root@7-3 local]#ln -s jdk1.8.0_291/ jdk
[root@7-3 ~]#java -version
java version "1.8.0_291"
Java(TM) SE Runtime Environment (build 1.8.0_291-b10)
Java HotSpot(TM) 64-Bit Server VM (build 25.291-b10, mixed mode)
[root@7-3 opt]#cd /opt
[root@7-3 opt]#ls
jdk-8u291-linux-x64.tar.gz
[root@7-3 opt]#rz -E
rz waiting to receive.
[root@7-3 opt]#ls
apache-tomcat-9.0.16.tar.gz jdk-8u291-linux-x64.tar.gz
[root@7-3 opt]#tar xf apache-tomcat-9.0.16.tar.gz
[root@7-3 opt]#ls
apache-tomcat-9.0.16 apache-tomcat-9.0.16.tar.gz jdk-8u291-linux-x64.tar.gz
[root@7-3 opt]#cp -r apache-tomcat-9.0.16 /usr/local/
[root@7-3 opt]#cd /usr/local/
[root@7-3 local]#ls
apache-tomcat-9.0.16 etc include lib libexec sbin src
bin games jdk1.8.0_291 lib64 nginx share
[root@7-3 local]#ln -s apache-tomcat-9.0.16/ tomcat
[root@7-3 local]#ls
apache-tomcat-9.0.16 etc include lib libexec sbin src
bin games jdk1.8.0_291 lib64 nginx share tomcat
[root@7-3 ~]#ss -natp |grep 8080
LISTEN 0 100 :::8080 :::* users:(("java",pid=3237,fd=57))
[root@7-3 ~]#cd /usr/local/tomcat/webapps/
[root@7-3 webapps]#ls
docs examples host-manager manager ROOT
[root@7-3 webapps]#mkdir test
[root@7-3 webapps]#ls
docs examples host-manager manager ROOT test
[root@7-3 webapps]#cd test/
[root@7-3 test]#ls
[root@7-3 test]#vim index.jsp
[root@7-3 test]#cat index.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<html><head><tile>JSP test1 page </title></head><boby><% out.println("動態頁面1,http://www.test1.com");%></boby>
</html>
[root@7-3 test]#vim /usr/local/tomcat/conf/server.xml
[root@7-3 test]#/usr/local/tomcat/bin/startup.sh
Using CATALINA_BASE: /usr/local/tomcat
Using CATALINA_HOME: /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME: /usr/local/jdk/jre
Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Tomcat started.
[root@7-4 static]#vim /usr/local/nginx/conf/nginx.conf
[root@7-6 ~]#cd /opt
[root@7-6 opt]#rz -E
rz waiting to receive.
[root@7-6 opt]#ls
jdk-8u291-linux-x64.tar.gz
[root@7-6 opt]#tar xf jdk-8u291-linux-x64.tar.gz
[root@7-6 opt]#ls
jdk1.8.0_291 jdk-8u291-linux-x64.tar.gz
[root@7-6 opt]#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)
[root@7-6 opt]#mv jdk1.8.0_291/ /usr/local/
[root@7-6 opt]#cd /usr/local/
[root@7-6 local]#ls
bin games jdk1.8.0_291 lib64 nginx share
etc include lib libexec sbin src
[root@7-6 local]#ln -s jdk1.8.0_291/ jdk
[root@7-6 local]#vim /etc/profile.d/jdk.sh
[root@7-6 local]#cat /etc/profile.d/jdk.sh
export JAVA_HOME=/usr/local/jdk
export PATH=$JAVA_HOME/bin:$PATH
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=$JAVA_HOME/lib/:$JRE_HOME/lib/
[root@7-6 local]#source /etc/profile.d/jdk.sh
[root@7-6 ~]#java -version
java version "1.8.0_291"
Java(TM) SE Runtime Environment (build 1.8.0_291-b10)
Java HotSpot(TM) 64-Bit Server VM (build 25.291-b10, mixed mode)
[root@7-6 local]#cd /opt/
[root@7-6 opt]#ls
jdk-8u291-linux-x64.tar.gz
[root@7-6 opt]#rz -E
rz waiting to receive.
[root@7-6 opt]#ls
apache-tomcat-9.0.16.tar.gz jdk-8u291-linux-x64.tar.gz
[root@7-6 opt]#tar xf apache-tomcat-9.0.16.tar.gz
[root@7-6 opt]#cp -r apache-tomcat-9.0.16 /usr/local/
[root@7-6 opt]#cd /usr/local/
[root@7-6 local]#ls
apache-tomcat-9.0.16 etc include lib libexec sbin src
bin games jdk1.8.0_291 lib64 nginx share
[root@7-6 local]#ln -s apache-tomcat-9.0.16/ tomcat
[root@7-6 local]#ls
apache-tomcat-9.0.16 etc include lib libexec sbin src
bin games jdk1.8.0_291 lib64 nginx share tomcat
[root@7-6 ~]#/usr/local/tomcat/bin/startup.sh
Using CATALINA_BASE: /usr/local/tomcat
Using CATALINA_HOME: /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME: /usr/local/jdk/jre
Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Tomcat started.
[root@7-6 ~]#ss -natp|grep 8080
LISTEN 0 100 :::8080 :::* users:(("java",pid=2811,fd=57))
[root@7-6 ~]#cd /usr/local/tomcat/webapps/
[root@7-6 webapps]#ls
docs examples host-manager manager ROOT
[root@7-6 webapps]#mkdir test
[root@7-6 webapps]#ls
docs examples host-manager manager ROOT test
[root@7-6 webapps]#cd test/
[root@7-6 test]#ls
[root@7-6 test]#vim index.jsp
[root@7-6 test]#cat index.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<html><head><tile>JSP test2 page </title></head><boby><% out.println("動態頁面2,http://www.test2.com");%></boby>
</html>
[root@7-6 test]#vim /usr/local/tomcat/conf/server.xml
[root@7-6 test]#/usr/local/tomcat/bin/startup.sh
Using CATALINA_BASE: /usr/local/tomcat
Using CATALINA_HOME: /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME: /usr/local/jdk/jre
Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Tomcat started.
4.實驗驗收
動態頁面
[root@7-1 opt]#tail -f /var/log/nginx/access.log
靜態頁面
[root@7-1 opt]#tail -f /var/log/nginx/access.log