设为首页 收藏本站
查看: 683|回复: 0

[经验分享] tomcat一般配置

[复制链接]

尚未签到

发表于 2018-12-2 08:29:14 | 显示全部楼层 |阅读模式
  各配置文件说明:

  server.xml  核心配置文件。
  context.xml  为部署于此Tomcat实例上的所有web应用程序提供默认配置,也就是host中的context的配置。而且每个webapp也可以使用自己独有的context.xml,一般在webapp目录中的META-INF子目录中,常用于定义会话管理器、Realm以及JDBC等,如果没有则从主context.xml继承。
  web.xml  为部署于此Tomcat实例上的所有web应用程序提供默认部署描述符(与部署相关的信息,如:装载哪些类,怎么装载,去哪里装载之类的),用于为webapp提供基本的servlet定义和MIME映射表等。每个webapp也可以有自己独有的web.xml,一般在webapp目录中的WEB-INF子目录中。

  tomcat-user.xml  Realm认证时用到的相关角色、用户和密码等信息;Tomcat自带的manager默认情况下会用到此文件;在Tomcat中添加/删除用户,为用户指定角色等将通过编辑此文件实现。
  catalina.policy  当基于security选项启动tomcat实例时会读取此配置文件。
[root@nfs bin]# ./catalina.sh start -security  此文件是JAVA的安全策略配置文件,配置访问codebase或某此Java类的权限。
  catalina.properties Java属性定义文件, 设定类加载器路径、安全包列表和一些调整性能的参数信息。
  logging.properties  定义日志相关的配置信息,如日志级别、文件路径等。
  

  以下都是server.xml配置文件。注意是区分大小写的,组件的第一个字母都是大写。

  一、初识配置组件
  配置文件中是一个层次结构的配置方式。每一个层次都是由tomcat自带的类来实现的。也称为组件。这是除了jsp和sevlet库之外的web部分的类库。
  下在同是一张常用组件的层次图:


  大约就是这么的一个结构,还有很多组件没有列出。大致上所有组件可分为几类:
顶级组件也就是server
容器类可以包含其它组件的
连接器组件Connector,用来监听地址和端口
被嵌套类的组件被包含在容器类组件中,不能包含其它组件
  

  各常见组件详细解释:
  1、Server(服务器),表示一个运行于JVM中的tomcat实例,也就是tomcat的进程。每个tomcat只能有一个进程,多个线程。而且一个JVM中只能有一个tomcat实例。也可以运行多个JVM+tomcat,只要不是同一个套接字即可,不过有什么意义呢。server中可以有多个service,不过一般不这样玩。
  2、Service(服务),用于将连接器关连到引擎上,一个service可以有多个connector,但只能有一个engine。也就是把多个监听的地址和端口关联到了同一个engine上。
  3、Connector(连接器),简单的说就是用来监听地址和端口的,收到请求再交给engine来处理。连接器对于apache主要有两种: 一种是mod_jk(apaceh2.2之前只能用这个),一种是mod_proxy。而连接协议方面。mod_jk一般只用ajp连接, 而mod_proxy有http和ajp两种。
  AJP协议: Apache Jserv Protocal,只能是Apache与tomcat之间用。nginx或是浏览器只能用http。
  

  容器类组件:
  4、Engine(引擎),通常是指Catalina Servlet引擎。是直正提供Jsp解析,jsp转换, 编译并向外提供服务的核心组件。负责通过connector接收用户请求。并通过检查http首部来交给不同的host。

  5、Host(主机),主机组件类似于Apache中的虚拟主机,每一个host都是一个独立的虚拟主机。 支持基于FQDN的虚拟主机。当然也有别的方式实现的基于其它方式的虚拟主机。一个引擎至少要包含一个host。
  6、Context(上下文),一个context代表一个web应用程序。用来指定对应的web程序代码的根目录,和一些额外的属性,如部署方式等。一个host中可以有多个。用来定义一个应用程序的部署。是最内层的容器类组件。
  

  被嵌套类(nested)组件:
  7、Valve(阀门),拦截请求并在将其转至对应的web应用程序之前进行处理操作。可用于任何容器中。
  8、Logger(日志记录器),用于记录组件内部的状态信息。可用于除context之外的任何容器中。并且是可继承的。如定义在引擎级别,以下级别中如果没有定义,则会继承。
  9、Realm(领域),可用于任何容器类的组件中。关联一个用户认证库(有点从哪里获取用户信息的意思),实现认证和授权,可被继承。在为应用程序定义角色访问控制时,就是要在Realm中实现的。
  

  

  二、各组件属性
  1、server:
  例:
  允许管理员通过访问telnet 8005端口,输入SHUTDOWN来关闭实例。一般也用不到。

  port:用以在哪个端口来接受关闭服务的指令。默认只允许本机访问。
  shutdown:接收到什么字符串以后执行关闭服务的指令。
[root@nfs ~]# telnet 127.0.0.1 8005
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
SHUTDOWN            #不能有空格
Connection closed by foreign host.  2、Service:
  例:
  name:此服务的名称,默认为Catalina;名称会出现在相关的日志信息里。
  3、Connector:
  例:
  两种连接协议http和ajp。而http中还有几个分类。这里在protocol中出现的http/1.1是http连接方式中的默认的一种方式,这里我们就只了解一下就可以了。我们现在是以客户浏览器来访问,就只能用http协议了。
  

  address:监听的地址,默认所有地址。
  maxThreads:最大并发连接数,默认200。
  minSpareThreads:最小空闲线程数。
  maxSpareThreads:最大空闲线程数。
  port:监听端口。
  protocol:连接器所使用的协议,默认为HTTP/1.1,定义AJP协议时一般为AJP/1.3
  redirectPort:如果是http协议的连接器,收到https的连接后,转到这个属性所定义的端口上。
  connectionTimeout:等待客户端发送请求的超时时间,单位为毫秒,默认60000。
  enableLookups:反解客户端的主机名。默认为true。建议false。
  acceptCount:等待队列的长度。
  

  如果是https连接的话,还要加很多属性。从官网抄了一个例子:

  http://tomcat.apache.org/tomcat-6.0-doc/ssl-howto.html

  

  4、Engine:
  例:
  

  name:定义名称,会在相关的日志中出现。
  defaultHost:如果发来的连接无法识别是哪个host所定义的虚拟主机,则发给此属性所指定的host.
  

  5、Host

  例:

        
        
        
  表示www.a.com虚拟主机的程序项目在/www/a.com路径下,而程序代码一般是在下级的目录中,当然也是可以在这个目录中的。

  而主程序在/www/a.com/ROOT目录中,URL为www.a.com;bbs程序在/www/a.com/bbs目录中,URL为www.a.com/bbs;blog程序在/www/a.com/blog目录中,URL为www.a.com/blog。

  

  appBase:web程序所在的目录,就是网页项目所在的根目录。可以用绝对路径,如果是相对路径,则是相对与变量CATALINA_HOME变量中的路径。
  autoDeploy:在Tomcat处于运行状态时放置于appBase目录中的应用程序文件是否自动进行deploy;默认为true;
  unpackWars:是否对appBase目录中的WAR格式的归档文件自动展开;默认为true;
  

  还有一个小容器组件没有写出来,但是跟Host相关:,定义Host name的别名。

  如上面我的主机名为www.a.com,如果我还想要有个名称来访问Host所指定的程序 就可以:


www.b.org
  

  6、Context:
  例:

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-642195-1-1.html 上篇帖子: 实现 Tomcat 的负载均衡 下篇帖子: LVS+keepalived实现TOMCAT集群
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表