tomcat介绍:安装与优化

简介

Tomcat是一款免费、开放源代码的web应用服务器,是Apache软件基金会的一个核心开源项目,属于轻量级应用服务器,通常意义上的 web服务器接受请求后,只是单纯地响应静态资源,如 HTMI文件,图片文件等,不能在后端进行一定的处理操作。“Tomcat是 Apache 下的一个子项目,它具备 Web服务器的所有功能,不仅可以监听接受请求并响应静态资源,而且可以在后端运行特定规范的Java代码Servlet,同时将执行的结果以HTML代码的形式写回客户端。

工作流程

当用户访问业务项目例如支付宝淘宝等,nginx负责静态页面的处理以及展示index.jsp这种动态页面,然后用户对网页进行注册或者支付等操作,修改了index.jsp文件中的java代码(这里我不知道对不对),而jsp容器无法执行文件中的servlet代码于是转交给servlet容器,由其中的catalina脚本进行翻译,翻译后转交给业务项目,然后业务项目通过其中的java代码对数据库进行调用,再然后一级一级返回,最终返回给用户。

安装

首先,tomcat运行需要依赖jdk编译器,所以先安装jdk,jdk用于将java源码文件转换为执行文件。

#通过rpm命令安装jdk编译器
rpm -ivh jdk-8u201-linux-x64.rpm
java -version									#查看java版本,由于开源版本可能对某些功能不兼容,所以需要修改版本
openjdk version "1.8.0_181"
OpenJDK Runtime Environment (build 1.8.0_181-b13)
OpenJDK 64-Bit Server VM (build 25.181-b13, mixed mode)

#设置jdk的环境变量,两种方法,一种是创建一个脚本文件,第二种进入/etc/profile.d文件中添加下面的几行
vim /etc/profile.d/java.sh
export JAVA_HOME=/usr/java/jdk1.8.0_201-amd64	#声明jdk的工作目录以及版本
export CLASSPATH=.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar	#声明可执行文件的tools工具和运行库的位置
export PATH=$JAVA_HOME/bin:$PATH				#声明java的环境变量目录
source /etc/profile.d/java.sh					#重新加载这个环境变量脚本
java -version									#查看版本,发现已经变更
java version "1.8.0_201"
Java(TM) SE Runtime Environment (build 1.8.0_201-b09)
Java HotSpot(TM) 64-Bit Server VM (build 25.201-b09, mixed mode)

jdk安装好后,开始安装tomcat

#解压tomcat软件包并移动至/usr/local/tomcat目录下
tar zxvf apache-tomcat-9.0.16.tar.gz -C /opt
mv /opt/apache-tomcat-9.0.16/ /usr/local/tomcat

#查看该目录
ls /usr/local/tomcat
bin           CONTRIBUTING.md  logs       RELEASE-NOTES  webapps
BUILDING.txt  lib              NOTICE     RUNNING.txt    work
conf          LICENSE          README.md  temp

tomcat下的目录说明:
bin:存放启动关闭tomcat的文件,常用的是catalina.sh(翻译java代码),startup.sh(启动脚本),shutdown.sh(关闭脚本)。

conf:存放tomcat服务的配置文件,常用的有server.xml(主配置文件)、context.xml、tomcat-users.xml、web.xml。

lib:存放tomcat服务的jar包,除非和第三方服务进行连接比如redis,否则不作修改。

logs:存放tomcat日志文件,tomcat会自动进行日志分割。

temp:存放tomcat运行产生的文件。

webapps:存放项目资源的目录。

work:tomcat的工作目录,清除tomcat缓存时会用到。

#创建软连接,方便一键启动关闭
ln -s /usr/local/tomcat/bin/startup.sh /usr/local/bin/
ln -s /usr/local/tomcat/bin/shutdown.sh /usr/local/bin/

#启动tomcat
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/java/jdk1.8.0_201-amd64
Using CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Tomcat started.
#查看是否成功开启,tomcat的端口号是8080且由于与web服务的连接器是java支持的,所以服务显示的是java
netstat -natp |grep 8080
tcp6       0      0 :::8080                 :::*                    LISTEN      48908/java

启动成功后,访问8080端口。
在这里插入图片描述

tomcat虚拟主机

当一台服务器需要运行多个项目时,需要用到虚拟主机(运行多个tomcat会极大的损耗服务器资源)。

#首先进入/etc/hosts文件中添加域名和地址的映射
vim /etc/hosts
192.168.214.215 www.shiki.com www.shiki1.com

#再webapps目录下新建两个项目目录
mkdir /usr/local/tomcat/webapps/shiki
mkdir /usr/local/tomcat/webapps/shiki1
echo "this is shiki page\!" > /usr/local/tomcat/webapps/shiki/index.jsp
echo "this is shiki1 page\!" > /usr/local/tomcat/webapps/shiki1/index.jsp

#进入tomcat的主配置文件,在配置文件中以host开头,host结尾表示一个项目
<!--开头	-->结尾表示注释。在148-150行的host项目中修改
vim /usr/local/tomcat/conf/server.xml
<Host name="www.shiki.com"  appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false">
<Context docBase="/usr/local/tomcat/webapps/shiki" path="" reloadable="true" />
</Host>
#在前一个项目后再添加一一个项目
	<Host name="www.shiki1.com" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false">
	<Context docBase="/usr/local/tomcat/webapps/shiki1" path="" reloadable="true" />
	</Host>
#配置好后,保存退出,然后重启服务
#如果tomcat正在运行项目,那么关闭服务后需要等待一段时间再启动,目的是让项目都完全关闭,不然可能会出错。
shutdown.sh
Using CATALINA_BASE:   /usr/local/tomcat
Using CATALINA_HOME:   /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME:        /usr/java/jdk1.8.0_201-amd64
Using CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar:/usr/loc
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/java/jdk1.8.0_201-amd64
Using CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Tomcat started.

分别访问www.shiki.com和www.shiki1.com
在这里插入图片描述
在这里插入图片描述

优化

tomcat默认的配置环境并不适合生产环境,会出现频繁的卡死报错等,所以要对tomcat进行优化。

#tomcat的优化:
maxThreads:Tomcat:这个值表示Tomcat可创建的最大的线程数,默认值是200。
minspareThreads:最小空闲线程数,Tomcat启动时的初始化的线程数,默认值是10。
maxSpareThreads:最大备用线程数,一旦创建的线程超过这个值,Tomcat就会关闭不再需要的socket线程。默认值是-1(无限制)。
URIEncoding:指定Tomcat容器的URL编码格式。
connnectionTimeout:网络连接超时时间,单位:亳秒,设置为0表示永不超时,默认20000亳秒。
enableLookups:是否反查域名,以返回远程主机的主机名,取值为: truefalse,如果设置为false,则直接返回IP地址。
disableUploadTimeout:上传时是否使用超时机制。
connectionUploadTimeout:上传超时时间,需要与上一个参数一起配合使用才会生效。
acceptCount:指定当所有可以使用的处理请求的线程数都被使用时,可传入连接请求的最大队列长度,默认为100个。
compression:是否对响应的数据进行GZIP压缩,压缩数据后可以有效的减少页面的大小,一般可以减小 1/3 左右。
compressionMinSize:表示压缩响应的最小值,如果开启了压缩功能,默认值就是2048。
compressableMimeType:压缩类型,指定对哪些类型的文件进行数据压缩。
noCompressionJserAgents= "gozilla,traviata":对于以下的浏览器,不启用压缩。
#进入配置文件
vim /usr/local/tomcat/conf/server.xml
minSpareThreads="50"		#设置线程数50
enableLookups="false"		#不进行反查域名
disableUploadTimeout="true"	#开启上传超时
acceptCount="300"			#排队长度为300个
maxThreads="500"			#最多可创建500个线程
processorCache="500"		#系统可缓存对象数量为500个
URIEncoding="UTF-8"			#指定URL编码格式为中文字符集
compression="on"			#开启gzip压缩
compressionMinsize="2048"	#最小压缩大小
compressableMimeType="text/html, text/xml,text/javascript, text/css, text/plain , image/gif , image/jpg, image/png"	#对于这些文件不进行压缩

#最后重启服务
shutdown.sh
Using CATALINA_BASE:   /usr/local/tomcat
Using CATALINA_HOME:   /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME:        /usr/java/jdk1.8.0_201-amd64
Using CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
[root@www ~]# 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/java/jdk1.8.0_201-amd64
Using CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Tomcat started.

nginx+tomcat(反向代理+负载分担)

需要两台tomcat服务器,一台nginx服务器

#对第一台服务器进行配置
在webapps目录下创建一个test目录并编辑index.jsp文件
mkdir /usr/local/tomcat/webapps/test
vim /usr/local/tomcat/webapps/test/index.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<html>
<head>      
<title>JSP test1 page</title>
</head>     
<body>      
<% out.println("动态页面1,http://www.test1.com");%>
</body> 
<html>

#进入配置文件修改hosts项目
vim /usr/local/tomcat/conf/server.xml
<Host name="localhost"  appBase="webapps"
            unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="fales">
<Context docBase=/usr/local/tomcat/webapps/test" path="" reloadable="true" />

#然后重启服务
shutdown.sh
Using CATALINA_BASE:   /usr/local/tomcat
Using CATALINA_HOME:   /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME:        /usr/java/jdk1.8.0_201-amd64
Using CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
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/java/jdk1.8.0_201-amd64
Using CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Tomcat started.
#对第二台服务器进行配置
在webapps目录下创建一个test目录并编辑index.jsp文件
mkdir /usr/local/tomcat/webapps/test
vim /usr/local/tomcat/webapps/test/index.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<html>
<head>      
<title>JSP test2 page</title>
</head>     
<body>      
<% out.println("动态页面2,http://www.test2.com");%>
</body> 
<html>

#进入配置文件修改hosts项目
vim /usr/local/tomcat/conf/server.xml
<Host name="localhost"  appBase="webapps"
            unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="fales">
<Context docBase=/usr/local/tomcat/webapps/test" path="" reloadable="true" />

#然后重启服务
shutdown.sh
Using CATALINA_BASE:   /usr/local/tomcat
Using CATALINA_HOME:   /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME:        /usr/java/jdk1.8.0_201-amd64
Using CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
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/java/jdk1.8.0_201-amd64
Using CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Tomcat started.
#对nginx服务器进行配置
vim /usr/local/nginx/conf/ngixn.conf
#在http字段中添加
upstream tomcatserver {
        server 192.168.214.215:8080 weight=1;
        server 192.168.214.214:8080 weight=1;
}
在server字段中添加
location ~ .*\.jsp$ {
        proxy_pass http://tomcatserver;
        proxy_set_header HOST $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        set_real_ip_from 0.0.0.0/0;
        real_ip_header X-Forwarded-For;
}

访问192.168.214.215/index.jsp,可以发现指向不同的tomcat服务器
在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值