運維tomcat基礎篇

1.Tomcat簡介

Tomcat是Apache軟件基金會(Apache Software Foundation)的Jakarta 項目中的一個核心項目,由Apache、Sun和其餘一些公司及我的共同開發而成。java

Tomcat服務器是一個免費的開放源代碼的Web應用服務器,屬於輕量級應用服務器,在中小型系統和併發訪問用戶不是不少的場合下被廣泛使用,是開發和調試JSP程序的首選。web

Tomcat和Nginx、Apache(httpd)、lighttpd等Web服務器同樣,具備處理HTML頁面的功能,另外它仍是一個Servlet和JSP容器,獨立的Servlet容器是Tomcat的默認模式。不過,Tomcat處理靜態HTML的能力不如Nginx/Apache服務器。數據庫

2.Tomcat安裝

2.1 環境準備

具體環境可經過開發人員來定,這兒給出了本次實驗的環境。apache

連接:https://pan.baidu.com/s/1uOEy... 密碼:pt3lbootstrap

2.2 部署java環境

java version "1.8.0_60"
Java(TM) SE Runtime Environment (build 1.8.0_60-b27)
Java HotSpot(TM) 64-Bit Server VM (build 25.60-b23, mixed mode)

2.3 安裝Tomcat

~]# tar -xf apache-tomcat-8.0.27.tar.gz -C /app/
~]# ln -s /app/apache-tomcat-8.0.27 /app/tomcat
~]# echo 'export TOMCAT_HOME=/app/tomcat'>>/etc/profile.d/tomcat.sh
~]# source /etc/profile.d/tomcat.sh
~]# chown -R root.root /app/jdk/ /app/tomcat/

2.4 Tomcat目錄介紹

[root@tomcat ~]# cd /app/tomcat/
[root@tomcat tomcat]# tree -L 1
.
├── bin         #→用以啓動、關閉Tomcat或者其它功能的腳本(.bat文件和.sh文件)
├── conf        #→用以配置Tomcat的XML及DTD文件
├── lib         #→存放web應用能訪問的JAR包
├── LICENSE
├── logs        #→Catalina和其它Web應用程序的日誌文件
├── NOTICE
├── RELEASE-NOTES
├── RUNNING.txt
├── temp        #→臨時文件
├── webapps     #→Web應用程序根目錄
└── work        #→用以產生有JSP編譯出的Servlet的.java和.class文件
7 directories, 4 files
[root@tomcat tomcat]# cd webapps/
[root@tomcat webapps]# ll
total 20
drwxr-xr-x 14 root root 4096 Oct  5 12:09 docs         #→tomcat幫助文檔
drwxr-xr-x  6 root root 4096 Oct  5 12:09 examples     #→web應用實例
drwxr-xr-x  5 root root 4096 Oct  5 12:09 host-manager #→管理
drwxr-xr-x  5 root root 4096 Oct  5 12:09 manager      #→管理
drwxr-xr-x  3 root root 4096 Oct  5 12:09 ROOT         #→默認網站根目錄

2.5 啓動Tomcat

#→啓動程序/app/tomcat/bin/startup.sh
#→關閉程序/app/tomcat/bin/shutdown.sh
 
[root@tomcat ~]# /app/tomcat/bin/startup.sh
Using CATALINA_BASE:   /app/tomcat
Using CATALINA_HOME:   /app/tomcat
Using CATALINA_TMPDIR: /app/tomcat/temp
Using JRE_HOME:        /app/jdk
Using CLASSPATH:       
/app/tomcat/bin/bootstrap.jar:/app/tomcat/bin/tomcat-juli.jar
Tomcat started.
 
[root@tomcat ~]# netstat -lnpt | grep java
tcp6       0      0 127.0.0.1:8005          :::*                   LISTEN      1311/java           
tcp6       0      0 :::8009                 :::*                   LISTEN      1311/java           
tcp6       0      0 :::8080                 :::*                   LISTEN      1311/java

2.6 訪問網站

http://ipaddr:8080/

70

2.7 日誌介紹

[root@tomcat ~]# cd /app/tomcat/logs/
[root@tomcat logs]# ll
total 32
-rw-r--r-- 1 root root 12137 Sep 16 17:55 catalina.2018-09-16.log
-rw-r--r-- 1 root root 12137 Sep 16 17:55 catalina.out
-rw-r--r-- 1 root root     0 Sep 16 05:49 host-manager.2018-09-16.log
-rw-r--r-- 1 root root   560 Sep 16 17:54 localhost.2018-09-16.log
-rw-r--r-- 1 root root   824 Sep 16 18:02 localhost_access_log.2018-09-16.txt
-rw-r--r-- 1 root root     0 Sep 16 05:49 manager.2018-09-16.log
 
#-> catalina.out實時日誌
[root@tomcat logs]# tail -f catalina.out 
16-Sep-2018 17:54:59.067 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory /app/apache-tomcat-8.0.27/webapps/docs has finished in 160 ms
16-Sep-2018 17:54:59.067 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory /app/apache-tomcat-8.0.27/webapps/examples
16-Sep-2018 17:55:00.002 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory /app/apache-tomcat-8.0.27/webapps/examples has finished in 935 ms
16-Sep-2018 17:55:00.002 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory /app/apache-tomcat-8.0.27/webapps/host-manager
16-Sep-2018 17:55:00.076 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory /app/apache-tomcat-8.0.27/webapps/host-manager has finished in 73 ms
16-Sep-2018 17:55:00.076 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory /app/apache-tomcat-8.0.27/webapps/manager
16-Sep-2018 17:55:00.095 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory /app/apache-tomcat-8.0.27/webapps/manager has finished in 19 ms
16-Sep-2018 17:55:00.116 INFO [main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler ["http-nio-8080"]
16-Sep-2018 17:55:00.194 INFO [main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler ["ajp-nio-8009"]
16-Sep-2018 17:55:00.197 INFO [main] org.apache.catalina.startup.Catalina.start Server startup in 2440 ms

3. Tomcat配置文件

3.1 Tomcat配置文件

[root@tomcat conf]# pwd
/app/tomcat/conf
[root@tomcat conf]# ll -h
total 212K
drwxr-xr-x 3 root root   23 Sep 16 05:49 Catalina
-rw------- 1 root root  13K Sep 28  2015 catalina.policy
-rw------- 1 root root 7.0K Sep 28  2015 catalina.properties
-rw------- 1 root root 1.6K Sep 28  2015 context.xml
-rw------- 1 root root 3.4K Sep 28  2015 logging.properties
-rw------- 1 root root 6.4K Sep 28  2015 server.xml          #主配置文件
-rw------- 1 root root 1.9K Sep 16 19:11 tomcat-users.xml    #tomcat管理用戶配置文件
-rw------- 1 root root 1.9K Sep 28  2015 tomcat-users.xsd
-rw------- 1 root root 164K Sep 28  2015 web.xml

3.2 Tomcat管理

測試功能,生產環境不推薦使用。

Tomcat管理功能用於對Tomcat自身以及部署在Tomcat上的應用進行管理的web應用。在默認狀況下是處於禁用狀態的。若是須要開啓這個功能,就須要配置管理用戶,即配置前面說過的 tomcat-users.xml 。vim

[root@tomcat ~]# vim /app/tomcat/conf/tomcat-users.xml
…………
<role rolename="manager-gui"/>
<role rolename="admin-gui"/>
<user username="tomcat" password="tomcat" roles="manager-gui,admin-gui"/>
</tomcat-users>  #→在此行前加入上面三行
[root@tomcat ~]# /app/tomcat/bin/shutdown.sh
[root@tomcat ~]# /app/tomcat/bin/startup.sh

70

3.3 Tomcat主配置文件server.xml詳解

3.3.1 server.xml組件類別

  • 頂級組件:位於整個配置的頂層,如server。
  • 容器類組件 :能夠包含其它組件的組件,如service、engine、host、context。
  • 鏈接器組件 :鏈接用戶請求至tomcat,如connector。
  • 被嵌套類組件:位於一個容器當中,不能包含其餘組件,如Valve、logger。

3.3.2 server.xml組件詳解

  • engine :核心容器組件,catalina引擎,負責經過connector接收用戶請求,並處理請求,將請求轉至對應的虛擬主機host。
  • host :相似於httpd中的虛擬主機,通常而言支持基於FQDN的虛擬主機。

-context :定義一個應用程序,是一個最內層的容器類組件(不能再嵌套)。配置context的主要目的指定對應對的webapp的根目錄,相似於httpd的alias,其還能爲webapp指定額外的屬性,如部署方式等。tomcat

  • connector:接收用戶請求,相似於httpd的listen配置監聽端口的。
  • service(服務):將connector關聯至engine,所以一個service內部能夠有多個connector,但只能有一個引擎engine。service內部有兩個connector,一個engine。所以,通常狀況下一個server內部只有一個service,一個service內部只有一個engine,但一個service內部能夠有多個connector。
  • server :表示一個運行於JVM中的tomcat實例。
  • Valve :閥門,攔截請求並在將其轉至對應的webapp前進行某種處理操做,能夠用於任何容器中,好比記錄日誌(access log valve)、基於IP作訪問控制(remote address filter valve)。
  • logger :日誌記錄器,用於記錄組件內部的狀態信息,能夠用於除context外的任何容器中。
  • realm :能夠用於任意容器類的組件中,關聯一個用戶認證庫,實現認證和受權。能夠關聯的認證庫有兩種:UserDatabaseRealm、MemoryRealm和JDBCRealm。
  • UserDatabaseRealm:使用JNDI自定義的用戶認證庫。
  • MemoryRealm:認證信息定義在tomcat-users.xml中。
  • JDBCRealm :認證信息定義在數據庫中,並經過JDBC鏈接至數據庫中查找認證用戶。

3.3.3 配置文件 server.xml 主詳解

<?xml version='1.0' encoding='utf-8'?>
#<Server>元素表明整個容器,是Tomcat實例的頂層元素.由org.apache.catalina.Server接口來定義.它包含一個<Service>元素.而且它不能作爲任何元素的子元素.
#
<Server port="8005" shutdown="SHUTDOWN">
  #port指定Tomcat監聽shutdown命令端口.終止服務器運行時,必須在Tomcat服務器所在的機器上發出shutdown命令.該屬性是必須的.
  <Listener className="org.apache.catalina.startup.VersionLoggerListener" />
  <Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />
  <Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" />
  <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" />
  <Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener" />
  <GlobalNamingResources>
    <Resource name="UserDatabase" auth="Container"
              type="org.apache.catalina.UserDatabase"
              description="User database that can be updated and saved"
              factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
              pathname="conf/tomcat-users.xml" />
  </GlobalNamingResources>
  #Service服務組件
  <Service name="Catalina">
    #connector:接收用戶請求,相似於httpd的listen配置監聽端口。
    #port     :指定服務器端要建立的端口號,並在這個端口監聽來自客戶端的請求。
    #address  :指定鏈接器監聽的地址,默認爲全部地址(即0.0.0.0)。
    #protocol :鏈接器使用的協議,支持HTTP和AJP。AJP(Apache Jserv Protocol)專用於tomcat與apache創建通訊的, 在httpd反向代理用戶請求至tomcat時使用(可見Nginx反向代理時不可用AJP協議)。
    #minProcessors:服務器啓動時建立的處理請求的線程數。
    #maxProcessors:最大能夠建立的處理請求的線程數。
    #enableLookups:若是爲true,則能夠經過調用request.getRemoteHost()進行DNS查詢來獲得遠程客戶端的實際主機名,若爲false則不進行DNS查詢,而是返回其ip地址。
    #redirectPort :指定服務器正在處理http請求時收到了一個SSL傳輸請求後重定向的端口號。
    #acceptCount  :指定當全部可使用的處理請求的線程數都被使用時,能夠放處處理隊列中的請求數,超過這個數的請求將不予處理。
    #connectionTimeout:指定超時的時間數(以毫秒爲單位)。
    <Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />
    <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
    #Engine,核心容器組件,catalina引擎,負責經過connector接收用戶請求,並處理請求,將請求轉至對應的虛擬主機host。defaultHost指定缺省的處理請求的主機名,它至少與其中的一個host元素的name屬性值是同樣的。
    <Engine name="Catalina" defaultHost="localhost">
      #Realm表示存放用戶名,密碼及role的數據庫
      <Realm className="org.apache.catalina.realm.LockOutRealm">
        <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
               resourceName="UserDatabase"/>
      </Realm>
      #Host,表示存放用戶名,密碼及role的數據庫。
      #name      :指定主機名。
      #appBase   :應用程序基本目錄,即存放應用程序的目錄.通常爲appBase="webapps" ,相對於CATALINA_HOME而言的,也能夠寫絕對路徑。
      #unpackWARs:若是爲true,則tomcat會自動將WAR文件解壓,不然不解壓,直接從WAR文件中運行應用程序。
      #autoDeploy:在tomcat啓動時,是否自動部署。
      #xmlValidation    :是否啓動xml的校驗功能,通常xmlValidation="false"。
      #xmlNamespaceAware:檢測名稱空間,通常xmlNamespaceAware="false"。
      <Host name="localhost"  appBase="webapps"
            unpackWARs="true" autoDeploy="true">
        <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
               prefix="localhost_access_log" suffix=".txt"
               pattern="%h %l %u %t &quot;%r&quot; %s %b" />
      </Host>
    </Engine>
  </Service>
</Server>
相關文章
相關標籤/搜索