第十九周作業

1.描述tomcat的架構

tomcat服務器是一種Servlet/jsp容器,更實質性的說是Servlet容器,因為jsp最終還是被編譯成servlet來執行的。而對于servlet來說,其最長見的用途是擴展java web服務器功能,為來自web客戶的請求提供服務。它完全運行在java虛擬機上。由于它的運行在服務器端,因此他的運行不依賴于瀏覽器。

tomcat作為servlet容器,負責處理客戶請求,把請求傳給servlet并把結果返回給客戶。servlet容器與servlet之間的接口是由java servlet api定義的,在此api中定義了servlet的各種方法,這些方法在servlet生命周期的不容階段被servlet容器調用,servlet api還定義了servlet容器傳遞給servlet的對象類,如請求對象ServletRequest和相應對象ServletResponse。

tomcat服務器是由一系列可配置的組件構成,其中核心組件是Catalina Servlet容器,它是所有其他tomcat組件的頂層容器。tomcat的組件可以在conf/server.xml文件當中進行配置,每個tomcat組件在server.xml文件中進行配置,每個tomcat組件在server.xml文件中對應一種配置元素。

2.詳細解釋Tomcat的配置文件及配置文件中的參數所代表的含義。

/bin:腳本、批處理,jar文件等啟動tomcat文件

/conf:存放tomcat服務器全局配置文件

server.xml: 核心配置文件;

web.xml: 默認部署應用描述符;部署,將一個web應用程序所依賴到的類裝進JVM;

context.xml:默認為上下文提供配置文件;

 tomcat-users.xml:為用戶認證文件,Tomcat啟動后會將這個文件讀進內存中完成賬號和密碼的檢測認證,所以這個文件的安全性很重要;

   catalina.policy來定義Tomcat自身的安全和資源授權策略,如定義通過互聯網訪問時,哪些資源用戶可以訪問哪些資源用戶不能訪問;哪些資源能被裝載,哪些資源不能被裝載等等

   catalina.properties:定義應用程序自身屬性;如所使用的內存大小,所使用的字符串緩沖池的大小,你的server loader加載器是什么,等等

   logging.properties:用來定義日志級別,以及日志文件路徑

/lib:庫文件路徑;

/logs:日志目錄;

/temp:臨時目錄;

/webapps:Tomcat的主要Web發布目錄,默認情況下把Web應用文件放于此目錄

/work:存放JSP編譯后產生的class文件

server.xml文件參數詳解:

<Server> 

       <Listener /> 

      <GlobaNamingResources> 

      </GlobaNamingResources> 

      <Service> 

            <Connector /> 

            <Engine> 

                <Logger /> 

                <Realm /> 

                     <host> 

                             <Logger /> 

                             <Context /> 

                     </host> 

           </Engine> 

     </Service> 

</Server>

<\Server>元素

它代表整個容器,是Tomcat實例的頂層元素.由org.apache.catalina.Server接口來定義.它包含一個元素.并且它不能做為任何元素的子元素.

<\Connector>元素

由Connector接口定義.元素代表與客戶程序實際交互的給件,它負責接收客戶請求,以及向客戶返回響應結果.

<\Engine>元素

每個Service元素只能有一個Engine元素.處理在同一個中所有元素接收到的客戶請求.由org.apahce.catalina.Engine接口定義.

<\Host>元素

它由Host接口定義.一個Engine元素可以包含多個元素.每個的元素定義了一個虛擬主機.它包含了一個或多個Web應用.

<\Context>元素

它由Context接口定義.是使用最頻繁的元素.每個可以包含多個元素.每個web應用有唯一的一個相對應的Context代表web應用自身.servlet容器為第一個web應用創建一個

<Server port=”8005″ shutdown=”SHUTDOWN”>  tomcat管理接口;負責監聽關閉tomcat的請求

<Listener className=”org.apache.catalina.core.AprLifecycleListener” SSLEngine=”on” />  監聽組件;用于集群調試

<GlobalNamingResources>  全局命名資源,定義了用戶認證

<Engine name=”Catalina” defaultHost=”localhost”>  引擎名及默認主機

<Realm className=”org.apache.catalina.realm.LockOutRealm”>  定義用戶訪問的密碼;默認沒定義用戶密碼,所以都能訪問;

<Valve className=”org.apache.catalina.valves.AccessLogValve” directory=”logs” …… />   定義訪問日志


3.配置apache通過mod_proxy模塊與tomcat連接的詳細過程

apache服務器:192.168.31.23

Tomcat1服務器:192.168.31.233

Tomcat2服務器:192.168.31.26

一、tomcat服務器先安裝tomcat 、jdk并配置環境變量

tar -zxvf jdk-8u20-linux-x64.tar.gz -C /usr/local/     解壓jdk包

cd /usr/local

ln -sv  jdk1.8.0_20    jdk

vim /etc/profile.d/java.sh   配置java環境變量

JAVA_HOME=/usr/local/jdk
export PATH=$PATH:$JAVA_HOME/bin

source  /etc/profile.d/java.sh  讀取環境變量


tar -zxvf apache-tomcat-7.0.56.tar.gz  -C /usr/local/

cd  /usr/local

ln -sv apache-tomcat-7.0.56/ tomcat 

vim /etc/profile.d/catalina.sh 

CATALINA_HOME=/usr/local/tomcat
export PATH=$PATH:$CATALINA_HOME/bin

source /etc/profile.d/catalina.sh 

二、啟動tomcat,并訪問默認網站

catalina.sh start

ss  -tnl    看8080端口 是否起來

第十九周作業


三、安裝并配置apache反向代理服務

yum  -y install httpd

vim /etc/httpd/conf/httpd.conf

# DocumentRoot “/var/www/html”   注釋掉默認網頁存放位置

在conf.d目錄下新建虛擬主機

vim /etc/httpd/conf.d/http-proxy.conf 

<VirtualHost  *:80>

  ProxyVia On

  ProxyPreserveHost  On

  ProxyRequests Off
  ProxyPass  /  http://192.168.31.233:8080/
  ProxyPassReverse / http://192.168.31.233:8080/
  <Proxy *>
    Require all granted
  </Proxy>
  <Location / >
     Require all granted
  </Location>
</VirtualHost>

四、重啟apache 訪問測試成功

systemctl restart httpd.service

第十九周作業


4.配置基于mod_jk的負載均衡

mod_jk是基于AJP協議的;通過mod_jk模塊與tomcat連接;需要額外的軟件包進行編譯

一、apache服務器安裝tomcat連接器 <apxs基于httpd-devel包>

yum -y install httpd-devel

tomcat-connectors-1.2.42-src.tar.gz

tar -zxvf  tomcat-connectors-1.2.42-src.tar.gz

cd  /root/tomcat-connectors-1.2.42-src/native

./configure –with-apxs=/usr/bin/apxs  

make && make install  

二、為了區分兩個tomcat網頁內容,修改tomcat的配置,并增加jvmRoute

tomcat1:

vim /usr/local/tomcat/conf/server.xml

 <Engine name=”Catalina” defaultHost=”localhost” jvmRoute=”TomcatA”>

<Host name=”localhost”  appBase=”/data/webapps”     
            unpackWARs=”true” autoDeploy=”true”>
 <Context path=”” docBase=”myapp” reloadable=”true” />

tomcat2:

vim /usr/local/tomcat/conf/server.xml

 <Engine name=”Catalina” defaultHost=”localhost” jvmRoute=”TomcatB”>

<Host name=”localhost”  appBase=”/data/webapps”     
            unpackWARs=”true” autoDeploy=”true”>
 <Context path=”” docBase=”myapp” reloadable=”true” />


分別在兩個tomcat服務器上創建目錄及index.jsp文件

mkdir  /data/webapps/myapp/{classes,lib,WEB-INF,META-INF}

tomcat1:

vim  /data/webapps/myapp/index.jsp

<%@ page language=”java” %>
<html>
 <head><title>TomcatA</title></head>
 <body>
  <h1><font color=”red”>TomcatA </h1>
  <table align=”centre” border=”1″>
   <tr>
    <td>Session ID</td>
  <% session.setAttribute(“abc”,”abc”); %>
    <td><%= session.getId() %></td>
   </tr>
   <tr>
    <td>Created on</td>
    <td><%= session.getCreationTime() %></td>
   </tr>
  </table>
 </body>
</html>
tomcat2:

vim  /data/webapps/myapp/index.jsp

<%@ page language=”java” %>
<html> 
 <head><title>TomcatB</title></head> 
 <body> 
  <h1><font color=”blue”>TomcatB </h1> 
  <table align=”centre” border=”1″> 
   <tr> 
    <td>Session ID</td> 
  <% session.setAttribute(“abc”,”abc”); %> 
    <td><%= session.getId() %></td> 
   </tr> 
   <tr> 
    <td>Created on</td> 
    <td><%= session.getCreationTime() %></td> 
   </tr> 
  </table> 
 </body> 
</html>

三、啟動tomcat并訪問測試

省略………………………………..


四、配置mod_jk模塊實現負載均衡

 vim /etc/httpd/conf/httpd.conf 

# DocumentRoot “/var/www/html”  注釋

配置虛擬主機

vim /etc/httpd/conf.d/httpd-jk.conf 

LoadModule jk_module modules/mod_jk.so                                加載mod_jk模塊
JkWorkersFile /etc/httpd/conf.d/workers.properties                配置文件位置
JkLogFile logs/mod_jk.log                                                              日志
JkLogLevel debug                                                                            日志級別
JkMount /* lbcluster                                                                       負載均衡器名稱
JkMount /jkstatus/ stat1                                                               狀態信息

編輯workers.properties配置文件

 vim /etc/httpd/conf.d/workers.properties 

worker.list = lbcluster,stat1
worker.TomcatA.type = ajp13
worker.TomcatA.port = 8009
worker.TomcatA.host = 192.168.31.233
worker.TomcatA.lbfactor = 1
worker.TomcatB.type = ajp13
worker.TomcatB.port = 8009
worker.TomcatB.host = 192.168.31.26
worker.TomcatB.lbfactor = 1
worker.lbcluster.type = lb
worker.lbcluster.sticky_session = 0
worker.lbcluster.balance_workers = TomcatA, TomcatB
worker.stat1.type = status

五、重啟apache,并測試

httpd -t

systemctl reload httpd.service

第十九周作業

第十九周作業


5、配置tomcat集群,能夠實現用戶的session會話保持

DeltaManager實現

原理:是將會話信息同步給集群中其它節點,實現會話復制;

(1).修改tomcat1下的server.xml配置文件

在Engine組件內增加下面這一段

<Cluster className=”org.apache.catalina.ha.tcp.SimpleTcpCluster”channelSendOptions=”8″>
<Manager className=”org.apache.catalina.ha.session.DeltaManager” 
expireSessionsOnShutdown=”false” 
notifyListenersOnReplication=”true”/> 
<Channel className=”org.apache.catalina.tribes.group.GroupChannel”> 
<Membership className=”org.apache.catalina.tribes.membership.McastService” 
address=”228.0.0.4“port=”45564″frequency=”500″dropTime=”3000″/> 
<Receiver className=”org.apache.catalina.tribes.transport.nio.NioReceiver” 
address=”192.168.31.233“port=”4000″autoBind=”100″selectorTimeout=”5000″maxThreads=”6″/> 
<Sender className=”org.apache.catalina.tribes.transport.ReplicationTransmitter”> 
<Transport className=”org.apache.catalina.tribes.transport.nio.PooledParallelSender”/> 
</Sender> 
<Interceptor className=”org.apache.catalina.tribes.group.interceptors.TcpFailureDetector”/> 
<Interceptor className=”org.apache.catalina.tribes.group.interceptors.MessageDispatch15Interceptor”/> 
</Channel> 
<Valve className=”org.apache.catalina.ha.tcp.ReplicationValve”filter=”/”/> 
<Valve className=”org.apache.catalina.ha.session.JvmRouteBinderValve”/> 
<Deployer className=”org.apache.catalina.ha.deploy.FarmWarDeployer”tempDir=”/tmp/war-temp/” 
deployDir=”/tmp/war-deploy/”watchDir=”/tmp/war-listen/”watchEnabled=”false”/> 
<ClusterListener className=”org.apache.catalina.ha.session.JvmRouteSessionIDBinderListener”/> 
<ClusterListener className=”org.apache.catalina.ha.session.ClusterSessionListener”/> 
</Cluster>


修改tomcat2下的server.xml

<Cluster className=”org.apache.catalina.ha.tcp.SimpleTcpCluster”channelSendOptions=”8″>
<Manager className=”org.apache.catalina.ha.session.DeltaManager” 
expireSessionsOnShutdown=”false” 
notifyListenersOnReplication=”true”/> 
<Channel className=”org.apache.catalina.tribes.group.GroupChannel”> 
<Membership className=”org.apache.catalina.tribes.membership.McastService” 
address=”228.0.0.4“port=”45564″frequency=”500″dropTime=”3000″/> 
<Receiver className=”org.apache.catalina.tribes.transport.nio.NioReceiver” 
address=”192.168.31.26“port=”4000″autoBind=”100″selectorTimeout=”5000″maxThreads=”6″/> 
<Sender className=”org.apache.catalina.tribes.transport.ReplicationTransmitter”> 
<Transport className=”org.apache.catalina.tribes.transport.nio.PooledParallelSender”/> 
</Sender> 
<Interceptor className=”org.apache.catalina.tribes.group.interceptors.TcpFailureDetector”/> 
<Interceptor className=”org.apache.catalina.tribes.group.interceptors.MessageDispatch15Interceptor”/> 
</Channel> 
<Valve className=”org.apache.catalina.ha.tcp.ReplicationValve”filter=”/”/> 
<Valve className=”org.apache.catalina.ha.session.JvmRouteBinderValve”/> 
<Deployer className=”org.apache.catalina.ha.deploy.FarmWarDeployer”tempDir=”/tmp/war-temp/” 
deployDir=”/tmp/war-deploy/”watchDir=”/tmp/war-listen/”watchEnabled=”false”/> 
<ClusterListener className=”org.apache.catalina.ha.session.JvmRouteSessionIDBinderListener”/> 
<ClusterListener className=”org.apache.catalina.ha.session.ClusterSessionListener”/> 

</Cluster>

(2).此外,所有啟用集群功能的web應用程序,其web.xml中都須添加<distributable/>才能實現集群功能。如果某web應用程序沒有自己的web.xml,也可以通過復制默認的web.xml至其WEB-INF目錄中     Tomcat1  Tomcat2 都有添加

cp /usr/local/tomcat/conf/web.xml  /data/webapps/myapp/WEB-INF/

vim /data/webapps/myapp/WEB-INF/web.xml

增加一行<distributable/>

第十九周作業


3).重啟tomcat,并測試會話綁定

catalina.sh  configtest

catalina.sh  stop|start









原創文章,作者:N27_Vicent,如若轉載,請注明出處:http://www.www58058.com/79772

(0)
N27_VicentN27_Vicent
上一篇 2017-07-10 21:05
下一篇 2017-07-11 08:10

相關推薦

  • 6、vim編輯和查找和特殊權限

    http://note.youdao.com/yws/public/redirect/share?id=dd29f6f6ad717181cdd6d01bbf8db554&type=false

    Linux干貨 2016-08-08
  • 磁盤分區

    磁盤分區 一、分區方式兩種 MBR分區不能超過2個T按柱面分區主引導記錄存放在,0磁道0扇區 512bytes前446字節存放bootloader (軟件程序)64字節:分區表16個字節表示一個有效的分區 故只能分4個主分區。大于4個需要創建擴展分區,并在其中創建邏輯分區。2字節 55AABPT分區GPT:GUID(Globals Unique Identi…

    Linux干貨 2016-08-29
  • N26-博客作業-week7

    1、創建一個10G分區,并格式為ext4文件系統;      (1) 要求其block大小為2048, 預留空間百分比為2, 卷標為MYDATA, 默認掛載屬性包含acl;     ~]# fdisk /dev/sda Welcome to fdisk (util-li…

    Linux干貨 2017-03-19
  • Linux系統的文件管理命令及bash的相關工作特性

    熟悉Linux系統的文件管理命令,了解bash的工作特性,加強練習并掌握其內容。

    2017-09-30
  • 第4周作業

    1、復制/etc/skel目錄為/home/tuser1,要求/home/tuser1及其內部文件的屬組和其它用戶均沒有任何訪問權限。     ~]# cp -r /etc/skel/ /home/tuser1     ~]# chmod 700 /home/tuser1/ 2、…

    Linux干貨 2016-12-25
  • 馬哥教育網絡班22期+第1周課程練習

    一、計算機組成部分及其功能:硬件系統和軟件系統     1、計算機的硬件系統組成及其功能:         運算器:處理數據的算術運算及邏輯運算即數據加工處理;         控制器:根據…

    Linux干貨 2016-08-15

評論列表(1條)

  • 馬哥教育
    馬哥教育 2017-07-22 21:25

    內容翔實,可以看的出有很認真在做,很贊。

欧美性久久久久