centos 7.6 安装 tomcat 介绍、安装、配置、使用
- 1、tomcat介绍
- 2、tomcat安装
- 3、tomcat安装目录下的文件目录解释
- 4、tomcat初探
- 5、tomcat官方的配置参考文档
- 5.1、概述
- 5.2、The Server Component
- 5.3、The Service Component
- 5.4、The Service Component
- 5.5、The Executor (thread pool)
- 5.6、The Connector Component
- 5.7、The Container Component
- 5.8、The Nested Components
- 5.8.1、The Cookie Processor Component
- 5.8.2、The CredentialHandler Component
- 5.8.3、The GlobalNamingResources Component
- 5.8.4、The Jar Scanner Component
- 5.8.5、The Jar Scan Filter Component
- 5.8.6、The LifeCycle Listener Component
- 5.8.7、The Loader Component
- 5.8.8、The Manager Component
- 5.8.9、The Realm Component
- 5.8.10、The Resources Component
- 5.8.11、The SessionIdGenerator Component
- 5.8.12、The Valve Component
- 5.9、The Cluster Elements Components
- 5.9.1、The Cluster object
- 5.9.2、The ClusterManager object
- 5.9.3、The Cluster Channel object
- 5.9.4、The Cluster Membership object
- 5.9.5、The Cluster Sender object
- 5.9.6、The Cluster Receiver object
- 5.9.7、The Cluster Receiver object
- 5.9.8、The Cluster Valve object
- 5.9.9、The Cluster Deployer object
- 5.9.10、The ClusterListener object
- 5.10、The web.xml Component
- 5.11、The Other Components
- 6、使用tomcat开发自己的第一个web应用
1、tomcat介绍
官方介绍文档 https://tomcat.apache.org/tomcat-10.1-doc/introduction.html
Apache Tomcat(通常简称为Tomcat)是一个开源的Java Servlet容器,属于Apache软件基金会的一个项目。它提供了一个实现了Java Servlet和JavaServer Pages(JSP)等Java EE规范的运行环境,使得Java应用程序可以在Web服务器上运行。
以下是关于Tomcat的一些主要特点和信息:
Servlet容器: Tomcat主要用于执行Java Servlet,这是一种服务器端的Java程序,用于处理客户端请求并生成动态的Web内容。Servlets是Java EE平台的一部分,它们通过Tomcat提供的环境来运行。
JSP支持: Tomcat支持JavaServer Pages(JSP),这是一种在Java代码中嵌入HTML的技术,使得开发者可以更轻松地创建动态Web页面。Tomcat负责解释和执行JSP页面。
开源: Tomcat是一个开源项目,遵循Apache License。这意味着它是免费可用的,并且用户可以自由地查看、修改和分发源代码。
轻量级: Tomcat被设计为一个轻量级的Servlet容器,其核心重点是提供简洁、高效的Java Web应用程序运行环境。它注重性能和资源效率。
模块化: Tomcat是模块化的,允许用户根据需要添加或删除特定的功能。用户可以根据应用程序的需求选择性地启用或禁用不同的组件。
跨平台: Tomcat是跨平台的,可以在各种操作系统上运行,包括Windows、Linux、macOS等。
易于部署: Tomcat提供了简单而有效的部署机制,可以通过将Web应用程序的WAR(Web Application Archive)文件放置在指定目录来轻松地部署应用程序。
管理工具: Tomcat包含了用于管理和监视服务器的一些实用工具。这包括Web应用程序管理、连接池管理、日志查看等。
可扩展性: Tomcat是可扩展的,支持各种扩展和插件。用户可以通过添加第三方组件或插件来扩展Tomcat的功能。
总体而言,Tomcat是一个广泛用于托管Java Web应用程序的开源Servlet容器,它的简单性、轻量级和可扩展性使其成为Java开发者首选的Web服务器之一。
2、tomcat安装
官方安装文档 https://tomcat.apache.org/tomcat-10.1-doc/setup.html
2.1、下载tomcat
根据需要选取tomcat版本
本例下载tomcat 9.0.84
下载链接: https://dlcdn.apache.org/tomcat/tomcat-9/v9.0.84/bin/apache-tomcat-9.0.84.tar.gz
文件名:apache-tomcat-9.0.84.tar.gz
sha512:85a42ab5e7e4cb1923888e96a78a0f277a870d06e76147a95457878c124001c9a317eade4ad69c249a460ffe2cbefe894022b84389cdf33038bc456e3699c8e3
2.2、安装java并设置环境变量
设置java环境变量
在/etc/profile最后面添加2行(/usr/local/jdk1.8.0_202 是JDK根目录)
JAVA_HOME=/usr/local/jdk1.8.0_202
PATH=$JAVA_HOME/bin:$PATH
使用centos 7.6 安装apache-tomcat-9.0.84.tar.gz
把apache-tomcat-9.0.84.tar.gz 上传到 /root/package/tomcat 目录下
cd /root/package/tomcat
tar -xzvf apache-tomcat-9.0.84.tar.gz -C /usr/local
cd /usr/local
ln -s apache-tomcat-9.0.84/ tomcat
设置CATALINA_HOME环境变量
在/etc/profile最后面添加一行
CATALINA_HOME=/usr/local/tomcat
source /etc/profile
2.3、编译安装jsvc binary (linux上tomcat运行的必要库)
编译安装jsvc binary (linux上tomcat运行的必要库)
cd $CATALINA_HOME/bin
tar -xzvf commons-daemon-native.tar.gz
cd commons-daemon-1.3.4-native-src/unix
./configure
make
cp jsvc ../..
cd ../..
编译安装jsvc binary的命令记录
[root@centos bin]# cd $CATALINA_HOME/bin
[root@centos bin]#
[root@centos bin]# tar xvfz commons-daemon-native.tar.gz
commons-daemon-1.3.4-native-src/LICENSE.txt
commons-daemon-1.3.4-native-src/NOTICE.txt
commons-daemon-1.3.4-native-src/RELEASE-NOTES.txt
commons-daemon-1.3.4-native-src/unix/
commons-daemon-1.3.4-native-src/unix/man/
commons-daemon-1.3.4-native-src/unix/native/
commons-daemon-1.3.4-native-src/unix/support/
commons-daemon-1.3.4-native-src/unix/INSTALL.txt
commons-daemon-1.3.4-native-src/unix/Makedefs.in
commons-daemon-1.3.4-native-src/unix/Makefile.in
commons-daemon-1.3.4-native-src/unix/configure.in
commons-daemon-1.3.4-native-src/unix/man/README.txt
commons-daemon-1.3.4-native-src/unix/man/jsvc.1.xml
commons-daemon-1.3.4-native-src/unix/native/.indent.pro
commons-daemon-1.3.4-native-src/unix/native/Makefile.in
commons-daemon-1.3.4-native-src/unix/native/arguments.c
commons-daemon-1.3.4-native-src/unix/native/arguments.h
commons-daemon-1.3.4-native-src/unix/native/debug.c
commons-daemon-1.3.4-native-src/unix/native/debug.h
commons-daemon-1.3.4-native-src/unix/native/dso-dlfcn.c
commons-daemon-1.3.4-native-src/unix/native/dso-dyld.c
commons-daemon-1.3.4-native-src/unix/native/dso.h
commons-daemon-1.3.4-native-src/unix/native/help.c
commons-daemon-1.3.4-native-src/unix/native/help.h
commons-daemon-1.3.4-native-src/unix/native/home.c
commons-daemon-1.3.4-native-src/unix/native/home.h
commons-daemon-1.3.4-native-src/unix/native/java.c
commons-daemon-1.3.4-native-src/unix/native/java.h
commons-daemon-1.3.4-native-src/unix/native/jsvc-unix.c
commons-daemon-1.3.4-native-src/unix/native/jsvc.h
commons-daemon-1.3.4-native-src/unix/native/location.c
commons-daemon-1.3.4-native-src/unix/native/location.h
commons-daemon-1.3.4-native-src/unix/native/locks.c
commons-daemon-1.3.4-native-src/unix/native/locks.h
commons-daemon-1.3.4-native-src/unix/native/replace.c
commons-daemon-1.3.4-native-src/unix/native/replace.h
commons-daemon-1.3.4-native-src/unix/native/signals.c
commons-daemon-1.3.4-native-src/unix/native/signals.h
commons-daemon-1.3.4-native-src/unix/native/version.h
commons-daemon-1.3.4-native-src/unix/support/apfunctions.m4
commons-daemon-1.3.4-native-src/unix/support/apjava.m4
commons-daemon-1.3.4-native-src/unix/support/apsupport.m4
commons-daemon-1.3.4-native-src/unix/support/config.guess
commons-daemon-1.3.4-native-src/unix/support/config.sub
commons-daemon-1.3.4-native-src/unix/configure
commons-daemon-1.3.4-native-src/unix/man/fetch.sh
commons-daemon-1.3.4-native-src/unix/support/buildconf.sh
commons-daemon-1.3.4-native-src/unix/support/install.sh
commons-daemon-1.3.4-native-src/windows/
commons-daemon-1.3.4-native-src/windows/apps/
commons-daemon-1.3.4-native-src/windows/apps/prunmgr/
commons-daemon-1.3.4-native-src/windows/apps/prunsrv/
commons-daemon-1.3.4-native-src/windows/include/
commons-daemon-1.3.4-native-src/windows/resources/
commons-daemon-1.3.4-native-src/windows/src/
commons-daemon-1.3.4-native-src/windows/xdocs/
commons-daemon-1.3.4-native-src/windows/README.txt
commons-daemon-1.3.4-native-src/windows/apps/prunmgr/Makefile
commons-daemon-1.3.4-native-src/windows/apps/prunmgr/prunmgr.c
commons-daemon-1.3.4-native-src/windows/apps/prunmgr/prunmgr.h
commons-daemon-1.3.4-native-src/windows/apps/prunmgr/prunmgr.manifest
commons-daemon-1.3.4-native-src/windows/apps/prunsrv/Makefile
commons-daemon-1.3.4-native-src/windows/apps/prunsrv/prunsrv.c
commons-daemon-1.3.4-native-src/windows/apps/prunsrv/prunsrv.h
commons-daemon-1.3.4-native-src/windows/apps/prunsrv/prunsrv.manifest
commons-daemon-1.3.4-native-src/windows/include/Makefile.inc
commons-daemon-1.3.4-native-src/windows/include/apxwin.h
commons-daemon-1.3.4-native-src/windows/include/cmdline.h
commons-daemon-1.3.4-native-src/windows/include/console.h
commons-daemon-1.3.4-native-src/windows/include/gui.h
commons-daemon-1.3.4-native-src/windows/include/handles.h
commons-daemon-1.3.4-native-src/windows/include/javajni.h
commons-daemon-1.3.4-native-src/windows/include/log.h
commons-daemon-1.3.4-native-src/windows/include/registry.h
commons-daemon-1.3.4-native-src/windows/include/rprocess.h
commons-daemon-1.3.4-native-src/windows/include/security.h
commons-daemon-1.3.4-native-src/windows/include/service.h
commons-daemon-1.3.4-native-src/windows/resources/license.rtf
commons-daemon-1.3.4-native-src/windows/src/cmdline.c
commons-daemon-1.3.4-native-src/windows/src/console.c
commons-daemon-1.3.4-native-src/windows/src/gui.c
commons-daemon-1.3.4-native-src/windows/src/handles.c
commons-daemon-1.3.4-native-src/windows/src/javajni.c
commons-daemon-1.3.4-native-src/windows/src/log.c
commons-daemon-1.3.4-native-src/windows/src/mclib.c
commons-daemon-1.3.4-native-src/windows/src/mclib.h
commons-daemon-1.3.4-native-src/windows/src/private.h
commons-daemon-1.3.4-native-src/windows/src/registry.c
commons-daemon-1.3.4-native-src/windows/src/rprocess.c
commons-daemon-1.3.4-native-src/windows/src/security.c
commons-daemon-1.3.4-native-src/windows/src/service.c
commons-daemon-1.3.4-native-src/windows/src/utils.c
commons-daemon-1.3.4-native-src/windows/xdocs/index.xml
commons-daemon-1.3.4-native-src/windows/apps/prunmgr/prunmgr.rc
commons-daemon-1.3.4-native-src/windows/apps/prunsrv/prunsrv.rc
commons-daemon-1.3.4-native-src/windows/resources/commons.bmp
commons-daemon-1.3.4-native-src/windows/resources/procrunr.ico
commons-daemon-1.3.4-native-src/windows/resources/procruns.ico
commons-daemon-1.3.4-native-src/windows/resources/procrunw.ico
commons-daemon-1.3.4-native-src/windows/resources/susers.bmp
[root@centos bin]# ls -l
total 908
-rw-r-----. 1 root root 35467 Dec 8 03:27 bootstrap.jar
-rw-r-----. 1 root root 16856 Dec 8 03:27 catalina.bat
-rwxr-x---. 1 root root 25323 Dec 8 03:27 catalina.sh
-rw-r-----. 1 root root 1664 Dec 8 03:27 catalina-tasks.xml
-rw-r-----. 1 root root 2123 Dec 8 03:27 ciphers.bat
-rwxr-x---. 1 root root 1997 Dec 8 03:27 ciphers.sh
drwxr-xr-x. 4 root root 4096 Jan 7 23:03 commons-daemon-1.3.4-native-src
-rw-r-----. 1 root root 25661 Dec 8 03:27 commons-daemon.jar
-rw-r-----. 1 root root 214214 Dec 8 03:27 commons-daemon-native.tar.gz
-rw-r-----. 1 root root 2040 Dec 8 03:27 configtest.bat
-rwxr-x---. 1 root root 1922 Dec 8 03:27 configtest.sh
-rwxr-x---. 1 root root 9100 Dec 8 03:27 daemon.sh
-rw-r-----. 1 root root 2091 Dec 8 03:27 digest.bat
-rwxr-x---. 1 root root 1965 Dec 8 03:27 digest.sh
-rw-r-----. 1 root root 3606 Dec 8 03:27 makebase.bat
-rwxr-x---. 1 root root 3382 Dec 8 03:27 makebase.sh
-rw-r-----. 1 root root 3814 Dec 8 03:27 setclasspath.bat
-rwxr-x---. 1 root root 4317 Dec 8 03:27 setclasspath.sh
-rw-r-----. 1 root root 2020 Dec 8 03:27 shutdown.bat
-rwxr-x---. 1 root root 1902 Dec 8 03:27 shutdown.sh
-rw-r-----. 1 root root 2022 Dec 8 03:27 startup.bat
-rwxr-x---. 1 root root 1904 Dec 8 03:27 startup.sh
-rw-r-----. 1 root root 49609 Dec 8 03:27 tomcat-juli.jar
-rw-r-----. 1 root root 438209 Dec 8 03:27 tomcat-native.tar.gz
-rw-r-----. 1 root root 4576 Dec 8 03:27 tool-wrapper.bat
-rwxr-x---. 1 root root 5540 Dec 8 03:27 tool-wrapper.sh
-rw-r-----. 1 root root 2026 Dec 8 03:27 version.bat
-rwxr-x---. 1 root root 1908 Dec 8 03:27 version.sh
[root@centos bin]# cd commons-daemon-1.3.4-native-src
[root@centos commons-daemon-1.3.4-native-src]# ls -l
total 28
-rw-rw-r--. 1 root root 11358 Apr 23 2023 LICENSE.txt
-rw-rw-r--. 1 root root 175 Apr 23 2023 NOTICE.txt
-rw-rw-r--. 1 root root 1749 Apr 23 2023 RELEASE-NOTES.txt
drwxrwxr-x. 5 root root 4096 Apr 23 2023 unix
drwxrwxr-x. 7 root root 4096 Apr 23 2023 windows
[root@centos commons-daemon-1.3.4-native-src]# cd unix/
[root@centos unix]# ls -l
total 180
-rwxrwxr-x. 1 root root 147628 Apr 23 2023 configure
-rw-rw-r--. 1 root root 5038 Apr 23 2023 configure.in
-rw-rw-r--. 1 root root 2598 Apr 23 2023 INSTALL.txt
-rw-rw-r--. 1 root root 1081 Apr 23 2023 Makedefs.in
-rw-rw-r--. 1 root root 1110 Apr 23 2023 Makefile.in
drwxrwxr-x. 2 root root 4096 Jan 7 23:03 man
drwxrwxr-x. 2 root root 4096 Jan 7 23:03 native
drwxrwxr-x. 2 root root 4096 Jan 7 23:03 support
[root@centos unix]# ./configure
*** Current host ***
checking build system type... x86_64-pc-linux-gnu
checking host system type... x86_64-pc-linux-gnu
checking cached host system type... ok
*** C-Language compilation tools ***
checking for gcc... gcc
checking whether the C compiler works... yes
checking for C compiler default output file name... a.out
checking for suffix of executables...
checking whether we are cross compiling... no
checking for suffix of object files... o
checking whether the compiler supports GNU C... yes
checking whether gcc accepts -g... yes
checking for gcc option to enable C11 features... -std=gnu11
checking for ranlib... ranlib
checking for strip... strip
*** Host support ***
checking C flags dependant on host system type... ok
*** Java compilation tools ***
checking for JDK location... /usr/local/jdk1.8.0_202
checking for JDK os include directory... linux
gcc flags added
checking for stdio.h... yes
checking for stdlib.h... yes
checking for string.h... yes
checking for inttypes.h... yes
checking for stdint.h... yes
checking for strings.h... yes
checking for sys/stat.h... yes
checking for sys/types.h... yes
checking for unistd.h... yes
checking for sys/capability.h... no
configure: WARNING: cannot find headers for libcap
*** Writing output files ***
configure: creating ./config.status
config.status: creating Makefile
config.status: creating Makedefs
config.status: creating native/Makefile
*** All done ***
Now you can issue "make"
[root@centos unix]# ls -l
total 240
-rw-r--r--. 1 root root 21923 Jan 7 23:04 config.log
-rwxr-xr-x. 1 root root 58 Jan 7 23:04 config.nice
-rwxr-xr-x. 1 root root 24479 Jan 7 23:04 config.status
-rwxrwxr-x. 1 root root 147628 Apr 23 2023 configure
-rw-rw-r--. 1 root root 5038 Apr 23 2023 configure.in
-rw-rw-r--. 1 root root 2598 Apr 23 2023 INSTALL.txt
-rw-r--r--. 1 root root 1209 Jan 7 23:04 Makedefs
-rw-rw-r--. 1 root root 1081 Apr 23 2023 Makedefs.in
-rw-r--r--. 1 root root 1110 Jan 7 23:04 Makefile
-rw-rw-r--. 1 root root 1110 Apr 23 2023 Makefile.in
drwxrwxr-x. 2 root root 4096 Jan 7 23:03 man
drwxrwxr-x. 2 root root 4096 Jan 7 23:04 native
drwxrwxr-x. 2 root root 4096 Jan 7 23:03 support
[root@centos unix]# make
(cd native; make all)
make[1]: Entering directory `/usr/local/apache-tomcat-9.0.84/bin/commons-daemon-1.3.4-native-src/unix/native'
gcc -std=gnu11 -g -O2 -DOS_LINUX -DDSO_DLFCN -DCPU=\"amd64\" -Wall -Wstrict-prototypes -I/usr/local/jdk1.8.0_202/include -I/usr/local/jdk1.8.0_202/include/linux -c jsvc-unix.c -o jsvc-unix.o
jsvc-unix.c: In function ‘run_controller’:
jsvc-unix.c:1311:20: warning: assignment from incompatible pointer type [enabled by default]
act.sa_handler = controller;
^
gcc -std=gnu11 -g -O2 -DOS_LINUX -DDSO_DLFCN -DCPU=\"amd64\" -Wall -Wstrict-prototypes -I/usr/local/jdk1.8.0_202/include -I/usr/local/jdk1.8.0_202/include/linux -c arguments.c -o arguments.o
gcc -std=gnu11 -g -O2 -DOS_LINUX -DDSO_DLFCN -DCPU=\"amd64\" -Wall -Wstrict-prototypes -I/usr/local/jdk1.8.0_202/include -I/usr/local/jdk1.8.0_202/include/linux -c debug.c -o debug.o
gcc -std=gnu11 -g -O2 -DOS_LINUX -DDSO_DLFCN -DCPU=\"amd64\" -Wall -Wstrict-prototypes -I/usr/local/jdk1.8.0_202/include -I/usr/local/jdk1.8.0_202/include/linux -c dso-dlfcn.c -o dso-dlfcn.o
gcc -std=gnu11 -g -O2 -DOS_LINUX -DDSO_DLFCN -DCPU=\"amd64\" -Wall -Wstrict-prototypes -I/usr/local/jdk1.8.0_202/include -I/usr/local/jdk1.8.0_202/include/linux -c dso-dyld.c -o dso-dyld.o
gcc -std=gnu11 -g -O2 -DOS_LINUX -DDSO_DLFCN -DCPU=\"amd64\" -Wall -Wstrict-prototypes -I/usr/local/jdk1.8.0_202/include -I/usr/local/jdk1.8.0_202/include/linux -c help.c -o help.o
gcc -std=gnu11 -g -O2 -DOS_LINUX -DDSO_DLFCN -DCPU=\"amd64\" -Wall -Wstrict-prototypes -I/usr/local/jdk1.8.0_202/include -I/usr/local/jdk1.8.0_202/include/linux -c home.c -o home.o
gcc -std=gnu11 -g -O2 -DOS_LINUX -DDSO_DLFCN -DCPU=\"amd64\" -Wall -Wstrict-prototypes -I/usr/local/jdk1.8.0_202/include -I/usr/local/jdk1.8.0_202/include/linux -c java.c -o java.o
gcc -std=gnu11 -g -O2 -DOS_LINUX -DDSO_DLFCN -DCPU=\"amd64\" -Wall -Wstrict-prototypes -I/usr/local/jdk1.8.0_202/include -I/usr/local/jdk1.8.0_202/include/linux -c location.c -o location.o
gcc -std=gnu11 -g -O2 -DOS_LINUX -DDSO_DLFCN -DCPU=\"amd64\" -Wall -Wstrict-prototypes -I/usr/local/jdk1.8.0_202/include -I/usr/local/jdk1.8.0_202/include/linux -c replace.c -o replace.o
gcc -std=gnu11 -g -O2 -DOS_LINUX -DDSO_DLFCN -DCPU=\"amd64\" -Wall -Wstrict-prototypes -I/usr/local/jdk1.8.0_202/include -I/usr/local/jdk1.8.0_202/include/linux -c locks.c -o locks.o
gcc -std=gnu11 -g -O2 -DOS_LINUX -DDSO_DLFCN -DCPU=\"amd64\" -Wall -Wstrict-prototypes -I/usr/local/jdk1.8.0_202/include -I/usr/local/jdk1.8.0_202/include/linux -c signals.c -o signals.o
ar cr libservice.a arguments.o debug.o dso-dlfcn.o dso-dyld.o help.o home.o java.o location.o replace.o locks.o signals.o
ranlib libservice.a
gcc -std=gnu11 jsvc-unix.o libservice.a -ldl -lpthread -o ../jsvc
make[1]: Leaving directory `/usr/local/apache-tomcat-9.0.84/bin/commons-daemon-1.3.4-native-src/unix/native'
[root@centos unix]# ls -l
total 416
-rw-r--r--. 1 root root 21923 Jan 7 23:04 config.log
-rwxr-xr-x. 1 root root 58 Jan 7 23:04 config.nice
-rwxr-xr-x. 1 root root 24479 Jan 7 23:04 config.status
-rwxrwxr-x. 1 root root 147628 Apr 23 2023 configure
-rw-rw-r--. 1 root root 5038 Apr 23 2023 configure.in
-rw-rw-r--. 1 root root 2598 Apr 23 2023 INSTALL.txt
-rwxr-xr-x. 1 root root 180080 Jan 7 23:05 jsvc
-rw-r--r--. 1 root root 1209 Jan 7 23:04 Makedefs
-rw-rw-r--. 1 root root 1081 Apr 23 2023 Makedefs.in
-rw-r--r--. 1 root root 1110 Jan 7 23:04 Makefile
-rw-rw-r--. 1 root root 1110 Apr 23 2023 Makefile.in
drwxrwxr-x. 2 root root 4096 Jan 7 23:03 man
drwxrwxr-x. 2 root root 4096 Jan 7 23:05 native
drwxrwxr-x. 2 root root 4096 Jan 7 23:03 support
[root@centos unix]# ls -l jsvc
-rwxr-xr-x. 1 root root 180080 Jan 7 23:05 jsvc
[root@centos unix]# cp jsvc ../..
[root@centos unix]# cd ../..
[root@centos bin]# ls -l
total 1084
-rw-r-----. 1 root root 35467 Dec 8 03:27 bootstrap.jar
-rw-r-----. 1 root root 16856 Dec 8 03:27 catalina.bat
-rwxr-x---. 1 root root 25323 Dec 8 03:27 catalina.sh
-rw-r-----. 1 root root 1664 Dec 8 03:27 catalina-tasks.xml
-rw-r-----. 1 root root 2123 Dec 8 03:27 ciphers.bat
-rwxr-x---. 1 root root 1997 Dec 8 03:27 ciphers.sh
drwxr-xr-x. 4 root root 4096 Jan 7 23:03 commons-daemon-1.3.4-native-src
-rw-r-----. 1 root root 25661 Dec 8 03:27 commons-daemon.jar
-rw-r-----. 1 root root 214214 Dec 8 03:27 commons-daemon-native.tar.gz
-rw-r-----. 1 root root 2040 Dec 8 03:27 configtest.bat
-rwxr-x---. 1 root root 1922 Dec 8 03:27 configtest.sh
-rwxr-x---. 1 root root 9100 Dec 8 03:27 daemon.sh
-rw-r-----. 1 root root 2091 Dec 8 03:27 digest.bat
-rwxr-x---. 1 root root 1965 Dec 8 03:27 digest.sh
-rwxr-xr-x. 1 root root 180080 Jan 7 23:05 jsvc
-rw-r-----. 1 root root 3606 Dec 8 03:27 makebase.bat
-rwxr-x---. 1 root root 3382 Dec 8 03:27 makebase.sh
-rw-r-----. 1 root root 3814 Dec 8 03:27 setclasspath.bat
-rwxr-x---. 1 root root 4317 Dec 8 03:27 setclasspath.sh
-rw-r-----. 1 root root 2020 Dec 8 03:27 shutdown.bat
-rwxr-x---. 1 root root 1902 Dec 8 03:27 shutdown.sh
-rw-r-----. 1 root root 2022 Dec 8 03:27 startup.bat
-rwxr-x---. 1 root root 1904 Dec 8 03:27 startup.sh
-rw-r-----. 1 root root 49609 Dec 8 03:27 tomcat-juli.jar
-rw-r-----. 1 root root 438209 Dec 8 03:27 tomcat-native.tar.gz
-rw-r-----. 1 root root 4576 Dec 8 03:27 tool-wrapper.bat
-rwxr-x---. 1 root root 5540 Dec 8 03:27 tool-wrapper.sh
-rw-r-----. 1 root root 2026 Dec 8 03:27 version.bat
-rwxr-x---. 1 root root 1908 Dec 8 03:27 version.sh
[root@centos bin]#
2.4、运行tomcat
编辑配置文件
cp /usr/local/tomcat/conf/server.xml /usr/local/tomcat/conf/server.xml.bak
vi /usr/local/tomcat/conf/server.xml
查找 Connector port
更改前
更改后
2.5、配置tomcat开机自启动
vi /etc/init.d/tomcat
添加如下内容
#!/bin/bash
#
# Startup script for Tomcat
#
# chkconfig: 345 82 20
# description: Tomcat is a servlet runner
JAVA_HOME=/usr/local/jdk1.8.0_202
CATALINA_HOME=/usr/local/tomcat
CATALINA_BASE=/usr/local/tomcat
XMFILE=$CATALINA_HOME/conf/server.xml
JAVA_OPTS="-server -Xms3g -Xmx3g -Xmn1g -Xss256k -XX:+UseParallelGC"
CATALINA_PID="$CATALINA_BASE/tomcat.pid"
export JAVA_HOME CATALINA_HOME CATALINA_BASE JAVA_OPTS
# See how we were called.
case "$1" in
start)
cd $CATALINA_HOME
./bin/startup.sh -config $XMFILE
;;
stop)
cd $CATALINA_HOME
./bin/shutdown.sh -config $XMFILE
;;
restart)
$0 stop
sleep 3
$0 start
;;
*)
echo "Usage: $0 {start|stop|restart}"
exit 1
esac
exit 0
chmod +x /etc/init.d/tomcat
chkconfig --add tomcat
启动tomcat
/etc/init.d/tomcat start
访问 http://tomcatServer-ip:8080 出现如下页面即为Tomcat安装成功
3、tomcat安装目录下的文件目录解释
tomcat根目录如下
- bin
/bin - Startup, shutdown, and other scripts. The *.sh files (for Unix systems) are functional duplicates of the *.bat files (for Windows systems). Since the Win32 command-line lacks certain functionality, there are some additional files in here. - conf
/conf - Configuration files and related DTDs. The most important file in here is server.xml. It is the main configuration file for the container. - lib
放置.jar - logs
/logs - Log files are here by default.
[root@centos tomcat]# ls -lh logs/
total 64K
-rw-r-----. 1 root root 1.7K Jan 7 23:56 catalina.2024-01-07.log
-rw-r-----. 1 root root 21K Jan 8 21:28 catalina.2024-01-08.log
-rw-r-----. 1 root root 22K Jan 8 21:28 catalina.out
-rw-r-----. 1 root root 0 Jan 7 23:56 host-manager.2024-01-07.log
-rw-r-----. 1 root root 0 Jan 8 00:00 host-manager.2024-01-08.log
-rw-r-----. 1 root root 0 Jan 7 23:56 localhost.2024-01-07.log
-rw-r-----. 1 root root 1.7K Jan 8 21:28 localhost.2024-01-08.log
-rw-r-----. 1 root root 1.4K Jan 8 21:41 localhost_access_log.2024-01-08.txt
-rw-r-----. 1 root root 0 Jan 7 23:56 manager.2024-01-07.log
-rw-r-----. 1 root root 0 Jan 8 00:00 manager.2024-01-08.log
其中localhost_access_log.2024-01-08.txt 是访问日志 形如
配置访问日志: https://tomcat.apache.org/tomcat-9.0-doc/config/valve.html#Access_Logging
在tomcat/conf/server.xml 中这个元素配置访问日志的形式
catalina.out
catalina.out是tomcat的标准输出(stdout)和标准错误(stderr),这是在tomcat的启动脚本catalina.sh里指定的,如果没有修改的话stdout和stderr会重定向到这里。
[root@centos tomcat]# grep -C5 CATALINA_OUT bin/catalina.sh
#
# CATALINA_BASE (Optional) Base directory for resolving dynamic portions
# of a Catalina installation. If not present, resolves to
# the same directory that CATALINA_HOME points to.
#
# CATALINA_OUT (Optional) Full path to a file where stdout and stderr
# will be redirected.
# Default is $CATALINA_BASE/logs/catalina.out
#
# CATALINA_OUT_CMD (Optional) Command which will be executed and receive
# as its stdin the stdout and stderr from the Tomcat java
# process. If CATALINA_OUT_CMD is set, the value of
# CATALINA_OUT will be used as a named pipe.
# No default.
# Example (all one line)
# CATALINA_OUT_CMD="/usr/bin/rotatelogs -f $CATALINA_BASE/logs/catalina.out.%Y-%m-%d.log 86400"
#
# CATALINA_OPTS (Optional) Java runtime options used when the "start",
# "run" or "debug" command is executed.
# Include here and not in JAVA_OPTS all options, that should
# only be used by Tomcat itself, not by the stop process,
--
if [ ! -z "$CLASSPATH" ] ; then
CLASSPATH="$CLASSPATH":
fi
CLASSPATH="$CLASSPATH""$CATALINA_HOME"/bin/bootstrap.jar
if [ -z "$CATALINA_OUT" ] ; then
CATALINA_OUT="$CATALINA_BASE"/logs/catalina.out
fi
if [ -z "$CATALINA_TMPDIR" ] ; then
# Define the java.io.tmpdir to use for Catalina
CATALINA_TMPDIR="$CATALINA_BASE"/temp
--
fi
fi
fi
shift
if [ -z "$CATALINA_OUT_CMD" ] ; then
touch "$CATALINA_OUT"
else
if [ ! -e "$CATALINA_OUT" ]; then
if ! mkfifo "$CATALINA_OUT"; then
echo "cannot create named pipe $CATALINA_OUT. Start aborted."
exit 1
fi
elif [ ! -p "$CATALINA_OUT" ]; then
echo "$CATALINA_OUT exists and is not a named pipe. Start aborted."
exit 1
fi
$CATALINA_OUT_CMD <"$CATALINA_OUT" &
fi
if [ "$1" = "-security" ] ; then
if [ $have_tty -eq 1 ]; then
echo "Using Security Manager"
fi
--
-Djava.security.policy=="\"$CATALINA_BASE/conf/catalina.policy\"" \
-Dcatalina.base="\"$CATALINA_BASE\"" \
-Dcatalina.home="\"$CATALINA_HOME\"" \
-Djava.io.tmpdir="\"$CATALINA_TMPDIR\"" \
org.apache.catalina.startup.Bootstrap "$@" start \
>> "$CATALINA_OUT" 2>&1 "&"
else
eval $_NOHUP "\"$_RUNJAVA\"" "\"$CATALINA_LOGGING_CONFIG\"" $LOGGING_MANAGER "$JAVA_OPTS" "$CATALINA_OPTS" \
-D$ENDORSED_PROP="\"$JAVA_ENDORSED_DIRS\"" \
-classpath "\"$CLASSPATH\"" \
-Dcatalina.base="\"$CATALINA_BASE\"" \
-Dcatalina.home="\"$CATALINA_HOME\"" \
-Djava.io.tmpdir="\"$CATALINA_TMPDIR\"" \
org.apache.catalina.startup.Bootstrap "$@" start \
>> "$CATALINA_OUT" 2>&1 "&"
fi
if [ ! -z "$CATALINA_PID" ]; then
echo $! > "$CATALINA_PID"
[root@centos tomcat]#
[root@centos tomcat]#
catalina.xxxx-xx-xx.log
可以理解所有的catalina.xxxx-xx-xx.log 加起来就是catalina.out
从文件大小可以看出来 1650+20614=22264
- temp
The temp directory used by the JVM for temporary files. - webapps
This is where your webapps go. - work
The work directory that contains temporary working directories for the deployed web applications.
4、tomcat初探
4.1、tomcat配置SSL
参考链接: https://tomcat.apache.org/tomcat-9.0-doc/ssl-howto.html
创建放置keystore文件的目录
mkdir $CATALINA_HOME/conf/tomcatSSLkeystore
生成SSL需要的tomcat.keystore文件
$JAVA_HOME/bin/keytool -genkey -alias tomcat -keyalg RSA -keystore $CATALINA_HOME/conf/tomcatSSLkeystore/keystore
首先会提示输入keystore文件的密码 默认是changeit
接下来,系统将提示您输入关于该证书的一般信息,例如公司、联系人姓名等。此信息将显示给试图访问应用程序中的安全页面的用户,因此请确保此处提供的信息与他们所期望的相符。
最后,将提示您输入密钥密码,这是专门用于此证书的密码(与存储在同一密钥存储库文件中的任何其他证书相反)。keytool提示符将告诉您,按下ENTER键将自动使用与密钥存储库相同的密钥密码。您可以自由地使用相同的密码或选择自定义密码。如果选择与密钥存储库密码不同的密码,还需要在server.xm中指定自定义密码.
查看生成的keystore文件 $CATALINA_HOME/conf/tomcatSSLkeystore/keystore
使用上述命令生成的keystore文件是JKS专有格式的,我们使用如下命令转换成更常用的PKCS#12格式的keystore文件
$JAVA_HOME/bin/keytool -importkeystore -srckeystore /usr/local/tomcat/conf/tomcatSSLkeystore/keystore -destkeystore /usr/local/tomcat/conf/tomcatSSLkeystore/keystore -deststoretype pkcs12
查看转换后的文件 以及转化前备份的原keystore文件keystore.old
至此SSL证书已经准备完成。下面编辑tomcat的ser.xml
vi $CATALINA_HOME/conf/server.xml
查找Connector port=“8443”
编辑下图红框部分
编辑前
<!--
<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
maxThreads="150" SSLEnabled="true"
maxParameterCount="1000"
>
<SSLHostConfig>
<Certificate certificateKeystoreFile="conf/localhost-rsa.jks"
type="RSA" />
</SSLHostConfig>
</Connector>
-->
编辑后
<Connector
protocol="org.apache.coyote.http11.Http11NioProtocol"
port="8443" maxThreads="200"
maxParameterCount="1000"
scheme="https" secure="true" SSLEnabled="true"
keystoreFile="/usr/local/tomcat/conf/tomcatSSLkeystore/keystore" keystorePass="changeit"
clientAuth="false" sslProtocol="TLS"/>
最后重启tomcat
此处仅记录下tomcat重启日志
10-Jan-2024 00:09:30.198 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Server version name: Apache Tomcat/9.0.84
10-Jan-2024 00:09:30.201 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Server built: Dec 7 2023 19:27:40 UTC
10-Jan-2024 00:09:30.201 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Server version number: 9.0.84.0
10-Jan-2024 00:09:30.202 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log OS Name: Linux
10-Jan-2024 00:09:30.202 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log OS Version: 3.10.0-957.el7.x86_64
10-Jan-2024 00:09:30.205 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Architecture: amd64
10-Jan-2024 00:09:30.206 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Java Home: /usr/local/jdk1.8.0_202/jre
10-Jan-2024 00:09:30.207 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log JVM Version: 1.8.0_202-b08
10-Jan-2024 00:09:30.207 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log JVM Vendor: Oracle Corporation
10-Jan-2024 00:09:30.207 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log CATALINA_BASE: /usr/local/apache-tomcat-9.0.84
10-Jan-2024 00:09:30.208 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log CATALINA_HOME: /usr/local/apache-tomcat-9.0.84
10-Jan-2024 00:09:30.208 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.util.logging.config.file=/usr/local/tomcat/conf/logging.properties
10-Jan-2024 00:09:30.208 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager
10-Jan-2024 00:09:30.209 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Xms3g
10-Jan-2024 00:09:30.210 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Xmx3g
10-Jan-2024 00:09:30.210 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Xmn1g
10-Jan-2024 00:09:30.210 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Xss256k
10-Jan-2024 00:09:30.211 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -XX:+UseParallelGC
10-Jan-2024 00:09:30.211 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djdk.tls.ephemeralDHKeySize=2048
10-Jan-2024 00:09:30.211 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.protocol.handler.pkgs=org.apache.catalina.webresources
10-Jan-2024 00:09:30.212 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dorg.apache.catalina.security.SecurityListener.UMASK=0027
10-Jan-2024 00:09:30.212 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dignore.endorsed.dirs=
10-Jan-2024 00:09:30.212 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dcatalina.base=/usr/local/tomcat
10-Jan-2024 00:09:30.212 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dcatalina.home=/usr/local/tomcat
10-Jan-2024 00:09:30.213 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.io.tmpdir=/usr/local/tomcat/temp
10-Jan-2024 00:09:30.215 INFO [main] org.apache.catalina.core.AprLifecycleListener.lifecycleEvent The Apache Tomcat Native library which allows using OpenSSL was not found on the java.library.path: [/usr/java/packages/lib/amd64:/usr/lib64:/lib64:/lib:/usr/lib]
10-Jan-2024 00:09:30.534 INFO [main] org.apache.coyote.AbstractProtocol.init Initializing ProtocolHandler ["http-nio-0.0.0.0-8080"]
10-Jan-2024 00:09:30.555 INFO [main] org.apache.coyote.AbstractProtocol.init Initializing ProtocolHandler ["https-jsse-nio-8443"]
10-Jan-2024 00:09:30.915 INFO [main] org.apache.tomcat.util.net.AbstractEndpoint.logCertificate Connector [https-jsse-nio-8443], TLS virtual host [_default_], certificate type [UNDEFINED] configured from keystore [/usr/local/tomcat/conf/tomcatSSLkeystore/keystore] using alias [tomcat] with trust store [null]
10-Jan-2024 00:09:30.919 INFO [main] org.apache.catalina.startup.Catalina.load Server initialization in [900] milliseconds
10-Jan-2024 00:09:30.944 INFO [main] org.apache.catalina.core.StandardService.startInternal Starting service [Catalina]
10-Jan-2024 00:09:30.944 INFO [main] org.apache.catalina.core.StandardEngine.startInternal Starting Servlet engine: [Apache Tomcat/9.0.84]
10-Jan-2024 00:09:30.953 INFO [main] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory [/usr/local/apache-tomcat-9.0.84/webapps/manager]
10-Jan-2024 00:09:31.188 INFO [main] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory [/usr/local/apache-tomcat-9.0.84/webapps/manager] has finished in [234] ms
10-Jan-2024 00:09:31.188 INFO [main] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory [/usr/local/apache-tomcat-9.0.84/webapps/ROOT]
10-Jan-2024 00:09:31.203 INFO [main] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory [/usr/local/apache-tomcat-9.0.84/webapps/ROOT] has finished in [15] ms
10-Jan-2024 00:09:31.204 INFO [main] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory [/usr/local/apache-tomcat-9.0.84/webapps/docs]
10-Jan-2024 00:09:31.220 INFO [main] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory [/usr/local/apache-tomcat-9.0.84/webapps/docs] has finished in [17] ms
10-Jan-2024 00:09:31.221 INFO [main] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory [/usr/local/apache-tomcat-9.0.84/webapps/examples]
10-Jan-2024 00:09:31.417 INFO [main] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory [/usr/local/apache-tomcat-9.0.84/webapps/examples] has finished in [197] ms
10-Jan-2024 00:09:31.417 INFO [main] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory [/usr/local/apache-tomcat-9.0.84/webapps/host-manager]
10-Jan-2024 00:09:31.437 INFO [main] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory [/usr/local/apache-tomcat-9.0.84/webapps/host-manager] has finished in [20] ms
10-Jan-2024 00:09:31.442 INFO [main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler ["http-nio-0.0.0.0-8080"]
10-Jan-2024 00:09:31.456 INFO [main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler ["https-jsse-nio-8443"]
10-Jan-2024 00:09:31.462 INFO [main] org.apache.catalina.startup.Catalina.start Server startup in [542] milliseconds
重启tomcat后 查看8443端口 8080端口 都存在
验证SSL配置成功,浏览器访问 https://tomcatServer-ip:8443 出现如下页面即为SSL配置成功
此错误为证书不受浏览器信任,这是正常的,因为这是自签发的证书。点击继续前往即可。
出现如下界面,代表tomcat SSL配置成功。
访问 http://tomcatServer-ip:8080
配置http自动重定向到https
编辑$CATALINA_HOME/conf/web.xml
vi $CATALINA_HOME/conf/web.xml
在最后面添加如下内容
<!-- ===================== http auto redircet to https =================== -->
<security-constraint>
<web-resource-collection >
<web-resource-name >SSL</web-resource-name>
<url-pattern>/*</url-pattern>
</web-resource-collection>
<user-data-constraint>
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>
</security-constraint>
更改前
更改后
重启tomcat使得配置生效
/etc/init.d/tomcat restart
重启tomcat成功后,访问http://tomcatServer-ip:8080 会自动转到 https://tomcatServer-ip:8443
效果展示
4.2、访问tomcat默认的web应用
tomcat安装完成后,默认应用如下 一共5个 分别是docx examples host-manager manager ROOT
ls -l $CATALINA_HOME/webapps
4.2.1、manager应用
此章节涉及到tomcat的manager应用配置,相关内容可以参考官方配置文档 链接: https://tomcat.apache.org/tomcat-9.0-doc/manager-howto.html
manager应用的作用是什么?
在许多生产环境中,无需关闭和重新启动整个容器,就可以部署新的web应用程序或取消部署现有的应用程序,这是非常有用的。此外,您可以请求一个现有的应用程序重新加载它自己,即使您没有在Tomcat服务器配置文件中声明它是可重新加载的(reloadable属性)。
为了支持这些功能,Tomcat包含了一个web应用程序(默认安装在上下文路径/manager上),它支持以下功能:
- 从一个WAR文件的上传内容部署一个新的web应用程序。
- 从服务器文件系统在指定的上下文路径上部署新的web应用程序。
- 列出当前部署的web应用程序,以及这些web应用程序当前活动的会话。
- 重新加载现有的web应用程序,以反映/ web - inf /classes或/ web - inf /lib中内容的变化。
- 列出操作系统和JVM的属性值。
- 列出可用的全局JNDI资源,用于准备嵌套在部署描述中的元素的部署工具。
- 启动已停止的应用程序(从而使其再次可用)。
- 停止现有应用程序(使其不可用),但不要取消部署。
- 取消部署已部署的web应用程序并删除其文档基目录(除非它是从文件系统部署的)。
有三种方法可以使用Manager web应用程序。
- 作为具有用户界面的应用程序,您可以在浏览器中使用。下面是一个URL示例,您可以将localhost替换为您的网站主机名:http://localhost:8080/manager/html。
- 仅使用HTTP请求的最小版本,适合由系统管理员设置的脚本使用。命令作为请求URI的一部分给出,响应采用简单文本的形式,可以很容易地解析和处理。有关更多信息,请参阅支持的管理器命令。
- 为Ant(1.4或更高版本)构建工具提供了一组方便的任务定义。有关更多信息,请参阅使用Ant执行管理器命令。
我们使用第一种方式访问manager应用,浏览器输入 https://tomcatServer-ip:8443/manager
报错如下 这是因为manager的context.xml配置文件中 配置了允许访问的ip为127.x.x.x。
参考链接: https://stackoverflow.com/questions/36703856/access-tomcat-manager-app-from-different-host
查看manager的context.xml配置文件 这个正则表达式代表了127.x.x.x
vi $CATALINA_HOMEwebapps/manager/META-INF/context.xml
第一种解决方法是
修改manager的context.xml配置文件
修改allow=“127.\d+.\d+.\d+|::1|0:0:0:0:0:0:0:1” 改为allow=".*"表示允许所有地址访问
vi $CATALINA_HOMEwebapps/manager/META-INF/context.xml
更改前
更改后
至此配置允许访问地址完成。
然后再次访问https://tomcatServer-ip:8443/manager
提示输入用户名密码
这个用户名密码默认没有启用 在
vi $CATALINA_HOME/conf/tomcat-users.xml
文件最下面是示例配置
我们需要在上图红框下面指定用户名密码 admin/admin
vi $CATALINA_HOME/conf/tomcat-users.xml
添加如下内容
<user username="admin" password="admin" roles="manager-gui,manager-script,manager-jmx,manager-status,admin-gui,admin-script"/>
然后再次访问https://tomcatServer-ip:8443/manager 输入我们配置的用户名和密码 admin/admin
访问成功
tomcat应用页面的认证方式
注意到上述访问时,提示的是Basic认证,那么tomcat应用页面的认证方式是在哪里配置的呢?
是在应用的web.xml配置文件中配置,以manager应用为例
vi $CATALINA_HOME/webapps/manager/WEB-INF/web.xml
至此,完成了配置访问默认应用manager。
以上是 配置访问 manager 的方法。
配置访问其他4个默认应用docx examples host-manager ROOT 的方法是一样的。
如果创建了其他虚拟主机,怎么为这个虚拟主机配置Manager应用呢?
默认Tomcat安装包括为默认虚拟主机配置的Manager应用程序实例。如果您创建了其他虚拟主机,您可能希望将Manager应用程序的实例添加到其中一个或多个主机中。在$CATALINA_BASE/conf/[engineename]/[hostname]文件夹中安装Manager .xml上下文配置文件,以便在新主机上添加一个Manager web应用程序Context实例。下面是一个例子:
<Context privileged="true" antiResourceLocking="false"
docBase="${catalina.home}/webapps/manager">
<CookieProcessor className="org.apache.tomcat.util.http.Rfc6265CookieProcessor"
sameSiteCookies="strict" />
<Valve className="org.apache.catalina.valves.RemoteAddrValve"
allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" />
<Manager sessionAttributeValueClassNameFilter="java\.lang\.(?:Boolean|Integer|Long|Number|String)|org\.apache\.catalina\.filters\.CsrfPreventionFilter\$LruCache(?:\$1)?|java\.util\.(?:Linked)?HashMap"/>
</Context>
4.2.2、host-manager应用
此章节涉及到tomcat的host-manager应用配置,相关内容可以参考官方配置文档 链接: https://tomcat.apache.org/tomcat-9.0-doc/host-manager-howto.html
编辑host-manager的context.xml配置文件
vi $CATALINA_HOMEwebapps/host-manager/META-INF/context.xml
更改前
更改后
访问https://tomcatServer-ip:8443/host-manager 输入我们配置的用户名和密码 admin/admin
4.2.3、docs应用
编辑docs的context.xml配置文件
vi $CATALINA_HOMEwebapps/docs/META-INF/context.xml
更改前
更改后
然后访问https://tomcatServer-ip:8443/docs 访问成功 没有提示输入用户名和密码
4.2.4、examples应用
编辑examples的context.xml配置文件
vi $CATALINA_HOMEwebapps/examples/META-INF/context.xml
更改前
更改后
访问https://tomcatServer-ip:8443/examples 访问成功 没有提示输入用户名和密码
4.3、使用tomcat 的DefaultServlet 的目录列表功能 搭建文件下载站点
参考链接 https://tomcat.apache.org/tomcat-9.0-doc/default-servlet.html
参考链接: https://stackoverflow.com/questions/5191735/is-it-possible-to-use-apache-tomcat-server-as-a-http-file-server
参考链接: https://www.moreofless.co.uk/static-content-web-pages-images-tomcat-outside-war
操作步骤
在xmlBase目录,即$CATALINA_HOME/conf/Catalina/localhost/ 目录下 新建fileDownloadSite.xml文件 这个文件名fileDownloadSite就是context PATH ,访问URL时这么访问 https://tomcatServer-ip:8443/fileDownloadSite
vi /usr/local/tomcat/conf/Catalina/localhost/fileDownloadSite.xml
添加如下内容
<?xml version="1.0" encoding="UTF-8"?>
<!--
Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements. See the NOTICE file distributed with
this work for additional information regarding copyright ownership.
The ASF licenses this file to You under the Apache License, Version 2.0
(the "License"); you may not use this file except in compliance with
the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<Context docBase="/root/package" />
注意:这里的docBase=“/root/package” 可以是主机上的任意绝对路径。
我的主机上有个目录是软件安装包目录,里面存放了大量的软件安装包,怎么能通过tomcat的URL访问到呢?比如/root/package目录下有JDK和TOMCAT安装包。那么就写docBase="/root/package"即可。
原理:
我们可以将Tomcat配置为从磁盘上的任何位置读取文件,并将它们提供给特定的URL。这个配置完全独立于您的应用程序配置—如果您愿意,您可以启动Tomcat,让它在不运行web应用程序的情况下从磁盘提供静态文件。
查看tomcat的context参考文档
除非Context元素是在server.xml中定义的,或者docBase不在主机的appBase下,否则不能设置该字段的值。
我们这里之所以设置docBase字段,就是docBase不在主机的appBase(appBase默认是 C A T A L I N A H O M E / w e b a p p s 目录 ) 下的这种情况。因为咱们的这个自定义 c o n t e x t 元素 CATALINA_HOME/webapps目录)下的这种情况。因为咱们的这个自定义context元素 CATALINAHOME/webapps目录)下的这种情况。因为咱们的这个自定义context元素CATALINA_HOME/conf/Catalina/localhost/fileDownloadSite.xml 不是在server.xml中定义的。
然后访问 https://tomcatServer-ip:8443/fileDownloadSite 报错如下
经分析 在tomcat的$CATALINA_HOME/conf/Catalina/localhost/ 目录下已经存在了fileDownloadSite.xml这样一个资源路径(就是context path),此问题的原因应该是tomcat服务器不愿公开一个已经存在的资源表示,不愿公开是什么意思呢?可能是配置上没有打开公开的开关。
此处涉及到一个概念:DefaultServlet
什么是tomcat的DefaultServlet呢,DefaultServlet即默认的servlet是既提供静态资源又提供目录列表(如果启用了目录列表)的servlet。
参考链接 https://tomcat.apache.org/tomcat-9.0-doc/default-servlet.html
因此需要更改DefaultServlet的配置看看能不能公开fileDownloadSite这个资源路径,即能通过URL访问到。
想要更改DefaultServlet的配置,首先需要知道在哪里配置的,然后去这个地方改配置。经查资料,DefaultServlet 在$CATALINA_BASE/conf/web.xml中全局声明。默认情况下,下面是它的声明:
<servlet>
<servlet-name>default</servlet-name>
<servlet-class>
org.apache.catalina.servlets.DefaultServlet
</servlet-class>
<init-param>
<param-name>debug</param-name>
<param-value>0</param-value>
</init-param>
<init-param>
<param-name>listings</param-name>
<param-value>false</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
...
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
这个配置的意思是:默认情况下,在webapp启动时加载默认servlet,禁用目录列表,关闭调试。
而搭建自己的文件下载站点需要启用目录列表功能,因此修改$CATALINA_BASE/conf/web.xml中关于DefaultServlet的目录列表 listings参数的配置。把false改成true
更改前
更改后
修改$CATALINA_BASE/conf/web.xml,不需要重启tomcat
修改后直接再次访问https://tomcatServer-ip:8443/fileDownloadSite 已经能访问了(需要清理浏览器缓存、刷新页面)
下载 jdk安装包
至此,文件下载站点搭建完成。
实际上可以通过修改修改docBase参数 使用https://tomcatServer-ip:8443/fileDownloadSite 访问到主机上的任意目录。
编辑$CATALINA_HOME/conf/Catalina/localhost/fileDownloadSite.xml 修改docBase参数为 $CATALINA_HOME:/usr/local/tomcat
<Context docBase="/usr/local/tomcat"/>
修改docBase后直接再次访问https://tomcatServer-ip:8443/fileDownloadSite 已经能访问了(需要清理浏览器缓存、刷新页面)
5、tomcat官方的配置参考文档
tomcat官方的配置参考文档: https://tomcat.apache.org/tomcat-9.0-doc/config/index.html
5.1、概述
本手册包含有关所有配置指令的参考信息,这些指令可以包含在conf/server.xml文件中,用于配置Tomcat Servlet/JSP容器的行为。它不试图描述应使用哪些配置指令来执行特定任务,请参阅主索引页上的各种“如何操作”文档。
Tomcat配置文件的格式为无模式XML;元素和属性区分大小写。支持Apache Ant风格的变量替换;名称为propname的系统属性可以使用语法${propname}在配置文件中使用。所有系统属性都可用,包括使用-D语法设置的属性、JVM自动提供的属性以及在$CATALINA_BASE/conf/CATALINA.properties文件中配置的属性。
从tomcat的server.xml配置文件 来看配置元素的层级结构。
- 顶层元素——<Server>是整个配置文件的根元素,而<Service>表示与引擎相关联的一组连接器。
- 连接器——表示向特定服务发送请求(并从该服务接收响应)的外部客户端之间的接口。
- 容器——表示组件,其功能是处理传入的请求,并创建相应的响应。引擎处理服务的所有请求,主机处理特定虚拟主机的所有请求,而上下文处理特定web应用程序的所有请求。
- 嵌套组件——表示可以嵌套在容器元素内部的元素。有些元素可以嵌套在任何Container中,而其他元素只能嵌套在Context中。
[root@centos tomcat]# cat conf/server.xml
<?xml version="1.0" encoding="UTF-8"?>
<!--
Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements. See the NOTICE file distributed with
this work for additional information regarding copyright ownership.
The ASF licenses this file to You under the Apache License, Version 2.0
(the "License"); you may not use this file except in compliance with
the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<!-- Note: A "Server" is not itself a "Container", so you may not
define subcomponents such as "Valves" at this level.
Documentation at /docs/config/server.html
-->
<Server port="8005" shutdown="SHUTDOWN">
<Listener className="org.apache.catalina.startup.VersionLoggerListener" />
<!-- Security listener. Documentation at /docs/config/listeners.html
<Listener className="org.apache.catalina.security.SecurityListener" />
-->
<!-- APR library loader. Documentation at /docs/apr.html -->
<Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />
<!-- Prevent memory leaks due to use of particular java/javax APIs-->
<Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" />
<Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" />
<Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener" />
<!-- Global JNDI resources
Documentation at /docs/jndi-resources-howto.html
-->
<GlobalNamingResources>
<!-- Editable user database that can also be used by
UserDatabaseRealm to authenticate users
-->
<Resource name="UserDatabase" auth="Container"
type="org.apache.catalina.UserDatabase"
description="User database that can be updated and saved"
factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
pathname="conf/tomcat-users.xml" />
</GlobalNamingResources>
<!-- A "Service" is a collection of one or more "Connectors" that share
a single "Container" Note: A "Service" is not itself a "Container",
so you may not define subcomponents such as "Valves" at this level.
Documentation at /docs/config/service.html
-->
<Service name="Catalina">
<!--The connectors can use a shared executor, you can define one or more named thread pools-->
<!--
<Executor name="tomcatThreadPool" namePrefix="catalina-exec-"
maxThreads="150" minSpareThreads="4"/>
-->
<!-- A "Connector" represents an endpoint by which requests are received
and responses are returned. Documentation at :
Java HTTP Connector: /docs/config/http.html
Java AJP Connector: /docs/config/ajp.html
APR (HTTP/AJP) Connector: /docs/apr.html
Define a non-SSL/TLS HTTP/1.1 Connector on port 8080
-->
<Connector port="8080" address="0.0.0.0" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443"
maxParameterCount="1000"
/>
<!-- A "Connector" using the shared thread pool-->
<!--
<Connector executor="tomcatThreadPool"
port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443"
maxParameterCount="1000"
/>
-->
<!-- Define an SSL/TLS HTTP/1.1 Connector on port 8443
This connector uses the NIO implementation. The default
SSLImplementation will depend on the presence of the APR/native
library and the useOpenSSL attribute of the AprLifecycleListener.
Either JSSE or OpenSSL style configuration may be used regardless of
the SSLImplementation selected. JSSE style configuration is used below.
-->
<Connector
protocol="org.apache.coyote.http11.Http11NioProtocol"
port="8443" maxThreads="200"
maxParameterCount="1000"
scheme="https" secure="true" SSLEnabled="true"
keystoreFile="/usr/local/tomcat/conf/tomcatSSLkeystore/keystore" keystorePass="changeit"
clientAuth="false" sslProtocol="TLS"/>
<!-- Define an SSL/TLS HTTP/1.1 Connector on port 8443 with HTTP/2
This connector uses the APR/native implementation which always uses
OpenSSL for TLS.
Either JSSE or OpenSSL style configuration may be used. OpenSSL style
configuration is used below.
-->
<!--
<Connector port="8443" protocol="org.apache.coyote.http11.Http11AprProtocol"
maxThreads="150" SSLEnabled="true"
maxParameterCount="1000"
>
<UpgradeProtocol className="org.apache.coyote.http2.Http2Protocol" />
<SSLHostConfig>
<Certificate certificateKeyFile="conf/localhost-rsa-key.pem"
certificateFile="conf/localhost-rsa-cert.pem"
certificateChainFile="conf/localhost-rsa-chain.pem"
type="RSA" />
</SSLHostConfig>
</Connector>
-->
<!-- Define an AJP 1.3 Connector on port 8009 -->
<!--
<Connector protocol="AJP/1.3"
address="::1"
port="8009"
redirectPort="8443"
maxParameterCount="1000"
/>
-->
<!-- An Engine represents the entry point (within Catalina) that processes
every request. The Engine implementation for Tomcat stand alone
analyzes the HTTP headers included with the request, and passes them
on to the appropriate Host (virtual host).
Documentation at /docs/config/engine.html -->
<!-- You should set jvmRoute to support load-balancing via AJP ie :
<Engine name="Catalina" defaultHost="localhost" jvmRoute="jvm1">
-->
<Engine name="Catalina" defaultHost="localhost">
<!--For clustering, please take a look at documentation at:
/docs/cluster-howto.html (simple how to)
/docs/config/cluster.html (reference documentation) -->
<!--
<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/>
-->
<!-- Use the LockOutRealm to prevent attempts to guess user passwords
via a brute-force attack -->
<Realm className="org.apache.catalina.realm.LockOutRealm">
<!-- This Realm uses the UserDatabase configured in the global JNDI
resources under the key "UserDatabase". Any edits
that are performed against this UserDatabase are immediately
available for use by the Realm. -->
<Realm className="org.apache.catalina.realm.UserDatabaseRealm"
resourceName="UserDatabase"/>
</Realm>
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true">
<!-- SingleSignOn valve, share authentication between web applications
Documentation at: /docs/config/valve.html -->
<!--
<Valve className="org.apache.catalina.authenticator.SingleSignOn" />
-->
<!-- Access log processes all example.
Documentation at: /docs/config/valve.html
Note: The pattern used is equivalent to using pattern="common" -->
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="localhost_access_log" suffix=".txt"
pattern="%h %l %u %t "%r" %s %b" />
</Host>
</Engine>
</Service>
</Server>
[root@centos tomcat]#
对于每个元素,相应的文档遵循以下总体大纲:
- 引言-对该特定组件的总体描述。将有一个对应的Java接口(在org.apache.catalina包中),由一个或多个标准实现实现。
- 属性-此元素的合法属性集。通常,这将被细分为相应Java接口的所有实现所支持的通用属性,以及特定于实现该接口的特定Java类的标准实现属性。所需属性的名称被保留。
- 嵌套组件-枚举哪些嵌套组件可以合法地嵌套在此元素中。
- 特殊功能-描述由该接口的标准实现支持的大量特殊功能(特定于每种元素类型)的配置。
5.2、The Server Component
链接: https://tomcat.apache.org/tomcat-9.0-doc/config/server.html
5.2.1、引言
一个Server元素表示整个Catalina servlet容器。因此,它必须是conf/server.xml配置文件中最外层的一个元素。它的属性代表了servlet容器的整体特征。
5.2.2、属性
5.2.2.1、
5.2.2.2、
5.2.3、嵌套组件
5.2.4、特殊功能
5.3、The Service Component
链接: https://tomcat.apache.org/tomcat-9.0-doc/config/service.html
5.3.1、引言
5.3.2、属性
5.3.2.1、
5.3.2.2、
5.3.3、嵌套组件
5.3.4、特殊功能
5.4、The Service Component
链接: https://tomcat.apache.org/tomcat-9.0-doc/config/service.html
5.4.1、引言
5.4.2、属性
5.4.2.1、
5.4.2.2、
5.4.3、嵌套组件
5.4.4、特殊功能
5.5、The Executor (thread pool)
链接: https://tomcat.apache.org/tomcat-9.0-doc/config/executor.html
5.5.1、引言
5.5.2、属性
5.5.2.1、
5.5.2.2、
5.5.3、嵌套组件
5.5.4、特殊功能
5.6、The Connector Component
5.6.1、The HTTP Connector Component
链接: https://tomcat.apache.org/tomcat-9.0-doc/config/http.html
5.6.1.1、引言
5.6.1.2、属性
5.6.1.2.1、
5.6.1.2.2、
5.6.1.3、嵌套组件
5.6.1.4、特殊功能
5.6.2、The HTTP2 Upgrade Protocol
链接: https://tomcat.apache.org/tomcat-9.0-doc/config/http2.html
5.6.2.1、引言
5.6.2.2、属性
5.6.2.2.1、
5.6.2.2.2、
5.6.2.3、嵌套组件
5.6.2.4、特殊功能
5.6.3、The AJP Connector
链接: https://tomcat.apache.org/tomcat-9.0-doc/config/ajp.html
5.6.3.1、引言
5.6.3.2、属性
5.6.3.2.1、
5.6.3.2.2、
5.6.3.3、嵌套组件
5.6.3.4、特殊功能
5.7、The Container Component
5.7.1、The Context Container
链接: https://tomcat.apache.org/tomcat-9.0-doc/config/context.html
5.7.1.1、引言
5.7.1.2、属性
5.7.1.2.1、
5.7.1.2.2、
5.7.1.3、嵌套组件
5.7.1.4、特殊功能
5.7.2、The Engine Container
链接: https://tomcat.apache.org/tomcat-9.0-doc/config/engine.html
5.7.2.1、引言
5.7.2.2、属性
5.7.2.2.1、
5.7.2.2.2、
5.7.2.3、嵌套组件
5.7.2.4、特殊功能
5.7.3、The Host Container
链接: https://tomcat.apache.org/tomcat-9.0-doc/config/host.html
5.7.3.1、引言
5.7.3.2、属性
5.7.3.2.1、
5.7.3.2.2、
5.7.3.3、嵌套组件
5.7.3.4、特殊功能
5.7.4、The Cluster object
链接: https://tomcat.apache.org/tomcat-9.0-doc/config/cluster.html
5.7.4.1、引言
5.7.4.2、属性
5.7.4.2.1、
5.7.4.2.2、
5.7.4.3、嵌套组件
5.7.4.4、特殊功能
5.8、The Nested Components
5.8.1、The Cookie Processor Component
链接: https://tomcat.apache.org/tomcat-9.0-doc/config/cookie-processor.html
5.8.1.1、引言
5.8.1.2、属性
5.8.1.2.1、
5.8.1.2.2、
5.8.1.3、嵌套组件
5.8.1.4、特殊功能
5.8.2、The CredentialHandler Component
链接: https://tomcat.apache.org/tomcat-9.0-doc/config/credentialhandler.html
5.8.2.1、引言
5.8.2.2、属性
5.8.2.2.1、
5.8.2.2.2、
5.8.2.3、嵌套组件
5.8.2.4、特殊功能
5.8.3、The GlobalNamingResources Component
链接: https://tomcat.apache.org/tomcat-9.0-doc/config/globalresources.html
5.8.3.1、引言
5.8.3.2、属性
5.8.3.2.1、
5.8.3.2.2、
5.8.3.3、嵌套组件
5.8.3.4、特殊功能
5.8.4、The Jar Scanner Component
链接: https://tomcat.apache.org/tomcat-9.0-doc/config/jar-scanner.html
5.8.4.1、引言
5.8.4.2、属性
5.8.4.2.1、
5.8.4.2.2、
5.8.4.3、嵌套组件
5.8.4.4、特殊功能
5.8.5、The Jar Scan Filter Component
链接: https://tomcat.apache.org/tomcat-9.0-doc/config/jar-scan-filter.html
5.8.5.1、引言
5.8.5.2、属性
5.8.5.2.1、
5.8.5.2.2、
5.8.5.3、嵌套组件
5.8.5.4、特殊功能
5.8.6、The LifeCycle Listener Component
链接: https://tomcat.apache.org/tomcat-9.0-doc/config/listeners.html
5.8.6.1、引言
5.8.6.2、属性
5.8.6.2.1、
5.8.6.2.2、
5.8.6.3、嵌套组件
5.8.6.4、特殊功能
5.8.7、The Loader Component
链接: https://tomcat.apache.org/tomcat-9.0-doc/config/loader.html
5.8.7.1、引言
5.8.7.2、属性
5.8.7.2.1、
5.8.7.2.2、
5.8.7.3、嵌套组件
5.8.7.4、特殊功能
5.8.8、The Manager Component
链接: https://tomcat.apache.org/tomcat-9.0-doc/config/manager.html
5.8.8.1、引言
5.8.8.2、属性
5.8.8.2.1、
5.8.8.2.2、
5.8.8.3、嵌套组件
5.8.8.4、特殊功能
5.8.9、The Realm Component
链接: https://tomcat.apache.org/tomcat-9.0-doc/config/realm.html
5.8.9.1、引言
5.8.9.2、属性
5.8.9.2.1、
5.8.9.2.2、
5.8.9.3、嵌套组件
5.8.9.4、特殊功能
5.8.10、The Resources Component
链接: https://tomcat.apache.org/tomcat-9.0-doc/config/resources.html
5.8.10.1、引言
5.8.10.2、属性
5.8.10.2.1、
5.8.10.2.2、
5.8.10.3、嵌套组件
5.8.10.4、特殊功能
5.8.11、The SessionIdGenerator Component
链接: https://tomcat.apache.org/tomcat-9.0-doc/config/sessionidgenerator.html
5.8.11.1、引言
5.8.11.2、属性
5.8.11.2.1、
5.8.11.2.2、
5.8.11.3、嵌套组件
5.8.11.4、特殊功能
5.8.12、The Valve Component
链接: https://tomcat.apache.org/tomcat-9.0-doc/config/valve.html
5.8.12.1、引言
5.8.12.2、属性
5.8.12.2.1、
5.8.12.2.2、
5.8.12.3、嵌套组件
5.8.12.4、特殊功能
5.9、The Cluster Elements Components
5.9.1、The Cluster object
链接: https://tomcat.apache.org/tomcat-9.0-doc/config/cluster.html
5.9.1.1、引言
5.9.1.2、属性
5.9.1.2.1、
5.9.1.2.2、
5.9.1.3、嵌套组件
5.9.1.4、特殊功能
5.9.2、The ClusterManager object
链接: https://tomcat.apache.org/tomcat-9.0-doc/config/cluster-manager.html
5.9.2.1、引言
5.9.2.2、属性
5.9.2.2.1、
5.9.2.2.2、
5.9.2.3、嵌套组件
5.9.2.4、特殊功能
5.9.3、The Cluster Channel object
链接: https://tomcat.apache.org/tomcat-9.0-doc/config/cluster-channel.html
5.9.3.1、引言
5.9.3.2、属性
5.9.3.2.1、
5.9.3.2.2、
5.9.3.3、嵌套组件
5.9.3.4、特殊功能
5.9.4、The Cluster Membership object
链接: [https://tomcat.apache.org/tomcat-9.0-doc/config/cluster-membership.html]https://tomcat.apache.org/tomcat-9.0-doc/config/cluster-membership.html)
5.9.4.1、引言
5.9.4.2、属性
5.9.4.2.1、
5.9.4.2.2、
5.9.4.3、嵌套组件
5.9.4.4、特殊功能
5.9.5、The Cluster Sender object
链接: https://tomcat.apache.org/tomcat-9.0-doc/config/cluster-sender.html
5.9.5.1、引言
5.9.5.2、属性
5.9.5.2.1、
5.9.5.2.2、
5.9.5.3、嵌套组件
5.9.5.4、特殊功能
5.9.6、The Cluster Receiver object
链接: https://tomcat.apache.org/tomcat-9.0-doc/config/cluster-receiver.html
5.9.6.1、引言
5.9.6.2、属性
5.9.6.2.1、
5.9.6.2.2、
5.9.6.3、嵌套组件
5.9.6.4、特殊功能
5.9.7、The Cluster Receiver object
链接: https://tomcat.apache.org/tomcat-9.0-doc/config/cluster-interceptor.html
5.9.7.1、引言
5.9.7.2、属性
5.9.7.2.1、
5.9.7.2.2、
5.9.7.3、嵌套组件
5.9.7.4、特殊功能
5.9.8、The Cluster Valve object
链接: https://tomcat.apache.org/tomcat-9.0-doc/config/cluster-valve.html
5.9.8.1、引言
5.9.8.2、属性
5.9.8.2.1、
5.9.8.2.2、
5.9.8.3、嵌套组件
5.9.8.4、特殊功能
5.9.9、The Cluster Deployer object
链接: https://tomcat.apache.org/tomcat-9.0-doc/config/cluster-deployer.html
5.9.9.1、引言
5.9.9.2、属性
5.9.9.2.1、
5.9.9.2.2、
5.9.9.3、嵌套组件
5.9.9.4、特殊功能
5.9.10、The ClusterListener object
链接: https://tomcat.apache.org/tomcat-9.0-doc/config/cluster-listener.html
5.9.10.1、引言
5.9.10.2、属性
5.9.10.2.1、
5.9.10.2.2、
5.9.10.3、嵌套组件
5.9.10.4、特殊功能
5.10、The web.xml Component
链接: https://tomcat.apache.org/tomcat-9.0-doc/config/filter.html
5.10.1、引言
Tomcat提供了许多过滤器,这些过滤器可以配置为与使用$CATALINA_BASE/conf/web.xml的所有web应用程序一起使用,也可以通过在应用程序的web-INF/web.xml中配置来为单个web应用程序配置。每个过滤器如下所述。
此描述使用变量名$CATALINA_BASE来引用解析大多数相对路径所依据的基本目录。如果您没有通过设置CATALINA_BASE目录为多个实例配置Tomcat,那么$CATALINA_BASE将被设置为$CATALINA_HOME的值,即您已将Tomcat安装到的目录。
5.10.2、属性
5.10.2.1、
5.10.2.2、
5.10.3、嵌套组件
5.10.4、特殊功能
5.11、The Other Components
5.11.1、System Properties
链接: https://tomcat.apache.org/tomcat-9.0-doc/config/systemprops.html
5.11.1.1、引言
5.11.1.2、属性
5.11.1.2.1、
5.11.1.2.2、
5.11.1.3、嵌套组件
5.11.1.4、特殊功能
5.11.2、JASPIC
链接: https://tomcat.apache.org/tomcat-9.0-doc/config/jaspic.html
5.11.2.1、引言
5.11.2.2、属性
5.11.2.2.1、
5.11.2.2.2、
5.11.2.3、嵌套组件
5.11.2.4、特殊功能
6、使用tomcat开发自己的第一个web应用
Tomcat应用部署文档 https://tomcat.apache.org/tomcat-9.0-doc/appdev/index.html