设为首页 收藏本站
查看: 1044|回复: 0

[经验分享] Tomcat的安装、部署和常用组件

[复制链接]

尚未签到

发表于 2018-12-2 08:26:17 | 显示全部楼层 |阅读模式
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)
http://s2.运维网.com/wyfs02/M02/8B/A8/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.浏览器访问如下:
http://s1.运维网.com/wyfs02/M00/8B/A8/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/tomcat@.service
/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.在浏览器中访问如下:

  

  
  
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



   
       Test Page
   
   
      
   
    3.部署完毕,重新启动tomcat服务,浏览器访问如下:
  http://s2.运维网.com/wyfs02/M02/8C/2B/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,提示登录信息;点击取消登录后,会提示未经认证不允许登录,并提供登录方法,如下:
  


  
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  http://s3.运维网.com/wyfs02/M02/8C/32/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登录后就可以进行部署了,如下:



  http://s4.运维网.com/wyfs02/M00/8C/32/wKioL1hlAP7R9wr4AABY6UJY7pA363.png
   5.我们也可以点击Server Statua查案当前服务器状态,如下:
  



  
Tomcat的常用组件配置:(conf/server.xml)
每个组件几乎都是通过特有的类来实现,而且有的组件还不止一种实现方式
1.Server:
代表tomcat instance(实例),即表现出的一个jvm进程;监听在8005端口,只接收“SHUTDOWN”。各server监听的端口不能相同,因此,在同一物理主机启动多个实例时,需要修改其监听端口为不同的端口;
http://s3.运维网.com/wyfs02/M01/8C/35/wKiom1hlDseQc35pAAAJGeYIZQ4628.png

2.Service:
用于实现将一个或多个connector组件关联至一个engine组件;
http://s2.运维网.com/wyfs02/M01/8C/32/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;

  

  
4.Engine组件:
作用:

  • Servlet实例,即servlet引擎,其内部可以有一个或多个host组件来定义站点; 通常需要通过defaultHost来定义默认的虚拟主机;
属性:

  • name=
  • defaultHost="localhost"
  • jvmRoute=
http://s1.运维网.com/wyfs02/M01/8C/32/wKioL1hlIBDQ4V2wAAAHiaq7LoY558.png
  
5.Host组件:
作用:

  • 位于engine内部用于接收请求并进行相应处理的主机或虚拟主机;
属性:
appBase:

  • 此Host的webapps的默认存放目录,指存放非归档的web应用程序的目录或归档的WAR文件目录路径;可以使用基于$CATALINA_BASE变量所定义的路径的相对路径;
autoDeploy:

  • 在Tomcat处于运行状态时,将某webapp放置于appBase所定义的目录中时,是否自动将其部署至tomcat;
unpackWARs:

  • 在启用webapps时,是否对WAR格式的归档文件先进行展开,默认为ture;
http://s5.运维网.com/wyfs02/M00/8C/35/wKioL1hlzfOjhGNuAAAMHZASrBo833.png
  演示:定义虚拟主机
  1.编辑/usr/local/tomcat/conf/server.xml再添加一个主机名为node1.taotao.com的虚拟主机,如下:

  

   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



   
        Test Page
   
   
        
   
   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


   
       Test Page
   
   
       hello world from node1
   
   5.除此之外,我们也可以在tomcat的页面中通过Host Manager进行管理,管理之前同Manager App一样需要首先添加角色,并使用户属于此角色,如下,编辑/usr/local/tomcat/conf/tomcat/users.xml

     重启tomcat服务,然后再次访问就可以看到虚拟主机的管理界面额了,如下:
  


  
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;
示例:
https://s2.运维网.com/wyfs02/M01/8F/04/wKiom1jRRZijeUPgAAAOQqtsiUw336.png
  演示:定义Context标识tomcat实例中一个web应用程序
1.编辑配置文件conf/server.xml在上例中定义个Host中定义Context如下:

   2.为testapp提供相关目录及测试页面,如下:
[root@centos7 tomcat]# cp -r /data/webapps/ROOT/ /data/webapps/testapp
[root@centos7 tomcat]# vim /data/webapps/testapp/index.jsp



   
        Test Page for Context
   
   
        
   
   3.重启tomcat服务,在能够解析node1的主机上使用curl请求,可以正常访问web资源,如下:
[root@centos7 ~]# curl http://node1.taotao.com:8080/test/


   
       Test Page for Context
   
   
       hello world from /data/webapps/testapp
   
  

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
http://s1.运维网.com/wyfs02/M01/8C/3D/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
http://s1.运维网.com/wyfs02/M00/8C/3E/wKioL1hmMNbTrPGXAAAM52xZw3I329.png
  演示1:定义访问日志
  1.编辑conf/server.xml在之前定义的虚拟主机node1.taotao.com上定义访问日志,如下:


   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


   
       Test Page
   
   
       hello world from /data/webapps
   

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


   
       Test Page for Context
   
   
       hello world from /data/webapps/testapp
   

# 查看访问日志
[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主机访问,如下:
  http://s3.运维网.com/wyfs02/M01/8C/3E/wKioL1hmL-GiFWdeAAA9iSstMrc340.png
      2.重启tomcat服务,访问虚拟主机node1.taotao.com下的test资源,可以发现禁止访问,可见这里定义的访问控制生效
# 没有定义访问控制的可以继续访问
[root@centos7 ~]# curl http://node1.taotao.com:8080/

   
       Test Page
   
   
       hello world from /data/webapps
   

# 定义访问控制的/test 被被禁止
[root@centos7 ~]# curl http://node1.taotao.com:8080/test/  
Apache Tomcat/8.0.23 - Error reportH1
{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;} HTTP Status 403 - type
Status reportmessage description Access to the specified resource
has been forbidden.Apache Tomcat/8.0.23  

  

  

  

  

  

  

  





运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-642192-1-1.html 上篇帖子: tomcat8 安装部署 下篇帖子: tomcat自动部署脚本
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表