Tomcat简介
Tomcat 是一个开源的Web应用服务器,由Apache软件基金会维护,是Jakarta项目的一部分。它主要作为Servlet容器使用,支持Servlet和JSP(JavaServer Pages)技术。Tomcat可以独立运行,作为Web服务器处理动态内容,同时也能与Apache或Nginx等传统Web服务器配合,前者处理静态内容,后者处理动态请求。
主要特点:
- 免费与开源:Tomcat是免费的,基于Apache许可证2.0发布,这意味着任何人都可以使用、修改和分发它。
- 支持Servlet和JSP:Tomcat实现了Java EE(现称Jakarta EE)的Servlet和JSP规范,允许开发者创建动态Web内容。
- 轻量级:相较于其他全功能应用服务器,如WebLogic或WebSphere,Tomcat更轻量级,启动更快,占用资源更少。
- 灵活性:Tomcat可以独立运行,也可以与其他Web服务器集成,如通过mod_jk或mod_proxy与Apache集成。
- 跨平台:由于是用Java编写的,Tomcat可以在多种操作系统上运行,包括Windows、Linux、Mac OS等。
- 易于配置:Tomcat的配置主要通过XML文件完成,提供了灵活的配置选项,便于调整以适应不同的需求。
- 活跃的社区支持:作为Apache项目的一部分,Tomcat拥有一个庞大的开发者和用户社区,提供了丰富的文档、教程和技术支持。
适用场景:
- 开发与测试:Tomcat因其轻量级特性和易用性,是开发和测试JSP和Servlet的理想选择。
- 中小型项目:对于并发用户数不是特别高的中小型项目,Tomcat可以提供足够的性能和稳定性。
- 教育用途:Tomcat常用于教学环境,帮助学生理解和实践Java Web开发技术。
任务准备
- 安装好JDK 1.8+:确保JDK已正确安装并配置。
任务描述
某企业想架设一台Tomcat Web服务器,通过Tomat控制台部署Web应用程序。
任务实施
1、apache官网tomcat.apache.org/
下载apache-tomcat-9.0.29.tar.gz
2、解压tomcat至/opt目录
[root@localhost /]# tar -zxvf apache-tomcat-9.0.29.tar.gz -C /opt
3、验证JDK是否安装成功。如果未安装JDK请参照本章项目实训一安装和配置JDK即可。
[root@localhost /]# java -version
(1)、修改catalina.sh,在第二行添加如下内容:
4、配置Tomcat加大tomcat虚拟机内存
JAVA_OPTS="$JAVA_OPTS -server -Xms2048m -Xmx2048m"
备注说明:
-server参数:表示以服务模式启动,启动速度会稍微慢一点,但性能会高很多。
不加这个参数,默认是以客户端模式启动。
java.awt.headless=true参数:与图形操作有关,适用于linux系统。
如生成验证码,含义是当前使用的是没有安装图安装图形界面的服务器,
应用中如果获取系统显示有关参数会抛异常。
-XX:PermSize设置永久代初始值,默认是物理内存的1/64。java1.8以后不起作用了,
改成了元空间,对应参数-XX:MetaspaceSize
-XX:MetaspaceSize,初始空间大小,达到该值就会触发垃圾收集进行类型卸载,
同时GC会对该值进行调整:如果释放了大量的空间,
就适当降低该值;如果释放了很少的空间,那么在不超过MaxMetaspaceSize时,适当提高该值。
-XX:MaxMetaspaceSize,最大空间,默认是没有限制的。
XX:MaxPermSize设置最大非堆内存的大小,默认是物理内存的1/4。java1.8以后不起作用了,
改成了元空间,对应参数 -XX:MaxMetaspaceSize
-Xms、-Xmx:JVM内存设置(堆内存)。
这两个参数最好设置成一样的,避免上下文切换消耗资源。JDK8+版本以上,
PermSize MaxPermSize这两个参数没用了。
-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/path oom时打印dump文件到指定路径
(2)、修改http端口号为80,tomcat默认是8080
可以修改apache-tomcat-9.0.29/conf/server.xml文件
(3)、优化tomcat 并发线程数maxThreads、地址编码URIEncoding="UTF-8"、
启用压缩compression="on"其他参数视具体tomcat版本定
参照如下:根据实际情况调整,不能直接复制
<Connector
port="80"
maxThreads="1000"
minSpareThreads="100"
acceptCount="5000"
disableUploadTimeout="true"
connectionTimeout="30000"
URIEncoding="UTF-8"
redirectPort="8443"
compression="on"
compressionMinSize="1024"
useSendfile="false"
noCompressionUserAgents="gozilla, traviata"
compressibleMimeType="text/html,text/xml,text/plain,text/css,text/javascript,application/javascript"/>
备注说明:
maxThreads:最大线程数,默认150。增大值避免队列请求过多,导致响应缓慢。
minSpareThreads:最小空闲线程数。
acceptCount:当处理请求超过此值时,将后来请求放到队列中等待。
disableUploadTimeout:禁用上传超时时间
connectionTimeout:连接超时,单位毫秒,0代表不限制
URIEncoding:URI地址编码使用UTF-8
enableLookups:关闭dns解析,提高响应时间
compression:启用压缩功能
compressionMinSize:最小压缩大小,单位Byte
compressibleMimeType :压缩的文件类型
noCompressionUserAgents: 对 gozilla, traviata 这两个浏览器不启用压缩。
useSendfile:默认为true。如果启用此功能,则发送会优先于压缩。
[root@localhost /]# vi /opt/apache-tomcat-9.0.29/conf/server.xml
修改apache-tomcat-9.0.29/conf/tomcat-users.xml替换成如下内容:
5、去掉,修改配置tomcat管理员(admin)控制台
<role rolename="manager-gui"/>
<user username="admin" password="admin" roles="manager-gui"/>
[root@localhost conf]# vim tomcat-users.xml
Tomcat的bin目录执行启动(startup.sh)和停止(shutdown.sh)命令;
如果是使用./Catalina.sh run 启动服务,对应可以使用ctrl+C停止服务。
6、启动/停止tomcat
[root@localhost bin]# ./startup.sh --后台运行
[root@localhost bin]# ./catalina.sh run --控制台打印日志,方便调试,使用ctrl+C停止tomcat
[root@localhost bin]# ./shutdown.sh --关闭tomcat服务器
7、访问tomcat管理控制台:前提确保tomcat已正常运行,可以通过ps -ef|grep tomcat查看进程。
如果是端口冲突,使用netstat -tnlp查看端口情况
http://localhost:80/manager/html
8、如果远程操作tomcat控制台,则需要修改
webapps/manager/META-INF/目录下context.xml文件,不是conf/目录下的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="127.d+.d+.d+|::1|0:0:0:0:0:0:0:1|d+.d+.d+.d+" />
<Manager sessionAttributeValueClassNameFilter="java.lang.(?:Boolean|Integer|Long|Number|String)|org.apache.catalina.filters.CsrfPreventionFilter$LruCache(?:$1)?|java.util.(?:Linked)?HashMap"/>
-->
</Context>
保存,然后重启tomcat,重新访问manager app页面就可以实现远程操作控制台了。
实验实训
Tomcat安装并实现开机自启
1、安装Tomat步骤同上使用压缩包安装的模式
2、设置开机自启方法
2.1.创建setenv.sh环境变量文件
进入到/opt/apache-tomcat-9.0.52\bin目录下,新建setenv.sh文件
vim setenv.sh
写入的内容如下:注意修改对应的tomcat路径与自己服务器一致
export CATALINA_HOME=/opt/apache-tomcat-9.0.52
export CATALINA_BASE=/opt/apache-tomcat-9.0.52
#设置Tomcat的PID文件
CATALINA_PID="$CATALINA_BASE/tomcat.pid"
#添加JVM选项
JAVA_OPTS="-server -Xms2048M -Xmx2048M"
2.2.编写tomcat.service文件
在/usr/lib/systemd/system路径下添加tomcat.service文件。
注意:文件中目录路径必须是绝对路径
vim /usr/lib/systemd/system/tomcat.service
内容如下:
[Unit]
Description=Tomcat9
After=syslog.target network.target remote-fs.target nss-lookup.target
[Service]
Type=forking
PIDFile=/opt/apache-tomcat-9.0.52/tomcat.pid
ExecStart=/opt/apache-tomcat-9.0.52/bin/startup.sh
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true
[Install]
WantedBy=multi-user.target
#说明
[unit]配置了服务的描述,规定了在network启动之后执行,
[service]配置服务的pid,服务的启动,停止,重启
[install]配置了使用用户
2.3 设置服务开机自启
systemctl enable tomcat
2.4 重启服务器验证是否有效实现开机自启
systemctl status tomcat
出现active(running)字样说明成功