Tomcat的安装、部署和常用组件
===============================================================================
概述:
本章将主要介绍Tomcat的安装部署和常用组件,具体内容如下:
· 二进制程序包(binary)安装启动及程序环境
· rpm包的安装启动及程序环境
·Tomcat的配置文件
· JSP WebAPP的组织结构:
· webapp归档格式:
部署(deploy)webapp的相关操作:
tomcat自带的两个管理应用程序;
·manager app
·host manager
===============================================================================
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包安装的程序环境:
☉ 配置文件:
☉ 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/:
☉ classes/:
☉ 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
★ host-manager
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作为独立的应用程序服务器,请求来自于客户端浏览器;
◆ 可用的连接器:
☉ 由其它的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