天天看點

Tomcat簡單的使用和配置

   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

Tomcat簡單的使用和配置

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>-------------------      
Tomcat簡單的使用和配置

大緻圖如下

Tomcat簡單的使用和配置

上圖,三個容器類的元件: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 &quot;%r&quot; %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"/>      

繼續閱讀