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:是否反查域名,以返回远程主机的主机名,取值为: true或false,如果设置为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服务器
tomcat介绍:安装与优化相关推荐
- apache tomcat下32还是64_linux平台下Tomcat的安装与优化
Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选.对于一个初学者来说,可以这样 ...
- Tomcat介绍及性能优化
一.Tomcat简单介绍: Sun公司创建了第一个Servlet容器,即Java Web Server,但JWS只是为了演示Servlet的相应功能,所以其性能很不稳定.与此同时,apache基金会组 ...
- linux平台下Tomcat的安装与优化
Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选.对于一个初学者来说,可以这样 ...
- Tomcat介绍 安装jdk 安装Tomcat
一.Tomcat介绍 Tomcat Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache.Sun 和其他 ...
- TOMCAT 汤姆猫的 安装部署 优化
文章目录 TOMCAT 介绍 tomcat 图标 Tomcat 示意图 来吧!展示! 下载地址 安装JDK 设置环境变量 解压Tomcat 让 systemctl 控制 tomcat tomcat 目 ...
- Tomcat安装及优化
目录 概念 编辑JSP servlet java JDK:java development kit (套件) JRE:java Runtime Enviroment JVM:java virtua ...
- Tomcat介绍和安装,以及tomcat的虚拟主机配置
为什么Tomcat火了 Tomcat介绍 Tomcat核心组件 简述Tomcat处理请求过程 Tomcat目录机构 Tomcat安装 虚拟主机配置 Tomcat介绍 ●自从JSP发布之后,推出了各式各 ...
- Tomcat介绍、安装JDK、安装Tomcat
Tomcat介绍 Tomcat是Apache软件基金会(Apache Software Foundation)的Jakarta项目中的一个核心项目,由Apache.Sun和其他一些公司及个人共同开发而 ...
- Linux下tomcat安装及优化
Tomcat官网:http://tomcat.apache.org/ Tomcat 是一个免费的开源的Serlvet容器,它是Apache基金会的Jakarta项目中的一个核心项目,由Apache,S ...
- 16.1 Tomcat介绍16.2 安装jdk16.3 安装Tomcat
16.1 Tomcat介绍 16.2 安装jdk 安装 完后执行这个命令可以出现下图的信息,说明安装成功了 java -version 16.3 安装Tomcat 下载的是二进制包,不用编译,很方便 ...
最新文章
- Qunee for HTML5 在电力方面的应用
- android qq 进程保活,Android保活从入门到放弃:乖乖引导用户加白名单吧(附7大机型加白示例)...
- 3分钟练成SVN命令高手:SVN常用命令
- 《JS高级程序设计》PART3.对象基础
- 遍历children_589. N叉树的前序遍历
- 免费直播| TDD如何颠覆了我对开发的认知?
- sourceInsight4 破解笔记(完美破解)【转】
- 动态连接数据库及动态建立ODBC,DSN(ZT)
- 软件工程概论--课后作业1
- 拓端tecdat|R语言生态学建模:增强回归树(BRT)预测短鳍鳗生存分布和影响因素
- python中面向对象的ui_Python面向对象和图形用户界面(一)---- 面向对象
- 英伟达显卡不同架构_【英伟达NVIDIA显卡GPU架构核心代号名称一览】(截止到 2018·08)...
- PLC浏览器端机械动画仿真(nodejs、vue)
- 用python爬虫,pyinstaller写一个属于自己的彩虹屁生成器!(链接在文末自取)
- 如何在Excel中制作斜线
- ARM9开发板初体验----使用Uboot通过USB下载线烧写bin文件
- DIV+CSS三行两列经典布局
- 高精度GNSS定位的校正服务——状态域(SSR)校正和观测域(OSR)校正
- Demo( the fourth week)
- 医学图像预处理(四)—— 提取包含目标的切片(比如仅提取包含肿瘤或肝脏的切片)
热门文章
- [python之数据分析] 基础篇1- Numpy,Scipy,Matplotlib 快速入门攻略
- Linux使用scp在服务器之间远程传输复制文件和文件夹
- wifi ip地址租约处理
- 在Markdown编辑器中输入上标下标
- MyBatis Plus Generator 代码生成器 v3.5.x 案例,含校验、MapStruct、Swagger、QO、VO,自定义 FreeMarker 模板引擎
- Java中 VO、 PO、DO、DTO、 BO、 QO、DAO、POJO的概念(转)
- 考试计算机输百分比符号,2012年计算机等级考试一级B考点详解(4)
- java vim编辑器的基本使用_vim编辑器之神的高效率使用
- vue自定义翻页组件
- 日语流行口语极短句2