tomcat
文章目录
tomcat简介
Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache、Sun 和其他一些公司及个人共同开发而成。由于有了Sun 的参与和支持,最新的Servlet 和JSP 规范总是能在Tomcat 中得到体现,Tomcat 5支持最新的Servlet 2.4 和JSP 2.0 规范。因为Tomcat 技术先进、性能稳定,而且免费,因而深受Java 爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的Web 应用服务器。
Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。对于一个初学者来说,可以这样认为,当在一台机器上配置好Apache 服务器,可利用它响应HTML(标准通用标记语言下的一个应用)页面的访问请求。实际上Tomcat是Apache 服务器的扩展,但运行时它是独立运行的,所以当你运行tomcat 时,它实际上作为一个与Apache 独立的进程单独运行的。
诀窍是,当配置正确时,Apache 为HTML页面服务,而Tomcat 实际上运行JSP 页面和Servlet。另外,Tomcat和IIS等Web服务器一样,具有处理HTML页面的功能,另外它还是一个Servlet和JSP容器,独立的Servlet容器是Tomcat的默认模式。不过,Tomcat处理静态HTML的能力不如Apache服务器。目前Tomcat最新版本为9.0。
tomcat就是传说中的中间件之一,tomcat本身是一个容器,专门用来运行java程序,java语言开发的网页.jsp就应该运行于tomcat中。而tomcat本身的运行也依赖于jdk环境。
tomcat应用场景:
lnmt
tomcat 配置文件说明
- server.xml:Tomcat的主配置文件,包含Service, Connector, Engine, Realm, Valve, Hosts主组件的相关配置信息;
- web.xml:遵循Servlet规范标准的配置文件,用于配置servlet,并为所有的Web应用程序提供包括MIME映射等默认配置信息;
- context.xml:所有host的默认配置信息;
- logging.properties:日志相关配置;
- tomcat-users.xml:Realm认证时用到的相关角色、用户和密码等信息;Tomcat自带的manager默认情况下会用到此文件;在Tomcat中添加/删除用户,为用户指定角色等将通过编辑此文件实现;
- catalina.policy:Java相关的安全策略配置文件,在系统资源级别上提供访问控制的能力,以安全模式启动Tomcat会使用这个配置
- catalina.properties:Tomcat内部package的定义及访问相关的控制,也包括对通过类装载器装载的内容的控制;Tomcat在启动时会事先读取此文件的相关设置;
- jaspic-providers.xml:用户认证配置文件
tomcat部署
部署流程
:
关闭防火墙与SELinux
安装jdk(java)环境
从
tomcat官网
下载tomcat二进制包
解压、编译、启动tomcat
去浏览器网页测试是否可以访问
准备环境
#防火墙要处于关闭状态
[root@localhost ~]# systemctl status firewalld.service
● firewalld.service - firewalld - dynamic firewall daemon
Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)
Active: inactive (dead)
Docs: man:firewalld(1)
#SELinux要处于禁用状态
[root@localhost ~]# getenforce
Disabled
安装jdk环境
#安装jdk环境
[root@localhost ~]# dnf -y install java-17-openjdk
.......安装过程略......
安装tomcat
#下载tomcat的二进制包至/usr/local/src目录下
[root@localhost ~]# cd /usr/local/src/
[root@localhost src]# wget https://dlcdn.apache.org/tomcat/tomcat-10/v10.0.23/bin/apache-tomcat-10.0.23.tar.gz
--2022-09-27 16:54:26-- https://dlcdn.apache.org/tomcat/tomcat-10/v10.0.23/bin/apache-tomcat-10.0.23.tar.gz
Resolving dlcdn.apache.org (dlcdn.apache.org)... 151.101.2.132, 2a04:4e42::644
Connecting to dlcdn.apache.org (dlcdn.apache.org)|151.101.2.132|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 11972768 (11M) [application/x-gzip]
Saving to: ‘apache-tomcat-10.0.23.tar.gz’
apache-tomcat-10.0.23.tar.gz 100%[===================================================>] 11.42M 3.56MB/s in 3.3s
2022-09-27 16:54:30 (3.43 MB/s) - ‘apache-tomcat-10.0.23.tar.gz’ saved [11972768/11972768]
[root@localhost src]# ls
apache-tomcat-10.0.23.tar.gz
#解压tomcat二进制包至/usr/local下
[root@localhost src]# tar xf apache-tomcat-10.0.23.tar.gz -C /usr/local/
#进到/usr/local目录下
[root@localhost src]# cd /usr/local/
[root@localhost local]# ls
apache-tomcat-10.0.23 bin etc games include lib lib64 libexec sbin share src
#将一长串的tomcat目录改名为tomcat
[root@localhost local]# mv apache-tomcat-10.0.23/ tomcat
[root@localhost local]# ls
bin etc games include lib lib64 libexec sbin share src tomcat
#进到tomcat目录里查看里面的目录与文件
[root@localhost local]# cd tomcat/
[root@localhost tomcat]# ls
bin conf lib logs README.md RUNNING.txt webapps
BUILDING.txt CONTRIBUTING.md LICENSE NOTICE RELEASE-NOTES temp work
#写一个hello world的java页面用于测试
[root@localhost tomcat]# cd webapps/
[root@localhost webapps]# ls
docs examples host-manager manager ROOT
[root@localhost webapps]# mkdir test
[root@localhost webapps]# vim test/index.jsp
<html>
<head>
<title>test page</title>
</head>
<body>
<%
out.println("Hellow World");
%>
</body>
</html>
#进到tomcat的bin目录查看一下服务管理脚本
[root@localhost webapps]# cd /usr/local/tomcat/bin/
[root@localhost bin]# ls
bootstrap.jar ciphers.sh daemon.sh migrate.bat shutdown.sh tool-wrapper.bat
catalina.bat commons-daemon.jar digest.bat migrate.sh startup.bat tool-wrapper.sh
catalina.sh commons-daemon-native.tar.gz digest.sh setclasspath.bat startup.sh version.bat
catalina-tasks.xml configtest.bat makebase.bat setclasspath.sh tomcat-juli.jar version.sh
ciphers.bat configtest.sh makebase.sh shutdown.bat tomcat-native.tar.gz
#启动tomcat
[root@localhost bin]# ./startup.sh
Using CATALINA_BASE: /usr/local/tomcat
Using CATALINA_HOME: /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME: /usr
Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Using CATALINA_OPTS:
Tomcat started.
#tomcat的默认端口是8080。8005是用于停止tomcat的端口号
[root@localhost bin]# ss -anlt
State Recv-Q Send-Q Local Address:Port Peer Address:Port Process
LISTEN 0 128 0.0.0.0:22 0.0.0.0:*
LISTEN 0 128 [::]:22 [::]:*
LISTEN 0 1 [::ffff:127.0.0.1]:8005 *:*
LISTEN 0 100 *:8080 *:*
通过浏览器访问
访问tomcat默认首页
访问自建的hello world测试页
配置tomcat
访问Host Manager界面
Host Manager界面用于管理虚拟主机
1.点击【Host Manager】
2.初次访问可以看到“Access Denied”,意为访问拒绝。该界面说明了如何设置访问不被拒绝
这张是上张图翻译后的
[root@localhost tomcat]# pwd
/usr/local/tomcat
#配置tomcat-users.xml文件,在</tomcat-users>行上面添加两行,设置角色,登录用户名和密码,
#角色名称只能是admin-gui 用户名和密码自定义
[root@localhost tomcat]# vim conf/tomcat-users.xml
<role rolename="admin-gui"/> #添加此行
<user username="tomcat" password="123456" roles="admin-gui"/> #添加此行
</tomcat-users> #默认在最后一行
#配置webapps/host-manager/META-INF/context.xml文件,允许你当前的网段访问,在allow字段后添加
[root@localhost tomcat]# vim /usr/local/tomcat/webapps/host-manager/META-INF/context.xml
<Context antiResourceLocking="false" privileged="true" >
<CookieProcessor className="org.apache.tomcat.util.http.Rfc6265CookieProcessor"
sameSiteCookies="strict" />
<Valve className="org.apache.catalina.valves.RemoteAddrValve"
allow="192\.168\.92\.\d+|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>
#重启服务,生效配置
[root@localhost tomcat]# /usr/local/tomcat/bin/catalina.sh stop
[root@localhost tomcat]# /usr/local/tomcat/bin/catalina.sh start
配完上述配置后再次访问【Host Manager】
用户名与密码就是你在
tomcat-users.xml
里配置的那个
访问Server Status
1.访问【Server Status】
2.初次访问可以看到“Access Denied”,意为访问拒绝。该界面说明了如何设置访问不被拒绝
是不是跟上一步相似?只是角色类型不一样了
[root@localhost tomcat]# pwd
/usr/local/tomcat
[root@localhost tomcat]# vim conf/tomcat-users.xml
<role rolename="admin-gui"/>
<role rolename="manager-gui"/> #添加此行
<user username="tomcat" password="123456" roles="admin-gui,manager-gui"/> #roles追加一个manager-gui
</tomcat-users>
#配置webapps/manager/META-INF/context.xml文件,允许你当前的网段访问,在allow字段后添加
[root@localhost tomcat]# vim webapps/manager/META-INF/context.xml
<Context antiResourceLocking="false" privileged="true" >
<CookieProcessor className="org.apache.tomcat.util.http.Rfc6265CookieProcessor"
sameSiteCookies="strict" />
<Valve className="org.apache.catalina.valves.RemoteAddrValve"
allow="192\.168\.92\.\d+|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>
#重启服务,生效配置
[root@localhost tomcat]# bin/catalina.sh stop
[root@localhost tomcat]# bin/catalina.sh start
配完上述配置后再次访问【Server Status】
访问Manager App
因配置了【Server Status】所以【Manager App】可以直接访问!