Tomcat簡介
Tomcat主要由servlet和jsp組成,是精簡版的 JAVA EE;servlet是伺服器端的一個容器,當使用者請求應用程式的時候,servlet接收用戶端的請求,并把的請求的類檔案或源檔案在虛拟機中運作一次,把運作的結果封裝成html語言,傳回給使用者.so,servlet需要有java開發環境(JDK).但是servlet有個原生性的缺陷,就是所有的html語言都要寫死進java語言中.這就催生了jsp,jsp也是一個java類,jsp在前端入口處,他可以識别html語言中嵌入的jsp代碼,進而把jsp程式交給後端的servlet處理,而html語言則不原封不懂的顯示.而在jsp中執行這類操作的工具叫做jsper.
Apache早期也在研究可以運作jsp的JAVA EE Application Servers,叫做catanila,後來sun公司把自己的研究JAVA EE Application Servers無償捐獻給了Apache,Apache命名為Tomcat,是以現在的Tomcat中可以見到很多catanila的身影
1.首先要安裝JDK,java的運作環境
1: rpm -ivh jdk-7u9-linux-x64.rpm
2: rpm -ql jdk
2.導出java的環境變量
1: vim /etc/profile.d/java.sh
2: export JAVA_HOME=/usr/java/latest
3: export PATH=$JAVA_HOME/bin:$PATH
4: . /etc/profile.d/java.sh #重讀配置檔案
5: java -version 驗證環境變量是否配置成功
3.安裝配置tomcat,建議把tomcat的所有檔案改成普通使用者的權限,使用普通使用者運作
1: tar xf apache-tomcat-7.0.42.tar.gz -C /usr/local
2: ln -sv apache-tomcat-7.0.42/ tomcat
3: vim /usr/local/tomcat/conf/server.xml:重要的配置檔案
4: /usr/local/tomcat/temp/ :編譯後的jsp檔案
5: /usr/local/tomcat/webapps/ : 預設網頁檔案
6: /usr/local/tomcat/bin : 一些可執行腳本
4.導出tomcat的環境變量
1: vim /etc/profile.d/tomcat.sh
2: export CATALINA_HOME=/usr/local/tomcat
3: export PATH=$CATALINA_HOME/bin:$PATH
4: . /etc/profile.d/tomcat.sh
5: catalina.sh version : 運作此指令,如果成功則表示導出環境變量成功
5.啟動檢視tomcat
1: catalina.sh configtest 測試文法是否有誤
2: catalina.sh start | stop停止
3: ss -tpnl
4: jps 顯示主機運作的java程式及程式的id号,如果顯示Bootstrap說明運作成功
6.通路IP:8080
7.檢視tomcat的配置檔案
1: vim /usr/local/tomcat/conf/server.xml
2:
3: <server>--------------------頂級元件,最外層,一個運作在JVM的tomcat執行個體,以線程運作,一個程序多個線程
4: <service>-------------------頂級元件,容器類元件,服務,将連接配接器關聯至引擎的.一個service隻能有一個引擎,可以有多個連接配接器
5: <connector />---------------連接配接器元件,接受使用者請求至tomcat,監聽套接字的,可定義多個
6: <engine >-------------------容器類元件,核心元件,處理connector接受的請求,解析編譯處理這些請求,一般叫catalina引擎,可以有多個,一個實作一組服務,一個引擎可以有多個連接配接器,如下圖
7: <Realm>---------------------可以用于任何容器類的元件中,關聯一個使用者認證庫,實作認證和授權
8: <Realm>--------------------Realm中可以簽到Realm
9: </Realm>-------------------
10: </Realm>--------------------
11: <host>----------------------容器類元件,定義虛拟主機的
12: <context>-----------------容器類元件,有點類似alias,定義一個應用程式的部署,最記憶體的容器,一個context代表一個web程式,配置context的主要目的是指定對應webapp的根目錄
13: </context>----------------
14: </host>---------------------
15: <host>----------------------可以有多個,一個host就一個虛拟主機,一般隻支援基于主機名的虛拟主機
16: <value />-----------------嵌套類元件,閥門,攔截請求的,并将其轉至對應的webapp之前進行某種操作:如記錄日志 access log value(記錄日志) remote address filter value(基于ip做通路控制) 可以用于任何容器中
17: </host>---------------------
18: </engine>-------------------
19: </service>------------------
20: </server>-------------------
大緻圖如下
上圖,三個容器類的元件:engine,host,context
8.修改和增加tomcat監聽的端口1: vim /usr/local/tomcat/conf/server.xml
2:
3: <Connector port="80" protocol="HTTP/1.1"
4: connectionTimeout="20000"
5: redirectPort="8443" />
6: <Connector port="8080" protocol="HTTP/1.1"
7: connectionTimeout="20000"
8: redirectPort="8443" />
9: redirectPort="8443" ------如果是https就轉到8443端口
9.為tomcat提供Sysv服務腳本
vim /etc/rc.d/init.d/tomcat
chkconfig --add tomcat
#!/bin/sh
# Tomcat init script for Linux.
#
# chkconfig: 2345 96 14
# description: The Apache Tomcat servlet/JSP container.
# JAVA_OPTS='-Xms64m -Xmx128m' #堆的最小和最大使用空間,在伺服器這值通常很大,幾十G
JAVA_HOME=/usr/java/lastest
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
*)
echo "Usage: `basename $0` {start|stop|restart}"
exit 1
;;
esac
exec 在目前shell中執行腳本,是以不會在腳本中繼續往下運作了
10.Connector連接配接器的可選參數1: <Connector port="80" address="127.0.0.1" maxThreads="200" connectonTimeout="6000" protocol="HTTP/1.1"
2: connectionTimeout="20000"
3: redirectPort="8443" />
4: <Connector port="8443"
5: maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
6: enableLookups="false" acceptCount="100" debug="0" scheme="https" secure="true"
7: clientAuth="false" sslProtocol="TLS" />
8:
以後自己定義的時候可能還要加上證書的路徑
1) address:指定連接配接器監聽的位址,預設為所有位址,即0.0.0.0;
2) maxThreads:支援的最大并發連接配接數,預設為200,很重要的一個參數;
3) port:監聽的端口,預設為0;
4) protocol:連接配接器使用的協定,預設為HTTP/1.1,定義AJP協定時通常為AJP/1.3;
5) redirectPort:如果某連接配接器支援的協定是HTTP,當接收用戶端發來的HTTPS請求時,則轉發至此屬性定義的端口;
6) connectionTimeout:等待用戶端發送請求的逾時時間,機關為毫秒,預設為60000,即1分鐘;
7) enableLookups:是否通過request.getRemoteHost()進行DNS查詢以擷取用戶端的主機名;預設為true,解析的非常慢,為了提高性能,可以設定為false;
8) acceptCount:設定等待隊列的最大長度;通常在tomcat所有處理線程均處于繁忙狀态時,新發來的請求将被放置于等待隊列中;一旦maxThreads滿了,就開始排隊
11.engine<Engine name="Catalina" defaultHost="localhost"> 定義預設虛拟主機的
12.host<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true">
unpackWARs="true" 自動展開打封包件
autoDeploy="true" tomcat啟動時,自動部署
13.自定義虛拟主機1: <Host name="www.a.com" appBase="/www/webapp"
2: unpackWARs="true" autoDeploy="true">
3: <Context path="" docBase="/www/webapp" reloadable="true"/>
4: <Context path="/ldf" docBase="test" reloadable="true"/>
5: <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
6: prefix="a.com_access_log." suffix=".txt"
7: pattern="%h %l %u %t "%r" %s %b" />
8: </Host>
appBase=="" 如果不指絕對路徑,則表示相對路徑
Context path="" 通路的uri路徑
docBase="/www/webapp" 表示相對于根目錄的其他目錄,如果就是根目錄,就把根目錄重寫一遍,網頁檔案的存放位置
docBase="test" 相對于/www/webapp/test,經測試也可以當别名使用(uri使用)
網頁檔案測試頁
1: <%@ page language="java" %>
2: <%@ page import="java.util.*" %>
3: <html>
4: <head>
5: <title>JSP test page.</title>
6: </head>
7: <body>
8: <% out.println("Hello,world!"); %>
9: </body>
10: </html>
14.server status
1: vim /usr/local/tomcat/conf/tomcat-users.xml
2: <role rolename="manager-gui"/>
3: <user username="tomcat" password="tomcat" roles="tomcat,manager-gui"/>
1: vim /usr/local/tomcat/conf/tomcat-users.xml
2: <role rolename="manager-gui"/>
3: <role rolename="admin-gui"/>
4: <user username="tomcat" password="tomcat" roles="tomcat,manager-gui,admin-gui"/>