浅谈Tomcat安装

博文结构
tomcat介绍
Tomcat组件及其特点
安装Tomcat
自定义目录
开启JMX远程调试功能
使用https访问tomcat服务器

一.Tomcatl介绍

Tomcat是apache软件基金会项目中的一个核心项目,有apache和sun其他一些公司及个人共同开发而成的Tomcat服务器是一个免费的开放源代码的web应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是多的场合下被普遍使用,是开发和调试jsp程序的首选。
可以这样认为,当一台服务器配置好apache服务器以后,可以利用apache服务器来响应我们的html页面的访问请求,而tomcat是 apahce 服务器的扩展,当你运行tomcat的时候实际上是作为一个apache独立的进程单独运行的,apache服务器为html页面提供服务的,而tomcat是运行jsp页面和servlet,另外tomcat也能具有处理html页面的功能,但是处理静态的能力没有apache处理好。

二.Tomcat组件及其特点

  • tomcat组件

servlet(应用程序或者容器)是java提供的用于开发web服务器应用程序的一个组件,运行在服务器端,有servlet用于生成动态页面内容,servlet是平台立的java类,编写一个servlet,实际上就是安装servlet规范编写一个java类

  • 什么是servlet ?

Tomcat 处理请求和响应的过程是由servlet的程序来完成的,并且servlet是为例解决实现动态页面而衍生的东西,与我们之前了解的nginx或者apache想要实现动态页面需要和php服务器沟通的过程差不多,可以把servlet比作成php

Tomcat 是web应用服务器,是一个servlet/jsp容器,tomcat作为servlet容器,负责处理客户请求,并将servlet的响应传送给客户,而servlet是一种运行在java语言的服务器上的组件,servlet最常见的用途是扩展java web服务器功能,提供非常安全的,可以移植的(打包网页代码就可以在另外一个环境中运行,如linux系统跟windows环境),易于使用cgi替代品。

  • Tomcat处理数据的流程

1、浏览器发送请求数据
2、tomcat收到服务器的请求数据,由servlet容器处理并进行解析,并且把客户端的数据请求request改变成servlet request 交给后端的servlet 实例(或者或叫对象)实例收到客户端的请求数据的请求对象,进行出处理客户端的请求,处理完成后将数据响应给servlet容器,响应给servlet容器叫做servlet response。
3、Servlet收到的实例的响应数据交给客户端(如图)

Servlet(tomcat)容器与servlet实例需要通过java servlet api接口进行通信,api接口是由开发人员在写代码的时候定义或者编写的
4.servlet容器将收到的响应数据交给客户端

  • Servlet和jsp的区别

Servlet在Java代码中可以通过HttpServletResponse对象动态输出HTML内容;

JSP在静态HTML内容中嵌入Java代码,然后Java代码在被动态执行后生成HTML页面;

  • tomcat的特点

运行时占用的资源小,扩展性好,支持负载均衡和邮件服务器等开发应用系统常用的功能

三.安装tomcat

下载Tomcat所需的软件包

  • 安装Tomcat需要系统Java环境1.8版本以上,Centos 7默认就已经支持Java环境1.8版本,由于现在大部分使用还是Centos 6的系统,,由于本人采用的Centos 7系统,所以首先需要卸载JDK环境。
[[email protected] ~]# rpm -qa | grep jdk
\\查询已安装的jdk包
copy-jdk-configs-1.2-1.el7.noarch
java-1.7.0-openjdk-headless-1.7.0.111-2.6.7.8.el7.x86_64
java-1.8.0-openjdk-1.8.0.102-4.b14.el7.x86_64
java-1.7.0-openjdk-1.7.0.111-2.6.7.8.el7.x86_64
java-1.8.0-openjdk-headless-1.8.0.102-4.b14.el7.x86_64
[[email protected] ~]# rpm -e java-1.7.0-openjdk-headless-1.7.0.111-2.6.7.8.el7.x86_64 java-1.7.0-openjdk-1.7.0.111-2.6.7.8.el7.x86_64  java-1.8.0-openjdk-headless-1.8.0.102-4.b14.el7.x86_64 --nodeps
\\卸载系统自带的jdk环境
[[email protected] ~]# tar zxf jdk-8u211-linux-x64.tar.gz -C /usr/local/
[[email protected] ~]# vim /etc/profile
//编写系统环境变量,在最后一行加以下内容
export  JAVA_HOME=/usr/local/jdk1.8.0_211              //指定java的路径
export  JRE_HOME=/usr/local/jdk1.8.0_211/jre           //java运行环境
export  CLASSPATH=$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar
                                                                                    //声明java中的类,类就是一类事务的属性,如各种盖饭最终他们的属性是饭
export  PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH
                                                                                    //将定义的变量添加到系统环境变量中
[[email protected] ~]# source /etc/profile                        //重新加载系统环境变量文件

[[email protected] ~]# tar zxf apache-tomcat-8.5.35.tar.gz
[[email protected] ~]# mv apache-tomcat-8.5.35 /usr/local/tomcat
[[email protected] ~]# /usr/local/tomcat/bin/startup.sh  \\启动tomcat
Using CATALINA_BASE:   /usr/local/tomcat
Using CATALINA_HOME:   /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME:        /usr/local/jdk1.8.0_211/jre
Using CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Tomcat started.
[[email protected] ~]# netstat -anpt | grep 8080
tcp6       0      0 :::8080                 :::*                    LISTEN      16320/java      
  • 现在可以用客户端访问测试

  • Tomcat目录说明
    [[email protected] ~]# ls /usr/local/tomcat/
    bin conf lib logs README.md RUNNING.txt webapps
    BUILDING.txt CONTRIBUTING.md LICENSE NOTICE RELEASE-NOTES temp work
Bin:存放windows或linux平台上启动或者关闭tomcat的脚本文件
Conf:存放tomcat服务器的全局配置文件,其中最重要的是server.xml和web.xml
Lib:tomcat运行需要的库文件(jars)
Logs:tomcat运行时产生的日志文件
Temp:临时文件存放目录
Work:tomcat的工作目录,存放tomcat运行时的编译配置文件
Webapps:网页文件存放路径
Tomcat常用配置文件说明
Server.xml:tomcat的主配置文件,可以设置端口号,设置域名或者IP
Web.xml: 缺省的web app配置(也可以理解为是实现主配置文件没有定义到的功能:如目录遍历,定义错误页面类型)
Tomcat-users.xml:用来配置管理tomcat的用户与权限
  • tomcat中server.xml文件结构

Server:代表整个容器,实例的顶层元素,一个配置文件中只能有一个server元素,可以包含多个service。比如:

<Server port="8005" shutdown="SHUTDOWN">
//表示关闭Tomcat,使用telnet连接8005,输入shutdown指令

Service:提供完整jvm的独立组件,jvm表示Java虚拟机,是一个虚构出来的虚拟机,可以包含一个engine包含多个connector;

  <Service name="Catalina">
//代表接受所有tomcat接受的请求,如果是Service name="apache"则表示接受所有apache转发过来的请求

Connector:接口定义,负责接受客户端的请求,以及向客户端返回响应的结构;

<Connector port="8080" protocol="HTTP/1.1"
                     connectionTimeout="20000"
                     redirectPort="8443" />
//port:接受数据的端口;protocol:设置http协议;
//Connection Timeout:与客户端的连接超时时间,-1代表不限制客户端的连接时间;
//Redirectport :当客户端请求是https将请求转发到8443去

Engine:处理客户端的请求,可以包含多个hots;

<Engine name="Catalina" defaultHost="localhost">

//name:是引擎名称,处理客户的请求默认去寻找localhost
Host:定义的虚拟主机,为特定的虚拟主机处理所有的客户端请求;

  <Host name="localhost"  appBase="webapps"
        unpackWARs="true" autoDeploy="true">

Context:运行在虚拟主机中的单个web应用;

  • Tomcat处理http请求过程

过程

①用户点击网页内容,请求被发送到本机端口8080,被在那里监听的Coyote HTTP/1.1 Connector获得;
②Connector把该请求交给它所在的Service的Engine来处理,并等待Engine的回应;
③Engine获得请求localhost/test/index.jsp,匹配所有的虚拟主机Host;
④Engine匹配到名为localhost的Host(即使匹配不到也把请求交给该Host处理,因为该Host被定义为该Engine的默认主机),名为localhost的Host获得请求/test/index.jsp,匹配它所拥有的所有的Context。Host匹配到路径为/test的Context(如果匹配不到就把该请求交给路径名为“ ”的Context去处理);
⑥path=“/test”的Context获得请求/index.jsp,在它的mapping table中寻找出对应的Servlet。Context匹配到URL PATTERN为*.jsp的Servlet,对应于JspServlet类;
⑥构造HttpServletRequest对象和HttpServletResponse对象,作为参数调用JspServlet的doGet()或doPost().执行业务逻辑、数据存储等程序;
⑦Context把执行完之后的HttpServletResponse对象返回给Host;
⑧Host把HttpServletResponse对象返回给Engine;
⑨Engine把HttpServletResponse对象返回Connector;
⑩Connector把HttpServletResponse对象返回给客户Browser;

四.自定义目录

[[email protected] ~]# vim /usr/local/tomcat/conf/server.xml
<Host name="localhost"  appBase="webapps"
            unpackWARs="true" autoDeploy="true">
\\在zhe这个Hostname下添加以下内容
<Context path = "/xws" docBase = "/data/project" debug = "0" reloadable  = "false" crossContext = "true">
        </Context>
  • 相关解释
Path:指出访问的路径
docBase:指定存放的路径
Debug:指定debug的等级为0输出信息最少,9提供最多信息
Reloadable:为ture时当web.xml文件有改动的时候自动重新加载,不用重启服务
CorssContext:为ture时表示不同的context共享一个session(会话池)
[[email protected] ~]# mkdir -p /data/project
[[email protected] ~]# vim /data/project/index1.jsp
aaaaaaa
[[email protected] ~]# vim /data/project/index2.jsp
bbbbbbb
  • 开启tomcat目录遍历
[[email protected] ~]# vim /usr/local/tomcat/conf/web.xml
\\大约在112行中把false改为true

  • 重启服务
[[email protected] ~]# /usr/local/tomcat/bin/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/local/jdk1.8.0_211/jre
Using CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
[[email protected] ~]# /usr/local/tomcat/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/local/jdk1.8.0_211/jre
Using CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Tomcat started.
  • 客户端访问验证

五.自定义监控页面

[[email protected] ~]# vim /usr/local/tomcat/conf/server.xml
//在host中添加
 <Context path="/jiankong" docBase="/jk/jiankong" debug="0" reloadable="    false" crossContext="true"/>

[[email protected] /]# mkdir /jk/jiankong -p
[[email protected] /]# vim /jk/jiankong/index.jsp
<%
Runtime rtm = Runtime.getRuntime();
long mm = rtm.maxMemory()/1024/1024;
long tm = rtm.totalMemory()/1024/1024;
long fm = rtm.freeMemory()/1024/1024;

out.println("JVM memory detail info :<br>");
out.println("Max memory:"+mm+"MB"+"<br>");
out.println("Total memory: "+tm+"MB"+"<br>");
out.println("Free memory: "+fm+"MB"+"<br>");
out.println("Available memmory can be used is :"+(mm+fm-tm)+"MB"+"<br>");
    %>
[[email protected] ~]# /usr/local/tomcat/bin/shutdown.sh
[[email protected] ~]# /usr/local/tomcat/bin/startup.sh                  //重启tomcat服务
  • 访问如下

六.开启JMX远程调试功能

[[email protected] /]# vim /usr/local/tomcat/bin/catalina.sh 

#----- Execute The Requested Command -----------------------------------------        //填写的内容必须在这行下面大约在309行

CATALINA_OPTS=" $CATALINA_OPTS -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=8888 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=true"
[[email protected] /]# cd /usr/local/jdk1.8.0_211/jre/lib/management/
[[email protected] management]# cp jmxremote.password.template jmxremote.password
[[email protected] management]# vim jmxremote.password  //在最后一行添加,定义用户为xws,密码为123456,使用“wq!”强制保存退出
xws     123456
[[email protected] management]# vim jmxremote.access  //定义用户权限的文件
xws   readwrite \                                       //在倒数第三行。把原有的用户改为xws
[[email protected] management]# chmod 600 jmxremote.access
[[email protected] management]# chmod 600 jmxremote.password
[[email protected] management]# /usr/local/tomcat/bin/shutdown.sh
[[email protected] management]# /usr/local/tomcat/bin/startup.sh
[[email protected] ~]# netstat -anpt | grep 8888
tcp6       0      0 :::8888                 :::*                    LISTEN      58760/java
//确认刚才定义的端口8888在监听
  • 由于其为图像化界面,所以需要在桌面环境下执行以下命令
[[email protected] /]# . /etc/profile
\\更新环境变量
[[email protected] /]# jconsole

七.配置使用https访问tomcat服务器

[[email protected] /]# keytool -genkey -v -alias tomcat -keyalg RSA -keystore /usr/local/tomcat/conf/tomcat.keystore -validity 36500
//alias:别名,这里设置为tomcat;
//keyalg:证书算法,RSA;
//validity:证书有效期,单位为天
//keystore:指定证书存放路径,可以自定义

输入密钥库口令:
再次输入新口令:
您的名字与姓氏是什么?
  [Unknown]:  xws
您的组织单位名称是什么?
  [Unknown]:  aaa
您的组织名称是什么?
  [Unknown]:  bbb
您所在的城市或区域名称是什么?
  [Unknown]:  ccc
您所在的省/市/自治区名称是什么?
  [Unknown]:  wwwe
该单位的双字母国家/地区代码是什么?
  [Unknown]:  qwe
CN=xws, OU=aaa, O=bbb, L=ccc, ST=wwwe, C=qwe是否正确?
  [否]:  y

正在为以下对象生成 2,048 位RSA密钥对和自签名证书 (SHA256withRSA) (有效期为 36,500 天):
     CN=xws, OU=aaa, O=bbb, L=ccc, ST=wwwe, C=qwe
输入 <tomcat> 的密钥口令
    (如果和密钥库口令相同, 按回车):
[正在存储/usr/local/tomcat/conf/tomcat.keystore]

Warning:
JKS 密钥库使用专用格式。建议使用 "keytool -importkeystore -srckeystore /usr/local/tomcat/conf/tomcat.keystore -destkeystore /usr/local/tomcat/conf/tomcat.keystore -deststoretype pkcs12" 迁移到行业标准格式 PKCS12。

[[email protected] ~]# vim /usr/local/tomcat/conf/server.xml   //可以添加也可以从原有的内容稍作修改即可
 <Connector port="443"   protocol="org.apache.coyote.http11.Http11NioProtocol"                   //将原本的8443改为443
               maxThreads="150" SSLEnabled="true"
                keystoreFile="/usr/local/tomcat/conf/tomcat.keystore"                   //指定证书存放路径
               keystorePass="123456">                      //指定生成证书所输入的密码
     </Connector>

[[email protected] ~]# /usr/local/tomcat/bin/shutdown.sh
[[email protected] ~]# /usr/local/tomcat/bin/startup.sh      
  • 访问如下:

原文地址:https://blog.51cto.com/14400213/2464946

时间: 2024-11-01 16:03:21

浅谈Tomcat安装的相关文章

浅谈Tomcat

浅谈Tomcat 随着java的流行,其在web上的应用也越来越广,tomcat作为一个开源的servlet容器,应用前景越来越广,本文将向你讲述tomcat的一些知识. 一:简介tomcat是jakarta项目中的一个重要的子项目,其被JavaWorld杂志的编辑选为2001年度最具创新的java产品(Most Innovative Java Product),同时它又是sun公司官方推荐的servlet和jsp容器(具体可以见http://java.sun.com/products/jsp/

浅谈tomcat中间件的优化【转】

今天来总结一下tomcat的一些优化的方案,由于本人才疏学浅,写的不好,勿喷! tomcat对于大多数从事开发工作的童鞋应该不会很陌生,通常做为默认的开发环境来为大家服务,不过tomcat默认的一些配置对于生产环境来说是相当不够滴,特别对于内存以及线程的配置方面都很有可能成为日后性能的瓶颈. 接下来咱们就聊聊tomcat的优化,从内存以及线程两个方面来谈: 1.内存方面 tomcat的内存优化操作起来就比较简单了 如果是linux环境的话设置如下: 修改TOMCAT_HOME/bin/catal

浅谈Tomcat和Servlet

本文浅谈下对Tomcat和Servlet总体的理解,初学时有用过一段时间,但当时疲于应对如何xml配置和使用,对他们的理解就像是一个黑匣子.现在回顾一下帮助自己加深网络的理解.开始还是先推荐我看的文章和书. https://www.cnblogs.com/zhouyuqin/p/5143121.html 以下都是IBM Developer上的文章,该网站上还是有很多优质文章. https://www.ibm.com/developerworks/cn/java/j-lo-servlet/  Se

浅谈tomcat的配置

1.如何修改tomcat的端口 在某些情况下,可能需要修改tomcat监听的端口8080,比如: a.需要启动两份tomcat服务器 b.某个服务占用了8080端口(1433,1521,3306...) Windows查看端口使用命令:netstat -an 修改tomcat端口的方法: 修改~tommcat/conf/server.xml文件中port="8080"数据将8080修改成你需要的端口号即可. 端口号范围:1-65535(实际上里面的有些端口已经被使用),一般情况下1-1

浅谈tomcat优化(内存,并发,缓存,安全,网络,系统等)

一.Tomcat内存优化 Tomcat内存优化主要是对 tomcat 启动参数优化,我们可以在 tomcat 的启动脚本 catalina.sh 中设置 java_OPTS 参数 JAVA_OPTS参数说明 -server 启用jdk 的 server 版 -Xms java虚拟机初始化时的最小内存 -Xmx java虚拟机可使用的最大内存 -XX: PermSize 内存永久保留区域 -XX:MaxPermSize 内存最大永久保留区域 3.配置示例:JAVA_OPTS='-Xms1024m

浅谈ESXi安装问题处理

过去的一段时间,我曾在各个技术群里潜水,遇到过很多次使用服务器安装ESXi遇到问题的,我感觉自己很失败,未曾遇到过这种场景,最近公司从代理商弄了一批最新型号的服务器(Dell R740以及inspur M系列服务器)测试,我便对VMware ESXi安装进行了测试,在安装过程中,也遇到了很多的问题,现将相关经验分享给你们.在安装ESXi的时一定要确保硬件满足兼容性,即便是遇到问题了,我们也可以通过查找解决方法去解决遇到的问题.以Dell R740为例,当你在安装ESXi的时候,可以选择使用DEL

浅谈WebLogic和Tomcat

浅谈WebLogic和Tomcat 分类: Java Web2011-11-30 21:19 54484人阅读 评论(19) 收藏 举报 weblogictomcat应用服务器ejbservletjava J2ee开发主要是浏览器和服务器进行交互的一种结构.逻辑都是在后台进行处理,然后再把结果传输回给浏览器.可以看出服务器在这种架构是非常重要的. 这几天接触到两种Java的web服务器,做项目用的Tomcat,看视频看的是WebLogic Server(WLS),都是web服务器,有什么区别和联

浅谈图片服务器的架构演进

浅谈图片服务器的架构演进 现在几乎任何一个网站.Web App以及移动APP等应用都需要有图片展示的功能,对于图片功能从下至上都是很重要的.必须要具有前瞻性的规划好图片服务器,图片的上传和下载速度至关重要,当然这并不是说一上来就搞很NB的架构,至少具备一定扩展性和稳定性.虽然各种架构设计都有,在这里我只是谈谈我的一些个人想法. 对于图片服务器来说IO无疑是消耗资源最为严重的,对于web应用来说需要将图片服务器做一定的分离,否则很可能因为图片服务器的IO负载导致应用 崩溃.因此尤其对于大型网站和应

【转】浅谈Nginx负载均衡与F5的区别

前言 笔者最近在负责某集团网站时,同时用到了Nginx与F5,如图所示,负载均衡器F5作为处理外界请求的第一道"墙",将请求分发到web服务器后,web服务器上的Nginx再进行处理,静态内容直接访问本地门户,动态数据则通过反向代理指向内网服务. 其实Nginx和F5这两者均可用作网站负载均衡,那二者有什么区别呢?笔者在此浅谈下Nginx与F5的一些区别. 目前很多网站或应用在设计之初都会为高并发的数据请求做负载均衡,不差钱的土豪用户一般会直接买F5硬件设备作为其负载均衡器,原因不用多