Tomcat的安裝、部署和常用組件

Tomcat的安裝、部署和常用組件

===============================================================================

概述:

    本章將主要介紹Tomcat的安裝部署和常用組件,具體內容如下:

  • Tomcat的安裝及程序環境

    ·二進制程序包(binary)安裝啓動及程序環境

    ·rpm包的安裝啓動及程序環境

    ·Tomcat的配置文件

    ·JSP WebAPP的組織結構:

    ·webapp歸檔格式:

  • 部署(deploy)webapp的相關操作:

  • tomcat自帶的兩個管理應用程序;

    ·manager app

    ·host manager 

  • Tomcat常用組件的配置

===============================================================================

Tomcat的安裝及程序環境

 1.安裝Tomcat

Tomcat binary release:

  • # tar xf apache-tomcat-VERSION.tar.gz  -C /usr/local/

  • # cd /usr/local

  • # ln -sv apache-tomcat-VERSION  tomcat

Base Repo:

  • tomcat, tomcat-lib, tomcat-admin-webapps, tomcat-webapps, tomcat-docs-webapp

 2.Tomcat程序環境

二進制歸檔展開安裝的程序環境

tomcat的目錄結構

  • bin腳本,及啓動時用到的類;

  • conf:配置文件;

  • lib:庫文件,Java類庫,jar;

  • logs:日誌文件目錄;

  • temp:臨時文件目錄;

  • webapps:webapp的默認目錄;

  • work:工作目錄;

catalina.sh 啓動時的腳本會調用參數(start、stop、version,configtest)

wKiom1hT1ZaQNg1XAABhjODSW6A005.png

rpm包安裝的程序環境:

配置文件:

  • /etc/tomcat

webapps存放位置:/var/lib/tomcat/webapps/

  • examples

  • manager

  • host-manager

  • docs

Tomcat的配置文件

server.xml:

  • 主配置文件;

web.xml:

  • 每個webapp只有“部署”後才能被訪問,它的部署方式通常由web.xml進行定義,其存放位置爲WEB-INF/目錄中;此文件(主目錄下的)爲所有的webapps提供默認配置;

context.xml:

  • 每個web都可以專用的配置文件,它通常由專用的配置文件context.xml來定義,其存放位置爲WEB-INF/目錄中;此文件爲所有的webapps提供默認配置;

tomcat-users.xml

  • 用戶認證的賬號和密碼文件;

catalina.policy

  • 當使用-security選項啓動tomcat時,用於爲tomcat設置安全策略; 

catalina.properties:

  • Java屬性的定義文件,用於設定類加載器路徑,以及一些與JVM調優相關參數;

logging.properties:

  • 日誌系統相關的配置;

 3.JSP WebAPP的組織結構:

/: webapps的根目錄

index.jsp:主頁;

WEB-INF/:

  • 當前webapp的私有資源路徑;通常用於存儲當前webapp的web.xml和context.xml配置文件;不能通過網頁進行訪問

META-INF/:

  • 類似於WEB-INF/;

classes/:

  • 類文件,當前webapp所提供的類;

lib/:

  • 類文件,當前webapp所提供的類,被打包爲jar格式;

 4.webapp歸檔格式:

  • .war:webapp(多數情況下的歸檔文件)

  • .jar:EJB的類打包文件;

  • .rar:資源適配器類打包文件;

  • .ear:企業級webapp;

二進制程序包(binary)安裝啓動演示:

 1.在官方下載tomcat的二進制程序包,並解壓到/usr/local目錄下,創建軟連接

[root@centos7 tomcat]# ls
apache-tomcat-8.0.23.tar.gz # 下載的二進制程序包

[root@centos7 tomcat]# tar xf apache-tomcat-8.0.23.tar.gz -C /usr/local #解壓到/usr/local目錄中
[root@centos7 tomcat]# cd /usr/local
[root@centos7 local]# ll
total 0
drwxr-xr-x   9 root root 149 Dec 16 15:53 apache-tomcat-8.0.23
drwxr-xr-x.  2 root root   6 Aug 12  2015 bin
drwxr-xr-x.  2 root root   6 Aug 12  2015 etc
drwxr-xr-x.  2 root root   6 Aug 12  2015 games
drwxr-xr-x  14 root root 151 Aug 24 22:19 http2
drwxr-xr-x.  2 root root   6 Aug 12  2015 include
drwxr-xr-x.  2 root root   6 Aug 12  2015 lib
drwxr-xr-x.  2 root root   6 Aug 12  2015 lib64
drwxr-xr-x.  2 root root   6 Aug 12  2015 libexec
drwxr-xr-x.  2 root root   6 Aug 12  2015 sbin
drwxr-xr-x.  5 root root  46 Jul 25 23:57 share
drwxr-xr-x.  2 root root   6 Aug 12  2015 src

[root@centos7 local]# ln -sv apache-tomcat-8.0.23 tomcat # 創建軟連接
‘tomcat’ -> ‘apache-tomcat-8.0.23’
[root@centos7 local]# ll
total 0
drwxr-xr-x   2 root root   6 Dec 16 15:54 apache-tomcat-8.0.23
drwxr-xr-x.  2 root root   6 Aug 12  2015 bin
drwxr-xr-x.  2 root root   6 Aug 12  2015 etc
drwxr-xr-x.  2 root root   6 Aug 12  2015 games
drwxr-xr-x  14 root root 151 Aug 24 22:19 http2
drwxr-xr-x.  2 root root   6 Aug 12  2015 include
drwxr-xr-x.  2 root root   6 Aug 12  2015 lib
drwxr-xr-x.  2 root root   6 Aug 12  2015 lib64
drwxr-xr-x.  2 root root   6 Aug 12  2015 libexec
drwxr-xr-x.  2 root root   6 Aug 12  2015 sbin
drwxr-xr-x.  5 root root  46 Jul 25 23:57 share
drwxr-xr-x.  2 root root   6 Aug 12  2015 src
lrwxrwxrwx   1 root root  20 Dec 16 15:54 tomcat -> apache-tomcat-8.0.23

 2.查看Tomcat程序環境的組成結構

[root@centos7 local]# cd tomcat/
[root@centos7 tomcat]# ll
total 96
drwxr-xr-x 2 root root  4096 Dec 16 16:01 bin   # 二進制程序,因爲是java程序,所以主要爲腳本
drwxr-xr-x 2 root root  4096 May 19  2015 conf  # 配置文件目錄
drwxr-xr-x 2 root root  4096 Dec 16 16:01 lib   # 庫文件,打包爲.jar文件
-rw-r--r-- 1 root root 56977 May 19  2015 LICENSE
drwxr-xr-x 2 root root     6 May 19  2015 logs  # 日誌文件
-rw-r--r-- 1 root root  1397 May 19  2015 NOTICE
-rw-r--r-- 1 root root  6741 May 19  2015 RELEASE-NOTES
-rw-r--r-- 1 root root 16204 May 19  2015 RUNNING.txt
drwxr-xr-x 2 root root    29 Dec 16 16:01 temp      # 臨時文件
drwxr-xr-x 7 root root    76 May 19  2015 webapps  # 應用程序的根目錄
drwxr-xr-x 2 root root     6 May 19  2015 work     # 工作目錄。

[root@centos7 tomcat]# ls bin/
bootstrap.jar  catalina-tasks.xml            configtest.bat  digest.bat        setclasspath.sh  startup.bat      tomcat-native.tar.gz  version.bat
catalina.bat   commons-daemon.jar            configtest.sh   digest.sh         shutdown.bat     startup.sh       tool-wrapper.bat      version.sh
catalina.sh    commons-daemon-native.tar.gz  daemon.sh       setclasspath.bat  shutdown.sh      tomcat-juli.jar  tool-wrapper.sh

[root@centos7 tomcat]# ls conf/
catalina.policy  catalina.properties  context.xml  logging.properties  server.xml  tomcat-users.xml  tomcat-users.xsd  web.xml

[root@centos7 tomcat]# ls lib/
annotations-api.jar  catalina.jar              ecj-4.4.2.jar  jasper.jar       tomcat-api.jar     tomcat-i18n-es.jar  tomcat-jdbc.jar  tomcat-util-scan.jar
catalina-ant.jar     catalina-storeconfig.jar  el-api.jar     jsp-api.jar      tomcat-coyote.jar  tomcat-i18n-fr.jar  tomcat-jni.jar   tomcat-websocket.jar
catalina-ha.jar      catalina-tribes.jar       jasper-el.jar  servlet-api.jar  tomcat-dbcp.jar    tomcat-i18n-ja.jar  tomcat-util.jar  websocket-api.jar

[root@centos7 tomcat]# ls webapps/
docs  examples  host-manager  manager  ROOT

[root@centos7 tomcat]# ls work/ # 每一個jsp程序在運行前要先轉化爲servlet代碼,然後編譯。整個中間過程的存放位置

 3.使用catalina.sh腳本調用version參數查看版本

[root@centos7 tomcat]# bin/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/latest
Using CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Server version: Apache Tomcat/8.0.23
Server built:   May 19 2015 14:58:38 UTC
Server number:  8.0.23.0
OS Name:        Linux
OS Version:     3.18.41-1.0-Taolinux
Architecture:   amd64
JVM Version:    1.8.0_25-b17
JVM Vendor:     Oracle Corporation

 4.tomcat的啓用最好用普通用戶,所以創建tomcat用戶,並修改目錄的屬主和屬組,啓動服務,如下:

[root@centos7 tomcat]# useradd -r tomcat
[root@centos7 tomcat]# chown -R tomcat.tomcat /usr/local/tomcat/*
[root@centos7 tomcat]# ll
total 96
drwxr-xr-x 2 tomcat tomcat  4096 Dec 16 16:01 bin
drwxr-xr-x 2 tomcat tomcat  4096 May 19  2015 conf
drwxr-xr-x 2 tomcat tomcat  4096 Dec 16 16:01 lib
-rw-r--r-- 1 tomcat tomcat 56977 May 19  2015 LICENSE
drwxr-xr-x 2 tomcat tomcat     6 May 19  2015 logs
-rw-r--r-- 1 tomcat tomcat  1397 May 19  2015 NOTICE
-rw-r--r-- 1 tomcat tomcat  6741 May 19  2015 RELEASE-NOTES
-rw-r--r-- 1 tomcat tomcat 16204 May 19  2015 RUNNING.txt
drwxr-xr-x 2 tomcat tomcat    29 Dec 16 16:01 temp
drwxr-xr-x 7 tomcat tomcat    76 May 19  2015 webapps
drwxr-xr-x 2 tomcat tomcat     6 May 19  2015 work

# 使用tomcat用戶啓動服務
[root@centos7 tomcat]# su - tomcat -c '/usr/local/tomcat/bin/catalina.sh start'
su: warning: cannot change directory to /home/tomcat: No such file or directory
Using CATALINA_BASE:   /usr/local/tomcat
Using CATALINA_HOME:   /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME:        /usr/java/latest
Using CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Tomcat started. # 提示啓動成功

# 查看端口8080,8009
[root@centos7 tomcat]# ss -tnl
State      Recv-Q Send-Q     Local Address:Port                    Peer Address:Port              
LISTEN     0      25                     *:514                                *:*                  
LISTEN     0      128                    *:22                                 *:*                  
LISTEN     0      128            127.0.0.1:631                                *:*                  
LISTEN     0      100            127.0.0.1:25                                 *:*                  
LISTEN     0      128            127.0.0.1:6010                               *:*                  
LISTEN     0      128            127.0.0.1:6011                               *:*                  
LISTEN     0      25                    :::514                               :::*                  
LISTEN     0      100                   :::8009                              :::*                  
LISTEN     0      100                   :::8080                              :::*                  
LISTEN     0      128                   :::22                                :::*                  
LISTEN     0      128                  ::1:631                               :::*                  
LISTEN     0      100                  ::1:25                                :::*                  
LISTEN     0      128                  ::1:6010                              :::*                  
LISTEN     0      128                  ::1:6011                              :::*

 5.瀏覽器訪問如下:

wKiom1hT2RDDFNwQAALenurnkyM225.png


  6.編輯/etc/profile.d/配置文件,輸出CATALINA_BASE環境變量

[root@centos7 ~]# vim /etc/profile.d/tomcat.sh # 添加環境變量
 export CATALINA_BASE=/usr/local/tomcat
 export PATH=$CATALINA_BASE/bin:$PATH
[root@centos7 ~]# . /etc/profile.d/tomcat.sh  # 重讀配置文件生效
 
[root@centos7 ~]# 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/latest
Using CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Server version: Apache Tomcat/8.0.23
Server built:   May 19 2015 14:58:38 UTC
Server number:  8.0.23.0
OS Name:        Linux
OS Version:     3.18.41-1.0-Taolinux
Architecture:   amd64
JVM Version:    1.8.0_25-b17
JVM Vendor:     Oracle Corporation

--------------------------------------------------------------------------------

Base Repo安裝啓動演示:

 1.安裝程序包

[root@centos7 ~]# yum list all tomcat* # 查看tomcat相關程序包如下:
Available Packages
tomcat.noarch                                7.0.54-2.el7_1                CDROM
tomcat-admin-webapps.noarch                  7.0.54-2.el7_1                CDROM
tomcat-docs-webapp.noarch                    7.0.54-2.el7_1                CDROM
tomcat-el-2.2-api.noarch                     7.0.54-2.el7_1                CDROM
tomcat-javadoc.noarch                        7.0.54-2.el7_1                CDROM
tomcat-jsp-2.2-api.noarch                    7.0.54-2.el7_1                CDROM
tomcat-jsvc.noarch                           7.0.54-2.el7_1                CDROM
tomcat-lib.noarch                            7.0.54-2.el7_1                CDROM
tomcat-native.x86_64                         1.1.34-1.el7                  epel 
tomcat-servlet-3.0-api.noarch                7.0.54-2.el7_1                CDROM
tomcat-webapps.noarch                        7.0.54-2.el7_1                CDROM
tomcatjss.noarch                             7.1.2-1.el7                   CDROM

# 安裝程序包,這裏會自動解決依賴關係
[root@centos7 ~]# yum install -y tomcat tomcat-lib tomcat-admin-webapps tomcat-webapps tomcat-docs-webapp

  2.查看程序環境

[root@centos7 ~]# rpm -ql tomcat
/etc/logrotate.d/tomcat
/etc/sysconfig/tomcat
/etc/tomcat # 配置文件目錄
/etc/tomcat/Catalina
/etc/tomcat/Catalina/localhost
/etc/tomcat/catalina.policy
/etc/tomcat/catalina.properties
/etc/tomcat/context.xml
/etc/tomcat/log4j.properties
/etc/tomcat/logging.properties
/etc/tomcat/server.xml
/etc/tomcat/tomcat-users.xml
/etc/tomcat/tomcat.conf
/etc/tomcat/web.xml
/usr/bin/tomcat-digest
/usr/bin/tomcat-tool-wrapper
/usr/lib/systemd/system/tomcat.service  # Until File文件
/usr/lib/systemd/system/[email protected]
/usr/lib/tmpfiles.d/tomcat.conf
/usr/libexec/tomcat
/usr/libexec/tomcat/functions
/usr/libexec/tomcat/preamble
/usr/libexec/tomcat/server
/usr/sbin/tomcat          # 程序文件
/usr/share/doc/tomcat-7.0.54
/usr/share/doc/tomcat-7.0.54/LICENSE
/usr/share/doc/tomcat-7.0.54/NOTICE
/usr/share/doc/tomcat-7.0.54/RELEASE-NOTES
/usr/share/tomcat
/usr/share/tomcat/bin/bootstrap.jar
/usr/share/tomcat/bin/catalina-tasks.xml
/usr/share/tomcat/conf
/usr/share/tomcat/lib
/usr/share/tomcat/logs
/usr/share/tomcat/temp
/usr/share/tomcat/webapps
/usr/share/tomcat/work
/var/cache/tomcat
/var/cache/tomcat/temp
/var/cache/tomcat/work
/var/lib/tomcat
/var/lib/tomcat/webapps
/var/lib/tomcats
/var/log/tomcat
/var/log/tomcat/catalina.out
/var/run/tomcat.pid

[root@centos7 ~]# ll /etc/tomcat/  # 配置文件
total 208
drwxrwxr-x 3 root   tomcat     22 Dec 16 16:27 Catalina
-rw-rw-r-- 1 tomcat tomcat  12257 May 13  2015 catalina.policy
-rw-rw-r-- 1 tomcat tomcat   6294 May 13  2015 catalina.properties
-rw-rw-r-- 1 tomcat tomcat   1394 May 13  2015 context.xml
-rw-rw-r-- 1 tomcat tomcat    547 May 13  2015 log4j.properties
-rw-rw-r-- 1 tomcat tomcat   3288 May 13  2015 logging.properties
-rw-rw-r-- 1 tomcat tomcat   6536 May 13  2015 server.xml
-rw-rw-r-- 1 tomcat tomcat   1568 May 13  2015 tomcat.conf
-rw-rw---- 1 tomcat tomcat   1998 May 13  2015 tomcat-users.xml
-rw-rw-r-- 1 tomcat tomcat 163385 May 13  2015 web.xml

[root@centos7 ~]# ll /var/lib/tomcat  # 查看webapps文件
total 0
drwxrwxr-x 8 root tomcat 89 Dec 16 16:27 webapps
[root@centos7 ~]# ll /var/lib/tomcat/webapps/
total 8
drwxr-xr-x 14 root   root   4096 Dec 16 16:27 docs
drwxr-xr-x  8 tomcat tomcat  120 Dec 16 16:27 examples
drwxr-xr-x  5 root   tomcat   82 Dec 16 16:27 host-manager
drwxr-xr-x  5 root   tomcat   97 Dec 16 16:27 manager
drwxr-xr-x  3 tomcat tomcat 4096 Dec 16 16:27 ROOT
drwxr-xr-x  5 tomcat tomcat   81 Dec 16 16:27 sample

 3.啓動tomcat並查看端口8080

[root@centos7 ~]# systemctl start tomcat.service  # 直接啓動tomcat服務

[root@centos7 ~]# ss -tnl  # 查看監聽端口8080,8009
State      Recv-Q Send-Q     Local Address:Port                    Peer Address:Port              
LISTEN     0      128                    *:22                                 *:*                  
LISTEN     0      128            127.0.0.1:631                                *:*                  
LISTEN     0      100            127.0.0.1:25                                 *:*                  
LISTEN     0      128            127.0.0.1:6010                               *:*                  
LISTEN     0      100                   :::8009                              :::*                  
LISTEN     0      100                   :::8080                              :::*                  
LISTEN     0      128                   :::22                                :::*                  
LISTEN     0      128                  ::1:631                               :::*                  
LISTEN     0      100                  ::1:25                                :::*                  
LISTEN     0      128                  ::1:6010                              :::*

 4.在瀏覽器中訪問如下:

wKiom1hT2eSAl758AALcSXArK5M233.png




Tomcat部署(deploy)

 1.部署(deploy)webapp的相關操作:

deploy:

  • 將webapp的源文件放置於目標目錄(網頁程序文件存放位置的目錄),配置tomcat服務器能夠基於web.xml和context.xml文件中定義的路徑來訪問此webapp;

  • 將其特有的類和依賴的類通過class loader裝載至JVM;

部署有兩種方式:

自動部署:auto deploy

手動部署:

  • 冷部署:停止Tomcat,把webapp複製到指定的位置,而後才啓動tomcat;

  • 熱部署:在不停止tomcat的前提下進行部署;

      部署工具:manager、ant腳本、tcd(tomcat client deployer)等;

undeploy:反部署,

  • 停止webapp,並從tomcat實例上卸載webapp;

start:啓動處於停止狀態的webapp;

stop:停止webapp,不再向用戶提供服務;其類依然在jvm上;

redeploy:重新部署;

演示:手動提供一測試類應用,並冷部署:

 1.首先停止tomcat服務,實施冷部署

[root@centos7 ~]# su - tomcat -c '/usr/local/tomcat/bin/catalina.sh stop'
su: warning: cannot change directory to /home/tomcat: No such file or directory
Using CATALINA_BASE:   /usr/local/tomcat
Using CATALINA_HOME:   /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME:        /usr/java/latest
Using CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar

 2.在webapps的源文件中創建存放網頁程序文件的目錄test(創建webapp特有的目錄結構),並提供jsp格式的測試頁面文件,如下:

[root@centos7 ~]# mkdir -pv /usr/local/tomcat/webapps/test/{classes,lib,WEB-INF}
mkdir: created directory ‘/usr/local/tomcat/webapps/test’
mkdir: created directory ‘/usr/local/tomcat/webapps/test/classes’
mkdir: created directory ‘/usr/local/tomcat/webapps/test/lib’
mkdir: created directory ‘/usr/local/tomcat/webapps/test/WEB-INF’
[root@centos7 ~]# vim /usr/local/tomcat/webapps/test/index.jsp
<%@ page language="java" %>
<%@ page import="java.util.*" %>
<html>
    <head>
       <title>Test Page</title>
    </head>
    <body>
       <% out.println("hello world");   # 測試頁面
       %>
    </body>
</html>

  3.部署完畢,重新啓動tomcat服務,瀏覽器訪問如下:

wKioL1hkiX_AcsEeAABI8lJQvOM712.png

 4.查看工作過程可以通過查看work目錄,如下:

[root@centos7 tomcat]# tree work/
work/
└── Catalina
    └── localhost
        ├── docs
        ├── examples
        ├── host-manager
        ├── manager
        ├── ROOT
        │   └── org
        │       └── apache
        │           └── jsp
        │               ├── index_jsp.class
        │               └── index_jsp.java
        └── test
            └── org
                └── apache
                    └── jsp
                        ├── index_jsp.class # 源程序編譯後的字節碼文件
                        └── index_jsp.java  # 通過jasper將jsp代碼翻譯爲servlet代碼(源程序文件)

14 directories, 4 files



2.tomcat自帶的兩個管理應用程序:

manager app

  • webapp管理工具

host-manager

  • Vhosts(虛擬主機)管理工具

 1.在Tomcat訪問頁面中,點擊manager App,提示登錄信息;點擊取消登錄後,會提示未經認證不允許登錄,並提供登錄方法,如下:

wKioL1hk-NuigBlQAAGJF8KGtXY487.png

wKiom1hk-NyS_4wIAAD0gVSsl24109.png


 2.根據提示,要想使用manager app管理部署,就需要在/conf/tomcat-user.xml文件中添加一個manager-gui的角色,並創建用戶和密碼,且要求用戶屬於manager-gui的角色,如下:

[root@centos7 ~]# cd /usr/local/tomcat
[root@centos7 tomcat]# ls
bin  conf  lib  LICENSE  logs  NOTICE  RELEASE-NOTES  RUNNING.txt  temp  webapps  work
[root@centos7 tomcat]# cd conf
[root@centos7 conf]# ls
Catalina  catalina.policy  catalina.properties  context.xml  logging.properties  server.xml  tomcat-
[root@centos7 conf]# vim tomcat-users.xml

wKioL1hlIZbSFPqPAAAOuznD9b8329.png 

 3.重啓tomcat服務

[root@centos7 conf]# su - tomcat -c 'catalina.sh stop'
su: warning: cannot change directory to /home/tomcat: No such file or directory
Using CATALINA_BASE:   /usr/local/tomcat
Using CATALINA_HOME:   /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME:        /usr/java/latest
Using CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
[root@centos7 conf]# ss -tnl
State       Recv-Q Send-Q                                      Local Address:Port                                                     Peer Address:Port              
LISTEN      0      128                                                     *:22                                                                  *:*                  
LISTEN      0      128                                             127.0.0.1:631                                                                 *:*                  
LISTEN      0      100                                             127.0.0.1:25                                                                  *:*                  
LISTEN      0      128                                             127.0.0.1:6011                                                                *:*                  
LISTEN      0      25                                                      *:514                                                                 *:*                  
LISTEN      0      128                                                    :::22                                                                 :::*                  
LISTEN      0      128                                                   ::1:631                                                                :::*                  
LISTEN      0      100                                                   ::1:25                                                                 :::*                  
LISTEN      0      128                                                   ::1:6011                                                               :::*                  
LISTEN      0      25                                                     :::514                                                                :::*                  
[root@centos7 conf]# su - tomcat -c 'catalina.sh start'
su: warning: cannot change directory to /home/tomcat: No such file or directory
Using CATALINA_BASE:   /usr/local/tomcat
Using CATALINA_HOME:   /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME:        /usr/java/latest
Using CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Tomcat started.
[root@centos7 conf]# ss -tnl
State       Recv-Q Send-Q                                      Local Address:Port                                                     Peer Address:Port              
LISTEN      0      128                                                     *:22                                                                  *:*                  
LISTEN      0      128                                             127.0.0.1:631                                                                 *:*                  
LISTEN      0      100                                             127.0.0.1:25                                                                  *:*                  
LISTEN      0      128                                             127.0.0.1:6011                                                                *:*                  
LISTEN      0      25                                                      *:514                                                                 *:*                  
LISTEN      0      100                                                    :::8009                                                               :::*                  
LISTEN      0      100                                                    :::8080                                                               :::*                  
LISTEN      0      128                                                    :::22                                                                 :::*                  
LISTEN      0      128                                                   ::1:631                                                                :::*                  
LISTEN      0      100                                                   ::1:25                                                                 :::*                  
LISTEN      0      128                                                   ::1:6011                                                               :::*                  
LISTEN      0      25                                                     :::514                                                                :::*

 4.在瀏覽器中再次請求訪問manager App輸入用戶名tomcat,密碼tomcat登錄後就可以進行部署了,如下:

wKiom1hk_aviZGkkAAGO9pGIquc821.png

wKiom1hk_m-SCL4TAADIM3PPPFg451.png

wKioL1hk_m_DEmZyAACRotb78Gw197.png

wKioL1hlAP7R9wr4AABY6UJY7pA363.png

 5.我們也可以點擊Server Statua查案當前服務器狀態,如下:

wKioL1hlAsXzPKW8AADlJjErg5Y288.png

wKiom1hlAsbw2vxzAABkgRXF5_Y432.png

wKioL1hlAsbQABRIAABFa6ICB6w277.png

Tomcat的常用組件配置:(conf/server.xml)

 每個組件幾乎都是通過特有的類來實現,而且有的組件還不止一種實現方式

 1.Server:

代表tomcat instance(實例),即表現出的一個jvm進程;監聽在8005端口,只接收“SHUTDOWN”。各server監聽的端口不能相同,因此,在同一物理主機啓動多個實例時,需要修改其監聽端口爲不同的端口;

wKiom1hlDseQc35pAAAJGeYIZQ4628.png

 2.Service:

用於實現將一個或多個connector組件關聯至一個engine組件;

wKioL1hlFKHDlUudAAAF8YEGgUo242.png

  3.Connector(連接器)組件:接入前端用戶請求

進入tomcat的請求可分爲兩類:

standalone:

  • Tomcat作爲獨立的應用程序服務器,請求來自於客戶端瀏覽器;

可用的連接器:

  • httpd,https

由其它的web server反代:

  • Tomcat作爲應用程序服務器,請求將來自於前端的反代服務器;

可用的連接器:

  • nginx --> http/https connector --> tomcat 

  • httpd --> http/https/ajp connector --> tomcat

屬性:

  • address:                     監聽的IP地址;默認爲本機所有可用地址;

  • maxThreads:              最大併發連接數,默認爲150;

  • port:                           監聽的端口;

  • protocol:                    連接器使用的協議,一般爲HTTP/1.1或AJP/1.3;

  • redirecport:                重定向到的端口;

  • connectionTimeout:  連接的超時時長,單位爲毫秒,默認爲60000;

  • enableLookups:         是否啓用DNS查詢功能;

  • acceptCount:             定義等待隊列的最大長度;

  • scheme:                     客戶端請求時對應映射的協議的類型;

  • debug:                       連接器的調試功能

  • secure:                       安全模式(ssl)

  • clientAuth:                 是否驗證客戶端證書;

  • sslProtocol:                安全證書的協議版本,建議使用TLS;

wKiom1hlHh_iOrn2AABkn2BoCws450.png


 4.Engine組件:

作用:

  • Servlet實例,即servlet引擎,其內部可以有一個或多個host組件來定義站點; 通常需要通過defaultHost來定義默認的虛擬主機;

屬性:

  • name=

  • defaultHost="localhost"

  • jvmRoute=

wKioL1hlIBDQ4V2wAAAHiaq7LoY558.png

 5.Host組件:

作用:

  • 位於engine內部用於接收請求並進行相應處理的主機或虛擬主機;

屬性:

 appBase:

  • 此Host的webapps的默認存放目錄,指存放非歸檔的web應用程序的目錄或歸檔的WAR文件目錄路徑;可以使用基於$CATALINA_BASE變量所定義的路徑的相對路徑;

 autoDeploy:

  • 在Tomcat處於運行狀態時,將某webapp放置於appBase所定義的目錄中時,是否自動將其部署至tomcat;

unpackWARs:

  • 在啓用webapps時,是否對WAR格式的歸檔文件先進行展開,默認爲ture;

wKioL1hlzfOjhGNuAAAMHZASrBo833.png

演示:定義虛擬主機

1.編輯/usr/local/tomcat/conf/server.xml再添加一個主機名爲node1.taotao.com的虛擬主機,如下:

wKiom1hl0p_xNXP5AABpkM4D8hc648.png


 2.創建相應的目錄,並提供測試頁面要放在ROOT目錄之下,如下:

[root@centos7 tomcat]# mkdir -pv /data/webapps/ROOT/{classes,lib,WEB-INF,META-INF}
mkdir: created directory ‘/data/webapps’
mkdir: created directory ‘/data/webapps/ROOT’
mkdir: created directory ‘/data/webapps/ROOT/classes’
mkdir: created directory ‘/data/webapps/ROOT/lib’
mkdir: created directory ‘/data/webapps/ROOT/WEB-INF’
mkdir: created directory ‘/data/webapps/ROOT/META-INF’

[root@centos7 tomcat]# vim /data/webapps/ROOT/index.jsp 
 <%@ page language="java" %>
 <%@ page import="java.util.*" %>
 <html>
    <head>
        <title>Test Page</title>
    </head>
    <body>
        <% out.println("hello world from node1");
        %>
    </body>
 </html>

 3.停止tomcat服務,檢測語法,沒問題然後重啓tomcat服務,如下:

[root@centos7 tomcat]# su - tomcat -c 'catalina.sh stop'
su: warning: cannot change directory to /home/tomcat: No such file or directory
Using CATALINA_BASE:   /usr/local/tomcat
Using CATALINA_HOME:   /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME:        /usr/java/latest
Using CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar

[root@centos7 tomcat]# catalina.sh configtest  # 語法檢測
Using CATALINA_BASE:   /usr/local/tomcat
Using CATALINA_HOME:   /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME:        /usr/java/latest
Using CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Dec 30, 2016 11:30:38 AM org.apache.catalina.startup.VersionLoggerListener log
INFO: Server version:        Apache Tomcat/8.0.23
Dec 30, 2016 11:30:38 AM org.apache.catalina.startup.VersionLoggerListener log
INFO: Server built:          May 19 2015 14:58:38 UTC
Dec 30, 2016 11:30:38 AM org.apache.catalina.startup.VersionLoggerListener log
INFO: Server number:         8.0.23.0
Dec 30, 2016 11:30:38 AM org.apache.catalina.startup.VersionLoggerListener log
INFO: CATALINA_BASE:         /usr/local/apache-tomcat-8.0.23
Dec 30, 2016 11:30:38 AM org.apache.catalina.startup.VersionLoggerListener log
INFO: CATALINA_HOME:         /usr/local/apache-tomcat-8.0.23
Dec 30, 2016 11:30:38 AM org.apache.catalina.startup.VersionLoggerListener log
INFO: Command line argument: -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager
Dec 30, 2016 11:30:38 AM org.apache.catalina.startup.VersionLoggerListener log
INFO: Command line argument: -Djava.endorsed.dirs=/usr/local/tomcat/endorsed
Dec 30, 2016 11:30:38 AM org.apache.catalina.startup.VersionLoggerListener log
INFO: Command line argument: -Dcatalina.base=/usr/local/tomcat
Dec 30, 2016 11:30:38 AM org.apache.catalina.startup.VersionLoggerListener log
INFO: Command line argument: -Dcatalina.home=/usr/local/tomcat
Dec 30, 2016 11:30:38 AM org.apache.catalina.startup.VersionLoggerListener log
INFO: Command line argument: -Djava.io.tmpdir=/usr/local/tomcat/temp
Dec 30, 2016 11:30:38 AM org.apache.catalina.core.AprLifecycleListener lifecycleEvent
INFO: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: /usr/java/packages/lib/amd64:/usr/lib64:/lib64:/lib:/usr/lib
Dec 30, 2016 11:30:38 AM org.apache.coyote.AbstractProtocol init
INFO: Initializing ProtocolHandler ["http-nio-8080"]
Dec 30, 2016 11:30:38 AM org.apache.tomcat.util.net.NioSelectorPool getSharedSelector
INFO: Using a shared selector for servlet write/read
Dec 30, 2016 11:30:38 AM org.apache.coyote.AbstractProtocol init
INFO: Initializing ProtocolHandler ["ajp-nio-8009"]
Dec 30, 2016 11:30:38 AM org.apache.tomcat.util.net.NioSelectorPool getSharedSelector
INFO: Using a shared selector for servlet write/read
Dec 30, 2016 11:30:38 AM org.apache.catalina.startup.Catalina load
INFO: Initialization processed in 1408 ms

[root@centos7 tomcat]# su - tomcat -c 'catalina.sh start' # 啓動服務
su: warning: cannot change directory to /home/tomcat: No such file or directory
Using CATALINA_BASE:   /usr/local/tomcat
Using CATALINA_HOME:   /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME:        /usr/java/latest
Using CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Tomcat started.

 4.找一臺能夠解析node1的主機測試,發現可以正常訪問定義的虛擬主機,如下:

[root@centos7 ~]# curl http://node1.taotao.com:8080


<html>
   <head>
       <title>Test Page</title>
   </head>
   <body>
       hello world from node1

   </body>
</html>

 5.除此之外,我們也可以在tomcat的頁面中通過Host Manager進行管理,管理之前同Manager App一樣需要首先添加角色,並使用戶屬於此角色,如下,編輯/usr/local/tomcat/conf/tomcat/users.xml

wKioL1hl20CB05RsAAAUG0OnY40442.png

   重啓tomcat服務,然後再次訪問就可以看到虛擬主機的管理界面額了,如下:

wKiom1hl3HTRiR_6AADYT_S3Sjc536.png

wKioL1hl3HXxylLTAABDETmUIV8933.png

 6.Context組件:

作用:

  • Context在某些意義上類似於apache中的路徑別名,一個Context定義用於標識tomcat實例中一個Web應用程序;

屬性:

docBase:

  • 相應web應用程序的存放位置;也可以使用相對路徑,起始路徑爲此Contaxt所屬Host中appBase定義的路徑;切記,docBase的路徑名不能與相應的Host中appBase中定義的路徑名有包含關係,比如:appBase爲deploy,而docBase絕不能爲deploy-bb類的名字;

path:

  • 相對於web服務器根路徑而言的URI;如果爲空"",則表示爲此webapp的根路徑;如果context定義在一個單獨的xml文件中,此屬性不需要定義;

reloadable:

  • 是否允許重新加載此context相關的Wen應用程序的類;默認爲false;

示例:

wKiom1jRRZijeUPgAAAOQqtsiUw336.png

演示:定義Context標識tomcat實例中一個web應用程序
 1.編輯配置文件conf/server.xml在上例中定義個Host中定義Context如下:

wKioL1hl6eqBDA27AAAfXzNqGcc031.png

  2.爲testapp提供相關目錄及測試頁面,如下:

[root@centos7 tomcat]# cp -r /data/webapps/ROOT/ /data/webapps/testapp
[root@centos7 tomcat]# vim /data/webapps/testapp/index.jsp 
 <%@ page language="java" %>
 <%@ page import="java.util.*" %>
 <html>
    <head>
        <title>Test Page for Context</title> 
    </head>
    <body>
        <% out.println("hello world from /data/webapps/testapp");
        %>
    </body>
 </html>

 3.重啓tomcat服務,在能夠解析node1的主機上使用curl請求,可以正常訪問web資源,如下:

[root@centos7 ~]# curl http://node1.taotao.com:8080/test/


<html>
   <head>
       <title>Test Page for Context</title> 
   </head>
   <body>
       hello world from /data/webapps/testapp

   </body>
</html>

 

 7.Valve組件:

作用:

  • Value組件類似於過濾器,它可以工作於Engine和Host/Context之間、Host和Context之間以及Context和Web應用程序的某資源之間。一個容器可以建多個Value,而且Value定義的次序也決定了他們生效的次序。

Valve存在多種類型:

  • 定義訪問日誌:org.apache.catalina.valves.AccessLogValve

  • 定義基於遠程地址的訪問控制:org.apache.catalina.valves.RemoteAddrValve 

  • 定義基於主機名的訪問控制:org.apache.catalina.valves.RemoteHostValve 

wKioL1hmIHKihK_TAAAVoyxNg4M874.png

RemoteHostValve 和RemoteAddrValve 

  • 可以分別用來實現基於主機名稱和ip地址的訪問控制,控制本身可通過allow或deny來進行定義,這點類似於Apache的訪問控制功能;

相關屬性定義:

className:

  • 相關的java實現的類名,相應於分別應該爲org.apache.catalina.valves.RemoteHostValve org.apache.catalina.valves.RemoteHostValve ;

allow:

  • 以逗號分開的允許訪問的IP地址列表,支持正則表達式,因此,點號“.”用於IP地址時需要轉義;僅定義allow項時,非明確allow的地址均被deny;

deny:

  • 以逗號分開的禁止訪問的IP地址列表,支持正字表達式,使用方式同allow

wKioL1hmMNbTrPGXAAAM52xZw3I329.png

演示1:定義訪問日誌
  1.編輯conf/server.xml在之前定義的虛擬主機node1.taotao.com上定義訪問日誌,如下:

wKioL1hmJzzioD_rAAAttA39eKc640.png

 2.重啓tomcat服務,訪問虛擬主機,並查看在/usr/local/tomcat/logs中查看定義的訪問日誌,如下:

# 重啓tomcat服務
[root@centos7 conf]# su - tomcat -c 'catalina.sh stop'

[root@centos7 conf]# su - tomcat -c 'catalina.sh configtest'

[root@centos7 conf]# su - tomcat -c 'catalina.sh start'

# 訪問此虛擬主機的web資源
[root@centos7 ~]# curl http://node1.taotao.com:8080


<html>
   <head>
       <title>Test Page</title>
   </head>
   <body>
       hello world from /data/webapps

   </body>
</html>
[root@centos7 ~]# curl http://node1.taotao.com:8080/test/


<html>
   <head>
       <title>Test Page for Context</title> 
   </head>
   <body>
       hello world from /data/webapps/testapp

   </body>
</html>

# 查看訪問日誌
[root@centos7 logs]# cat node1_access_log.2016-12-30.log 
192.168.1.113 - - [30/Dec/2016:16:58:54 +0800] "GET / HTTP/1.1" 200 130
192.168.1.113 - - [30/Dec/2016:16:59:40 +0800] "GET /test/ HTTP/1.1" 200 151
192.168.1.113 - - [30/Dec/2016:16:59:45 +0800] "GET / HTTP/1.1" 200 130

演示2:定義基於遠程IP的訪問控制

  1.編輯conf/server.xml在之前定義的虛擬主機node1.taotao.com的Context中定義禁止192.168.1.112主機訪問,如下:

wKioL1hmL-GiFWdeAAA9iSstMrc340.png

    2.重啓tomcat服務,訪問虛擬主機node1.taotao.com下的test資源,可以發現禁止訪問,可見這裏定義的訪問控制生效

# 沒有定義訪問控制的可以繼續訪問 
[root@centos7 ~]# curl http://node1.taotao.com:8080/

<html>
   <head>
       <title>Test Page</title>
   </head>
   <body>
       hello world from /data/webapps

   </body>
</html>

# 定義訪問控制的/test 被被禁止 
[root@centos7 ~]# curl http://node1.taotao.com:8080/test/  
<!DOCTYPE html><html><head><title>Apache Tomcat/8.0.23 - Error report</title><style type="text/css">H1 
{font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:22px;} H2 
{font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:16px;} H3 
{color : black;}A.name {color : black;}.line {height: 1px; background-color: #525D76; 
border: none;}</style> </head><body><h1>HTTP Status 403 - </h1><div class="line"></div><p><b>type</b> 
Status report</p><p><b>message</b> <u></u></p><p><b>description</b> <u>Access to the specified resource 
has been forbidden.</u></p><hr class="line"><h3>Apache Tomcat/8.0.23</h3></body></html>









發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章