Tomcat安裝及配置詳解(一)

導讀 Tomcat 服務器是一個免費的開放源代碼的Web 應用服務器,Tomcat是Apache 軟件基金會(Apache Software Foundation)的Jakarta 項目中的一個核心項目,它早期的名稱爲catalina,後來由Apache、Sun 和其餘一些公司及我的共同開發而成,並改名爲Tomcat。

Tomcat簡介html

Tomcat 服務器是一個免費的開放源代碼的Web 應用服務器,Tomcat是Apache 軟件基金會(Apache Software Foundation)的Jakarta 項目中的一個核心項目,它早期的名稱爲catalina,後來由Apache、Sun 和其餘一些公司及我的共同開發而成,並改名爲Tomcat。Tomcat 是一個小型的輕量級應用服務器,在中小型系統和併發訪問用戶不是不少的場合下被廣泛使用,是開發和調試JSP 程序的首選,由於Tomcat 技術先進、性能穩定,成爲目前比較流行的Web 應用服務器。Tomcat是應用(java)服務器,它只是一個servlet容器,是Apache的擴展,但它是獨立運行的。目前最新的版本爲Tomcat 8.0.24 Released。前端

Tomcat不是一個完整意義上的Jave EE服務器,它甚至都沒有提供對哪怕是一個主要Java EE API的實現;但因爲遵照apache開源協議,tomcat卻又爲衆多的java應用程序服務器嵌入本身的產品中構建商業的java應用程序服務器,如JBoss和JOnAS。儘管Tomcat對Jave EE API的實現並不完整,然而很企業也在漸漸拋棄使用傳統的Java EE技術(如EJB)轉而採用一些開源組件來構建複雜的應用。這些開源組件如Structs、Spring和Hibernate,而Tomcat可以對這些組件實現完美的支持。java

Tomcat的架構node

Tomcat 6支持Servlet 2.5和JSP 2.1的規範,它由一組嵌套的層次和組件組成,通常可分爲如下四類:linux

頂級組件:位於配置層次的頂級,而且彼此間有着嚴格的對應關係;數據庫

鏈接器:鏈接客戶端(能夠是瀏覽器或Web服務器)請求至Servlet容器,apache

容器:包含一組其它組件;bootstrap

被嵌套的組件:位於一個容器當中,但不能包含其它組件;vim

各常見組件後端

一、服務器(server):Tomcat的一個實例,一般一個JVM只能包含一個Tomcat實例;所以,一臺物理服務器上能夠在啓動多個JVM的狀況下在每個JVM中啓動一個Tomcat實例,每一個實例分屬於一個獨立的管理端口。這是一個頂級組件。

二、服務(service):一個服務組件一般包含一個引擎和與此引擎相關聯的一個或多個鏈接器。給服務命名能夠方便管理員在日誌文件中識別不一樣服務產生的日誌。一個server能夠包含多個service組件,但一般情下只爲一個service指派一個server。

鏈接器類組件:

三、鏈接器(connectors):負責鏈接客戶端(能夠是瀏覽器或Web服務器)請求至Servlet容器內的Web應用程序,一般指的是接收客戶發來請求的位置及服務器端分配的端口。默認端口一般是HTTP協議的8080,管理員也能夠根據本身的須要改變此端口。一個引擎能夠配置多個鏈接器,但這些鏈接器必須使用不一樣的端口。默認的鏈接器是基於HTTP/1.1的Coyote。同時,Tomcat也支持AJP、JServ和JK2鏈接器。

容器類組件

四、引擎(Engine):引擎通是指處理請求的Servlet引擎組件,即Catalina Servlet引擎,它檢查每個請求的HTTP首部信息以辨別此請求應該發往哪一個host或context,並將請求處理後的結果返回的相應的客戶端。嚴格意義上來講,容器沒必要非得經過引擎來實現,它也能夠是隻是一個容器。若是Tomcat被配置成爲獨立服務器,默認引擎就是已經定義好的引擎。而若是Tomcat被配置爲Apache Web服務器的提供Servlet功能的後端,默認引擎將被忽略,由於Web服務器自身就能肯定將用戶請求發往何處。一個引擎能夠包含多個host組件。

五、主機(Host):主機組件相似於Apache中的虛擬主機,但在Tomcat中只支持基於FQDN的「虛擬主機」。一個引擎至少要包含一個主機組件。

六、上下文(Context):Context組件是最內層次的組件,它表示Web應用程序自己。配置一個Context最主要的是指定Web應用程序的根目錄,以便Servlet容器可以將用戶請求發往正確的位置。Context組件也可包含自定義的錯誤頁,以實如今用戶訪問發生錯誤時提供友好的提示信息。

被嵌套類(nested)組件

這類組件一般包含於容器類組件中以提供具備管理功能的服務,它們不能包含其它組件,但有些卻能夠由不一樣層次的容器各自配置。

七、閥門(Valve):用來攔截請求並在將其轉至目標以前進行某種處理操做,相似於Servlet規範中定義的過濾器。Valve能夠定義在任何容器類的組件中。Valve常被用來記錄客戶端請求、客戶端IP地址和服務器等信息,這種處理技術一般被稱做請求轉儲(request dumping)。請求轉儲valve記錄請求客戶端請求數據包中的HTTP首部信息和cookie信息文件中,響應轉儲valve則記錄響應數據包首部信息和cookie信息至文件中。

八、日誌記錄器(Logger):用於記錄組件內部的狀態信息,可被用於除Context以外的任何容器中。日誌記錄的功能可被繼承,所以,一個引擎級別的Logger將會記錄引擎內部全部組件相關的信息,除非某內部組件定義了本身的Logger組件。

九、領域(Realm):用於用戶的認證和受權;在配置一個應用程序時,管理員能夠爲每一個資源或資源組定義角色及權限,而這些訪問控制功能的生效須要經過Realm來實現。Realm的認證能夠基於文本文件、數據庫表、LDAP服務等來實現。Realm的效用會遍佈整個引擎或頂級容器,所以,一個容器內的全部應用程序將共享用戶資源。同時,Realm能夠被其所在組件的子組件繼承,也能夠被子組件中定義的Realm所覆蓋。

引擎(Engine):引擎是指處理請求的Servlet引擎組件,即Catalina Servlet引擎,它從HTTPconnector接收請求並響應請求。它檢查每個請求的HTTP首部信息以辨別此請求應該發往哪一個host或context,並將請求處理後的結果返回的相應的客戶端。嚴格意義上來講,容器沒必要非得經過引擎來實現,它也能夠是隻是一個容器。若是Tomcat被配置成爲獨立服務器,默認引擎就是已經定義好的引擎。而若是Tomcat被配置爲Apache Web服務器的提供Servlet功能的後端,默認引擎將被忽略,由於Web服務器自身就能肯定將用戶請求發往何處。一個引擎能夠包含多個host組件。

Tomcat鏈接器架構

基於Apache作爲Tomcat前端的架構來說,Apache經過mod_jk、mod_jk2或mod_proxy模塊與後端的Tomcat進行數據交換。而對Tomcat來講,每一個Web容器實例都有一個Java語言開發的鏈接器模塊組件,在Tomcat6中,這個鏈接器是org.apache.catalina.Connector類。這個類的構造器能夠構造兩種類別的鏈接器:HTTP/1.1負責響應基於HTTP/HTTPS協議的請求,AJP/1.3負責響應基於AJP的請求。但能夠簡單地經過在server.xml配置文件中實現鏈接器的建立,但建立時所使用的類根據系統是支持APR(Apache Portable Runtime)而有所不一樣。

APR是附加在提供了通用和標準API的操做系統之上一個通信層的本地庫的集合,它可以爲使用了APR的應用程序在與Apache通訊時提供較好伸縮能力時帶去平衡效用。
同時,須要說明的是,mod_jk2模塊目前已經再也不被支持了,mod_jk模塊目前還apache被支持,但其項目活躍度已經大大下降。所以,目前更經常使用 的方式是使用mod_proxy模塊。

若是支持APR:

HTTP/1.1:org.apache.cotote.http11.Http11AprProtocol
AJP/1.3:org.apache.coyote.ajp.AjpAprProtocol

若是不支持APR:

HTTP/1.1: org.apache.coyote.http11.Http11Protocol
AJP/1.3: org.apache.jk.server.JkCoyoteHandler

鏈接器協議

Tomcat的Web服務器鏈接器支持兩種協議:AJP和HTTP,它們均定義了以二進制格式在Web服務器和Tomcat之間進行數據傳輸,並提供相應的控制命令

AJP(Apache JServ Protocol)協議:目前正在使用的AJP協議的版本是經過JK和JK2鏈接器提供支持的AJP13,它基於二進制的格式在Web服務器和Tomcat之間傳輸數據,而此前的版本AJP10和AJP11則使用文本格式傳輸數據。

HTTP協議:誠如其名稱所表示,其是使用HTTP或HTTPS協議在Web服務器和Tomcat之間創建通訊,此時,Tomcat就是一個徹底功能的HTTP服務器,它須要監聽在某端口上以接收來自於商前服務器的請求。

2、安裝Tomcat

Tomcat的官方站點爲http://tomcat.apache.org/,要安裝Tomcat,首先須要安裝JDK。

如下安裝平臺爲CentOS release 6.6 (Final) 32位平臺上,JDK 版本爲jdk-6u45-linux-i586-rpm.bin ,tomcat 使用 apache-tomcat-7.0.63.tar.gz。

[root@localhost tomcat]# ls -l
total 75676
-rw-r--r--. 1 root root  8850470 Aug 12 02:08 apache-tomcat-7.0.63.tar.gz
-rw-r--r--. 1 root root 68637258 Apr  6  2014 jdk-6u45-linux-i586-rpm.bin
[root@localhost tomcat]# chmod +x jdk-6u45-linux-i586-rpm.bin 
[root@localhost tomcat]# ./jdk-6u45-linux-i586-rpm.bin 
[root@localhost tomcat]# tar xf  apache-tomcat-7.0.63.tar.gz -C  /usr/local/
[root@localhost tomcat]# ln -s /usr/local/apache-tomcat-7.0.63/  /usr/local/tomcat
[root@node1 tomcat]# vim /etc/profile.d/java.sh     #設置java環境變量
export JAVA_HOME=/usr/java/latest
export PATH=$PATH:$JAVA_HOME/bin
[root@node1 conf]# .  /etc/profile.d/tomcat.sh
[root@node1 tomcat]# vim /etc/profile.d/tomcat.sh       #設置tomcat環境變量
export CATALINA_HOME=/usr/local/tomcat
export PATH=$PATH:$CATALINA_HOME/bin
[root@node1 conf]# catalina.sh version    
Using CATALINA_BASE:   /usr/local/tomcat
Using CATALINA_HOME:   /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME:        /usr/java/jdk1.6.0_45
Using CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Server version: Apache Tomcat/7.0.63
Server built:   Jun 30 2015 08:08:33 UTC
Server number:  7.0.63.0
OS Name:        Linux
OS Version:     2.6.32-504.el6.i686
Architecture:   i386
JVM Version:    1.6.0_45-b06
JVM Vendor:     Sun Microsystems Inc.
[root@localhost tomcat]# vim /etc/init.d/tomcat    #提供啓動腳本
#!/bin/sh
# Tomcat init script for Linux.
#
# chkconfig: 2345 96 14
# description: The Apache Tomcat servlet/JSP container.
# JAVA_OPTS='-Xms64m -Xmx128m'
JAVA_HOME=/usr/java/latest
CATALINA_HOME=/usr/local/tomcat
export JAVA_HOME CATALINA_HOME
case $1 in
start)
  exec $CATALINA_HOME/bin/catalina.sh start ;;
stop)
  exec $CATALINA_HOME/bin/catalina.sh stop;;
restart)
  $CATALINA_HOME/bin/catalina.sh stop
  sleep 2
  exec $CATALINA_HOME/bin/catalina.sh start ;;
configtest)
  exec $CATALINA_HOME/bin/catalina.sh configtest ;;
*)
  exec $CATALINA_HOME/bin/catalina.sh * ;;
esac
[root@localhost tomcat]# chmod +x  /etc/init.d/tomcat 
[root@localhost tomcat]# chkconfig --add tomcat
[root@node1 tomcat]# catalina.sh start
[root@node1 tomcat]# jps      #顯示Bootstrap啓動則表示啓動成功
29145 Bootstrap                           
29163 Jps

原文來自: https://www.linuxprobe.com/tomcat-install-configure.html

相關文章
相關標籤/搜索