Tomcat簡介 html
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的身影
java
1.首先要安裝JDK,java的運行環境linux
2.導出java的環境變量1: rpm -ivh jdk-7u9-linux-x64.rpm2: rpm -ql jdk
3.安裝配置tomcat,建議把tomcat的全部文件改爲普通用戶的權限,使用普通用戶運行1: vim /etc/profile.d/java.sh2: export JAVA_HOME=/usr/java/latest3: export PATH=$JAVA_HOME/bin:$PATH4: . /etc/profile.d/java.sh #重讀配置文件5: java -version 驗證環境變量是否配置成功
4.導出tomcat的環境變量1: tar xf apache-tomcat-7.0.42.tar.gz -C /usr/local2: ln -sv apache-tomcat-7.0.42/ tomcat3: vim /usr/local/tomcat/conf/server.xml:重要的配置文件4: /usr/local/tomcat/temp/ :編譯後的jsp文件5: /usr/local/tomcat/webapps/ : 默認網頁文件6: /usr/local/tomcat/bin : 一些可執行腳本
1: vim /etc/profile.d/tomcat.sh2: export CATALINA_HOME=/usr/local/tomcat3: export PATH=$CATALINA_HOME/bin:$PATH4: . /etc/profile.d/tomcat.sh5: catalina.sh version : 運行此命令,若是成功則表示導出環境變量成功
5.啓動查看tomcatweb
6.訪問IP:80801: catalina.sh configtest 測試語法是否有誤2: catalina.sh start | stop中止3: ss -tpnl4: jps 顯示主機運行的java程序及程序的id號,若是顯示Bootstrap說明運行成功
7.查看tomcat的配置文件shell
1: vim /usr/local/tomcat/conf/server.xml2:3: <server>--------------------頂級組件,最外層,一個運行在JVM的tomcat實例,以線程運行,一個進程多個線程4: <service>-------------------頂級組件,容器類組件,服務,將鏈接器關聯至引擎的.一個service只能有一個引擎,能夠有多個鏈接器5: <connector />---------------鏈接器組件,接受用戶請求至tomcat,監聽套接字的,可定義多個6: <engine >-------------------容器類組件,核心組件,處理connector接受的請求,解析編譯處理這些請求,通常叫catalina引擎,能夠有多個,一個實現一組服務,一個引擎能夠有多個鏈接器,以下圖7: <Realm>---------------------能夠用於任何容器類的組件中,關聯一個用戶認證庫,實現認證和受權8: <Realm>--------------------Realm中能夠簽到Realm9: </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>-------------------
大體圖以下apache
上圖,三個容器類的組件:engine,host,contextvim
8.修改和增長tomcat監聽的端口後端
9.爲tomcat提供Sysv服務腳本1: vim /usr/local/tomcat/conf/server.xml2: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端口
vim /etc/rc.d/init.d/tomcattomcat
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
exec $CATALINA_HOME/bin/catalina.sh start ;;
*)
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>
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.xml2: <role rolename="manager-gui"/>
3: <user username="tomcat" password="tomcat" roles="tomcat,manager-gui"/>
15.Host Manager
1: vim /usr/local/tomcat/conf/tomcat-users.xml2: <role rolename="manager-gui"/>
3: <role rolename="admin-gui"/>
4: <user username="tomcat" password="tomcat" roles="tomcat,manager-gui,admin-gui"/>