最近几天熟悉公司的项目环境,是nginx+tomcat+mysql模式。

关于nginx不用多说,在这个环境里就是做一个接受http请求的一个作用然后转发给tomcat处理,具体是在nginx.conf里面的做一些简单的配置。

安装tomcat,首先得先安装JDK,直接解压到相关目录,然后配置环境变量

vim /etc/profile.d/java.sh

然后source /etc/profile.d/java.sh

让之生效。

然后安装tomcat,这里就不多解释了,具体安装参考

这里主要记录tomcat的配置文件

具体参考地址是

tomcat的conf下有如下几个配置文件,他们分别是

[root@ha111conf]# lsCatalina         catalina.properties  logging.properties  tomcat-users.xml  web.xmlcatalina.policy  context.xml          server.xml          tomcat-users.xsd
  • server.xml: 主配置文件,包含Service,Connector, Engine, Realm, Valve, Hosts主组件的相关配置信息;

  • context.xml:每个webapp都可以有专用的配置文件,这些配置文件通常位于webapp应用程序目录下的WEB-INF目录中,用于定义会话管理器、JDBC等;conf/context.xml是为各webapp提供默认配置;

  • web.xml:每个webapp“部署之后才能被访问;此文件则用于为所有的webapp提供默认部署相关的配置;

  • tomcat-users.xml:用户认证的账号和密码配置文件;

  • catalina.policy:当使用-security选项启动tomcat实例时会读取此配置文件来实现其安全运行策略;

  • catalina.propertiesJava属性的定义文件,用于设定类加载器路径等,以及一些JVM性能相关的调优参数;

  • logging.properties:日志相关的配置信息;

下面我们详细解析一下server.xml

1 server组件

 <Server port=”8005” shutdown=”SHUTDOWN”>

这会让Tomcat启动一个server实例(即一个JVM),它监听在8005端口以接收shutdown命令。各Server的定义不能使用同一个端口,这意味着如果在同一个物理机上启动了多个Server实例,必须配置它们使用不同的端口。这个端口的定义用于为管理员提供一个关闭此实例的便捷途径,因此,管理员可以直接telnet至此端口使用SHUTDOWN命令关闭此实例。不过,基于安全角度的考虑,这通常不允许远程进行,只监听在127.0.0.1

 

    Server的相关属性:

  • port: 接收shutdown指令的端口,默认仅允许通过本机访问,默认为8005

  • shutdown:发往此Server用于实现关闭tomcat实例的命令字符串,默认为SHUTDOWN

  • className: 用于实现此Server容器的完全限定类的名称,默认为org.apache.catalina.core.StandardServer

2 service组件

Service主要用于关联一个引擎和与此引擎相关的连接器,每个连接器通过一个特定的端口和协议接收入站请求交将其转发至关联的引擎

 进行处理。因此,Service要包含一个引擎、一个或多个连接器。

 如:

   <Servicename=”Catalina”>

 这定义了一个名为CatalinaService,此名字也会在产生相关的日志信息时记录在日志文件当中。

 

    Service相关的属性:

  • className:用于实现service的类名,一般都是org.apache.catalina.core.StandardService

  • name:此服务的名称,默认为Catalina

3 Connector组件

 进入Tomcat的请求可以根据Tomcat的工作模式分为如下两类:

  • Tomcat作为应用程序服务器:请求来自于前端的web服务器,这可能是Apache,IIS, Nginx等;

  • Tomcat作为独立服务器:请求来自于web浏览器;

    Tomcat应该考虑工作情形并为相应情形下的请求分别定义好需要的连接器才能正确接收来自于客户端的请求。一个引擎可以有一个或多

 个连接器,以适应多种请求方式。

定义连接器可以使用多种属性,有些属性也只适用于某特定的连接器类型。一般说来,常见于server.xml中的连接器类型通常有4种:

  • HTTP连接器

  • SSL连接器

  • AJP 1.3连接器

  • proxy连接器

 如上面示例server.xml中定义的HTTP连接器:

 

定义连接器时可以配置的属性非常多,但通常定义HTTP连接器时必须定义的属性只有“port”,定义AJP连接器时必须定义的属性只

 有"protocol",因为默认的协议为HTTP

以下为常用属性的说明:

  • address:指定连接器监听的地址,默认为所有地址,即0.0.0.0

  • maxThreads:支持的最大并发连接数,默认为200

  • port:监听的端口,默认为8080

  • protocol:连接器使用的协议,默认为HTTP/1.1,定义AJP协议时通常为AJP/1.3

  • redirectPort:如果某连接器支持的协议是HTTP,当接收客户端发来的HTTPS请求时,则转发至此属性定义的端口;

  • connectionTimeout:等待客户端发送请求的超时时间,单位为毫秒,默认为60000,即1分钟;

  • enableLookups:是否通过request.getRemoteHost()进行DNS查询以获取客户端的主机名;默认为true

  • acceptCount:设置等待队列的最大长度;通常在tomcat所有处理线程均处于繁忙状态时,新发来的请求将被放置于等待队列中;

    这里定义了一个ssl连接器

4 Engine组件

      EngineServlet处理器的一个实例,即servlet引擎,默认为定义在server.xml中的CatalinaEngine需要defaultHost属性来为其定义一

  个接收所有发往非明确定义虚拟主机的请求的host组件。

      如:

    <Enginename="Catalina" defaultHost="localhost">

 

    常用的属性定义:

  • defaultHostTomcat支持基于FQDN的虚拟主机,这些虚拟主机可以通过在Engine容器中定义多个不同的Host组件来实现;但如果此引擎的连接器收到一个发往非非明确定义虚拟主机的请求时则需要将此请求发往一个默认的虚拟主机进行处理,因此,在Engine中定义的多个虚拟主机的主机名称中至少要有一个跟defaultHost定义的主机名称同名;

  • nameEngine组件的名称,用于日志和错误信息记录时区别不同的引擎;

    注,Engine容器中可以包含RealmHostListenerValve子容器。

5 Host组件

 位于Engine容器中用于接收请求并进行相应处理的主机或虚拟主机,如前面默认配置文件中定义:

    

常用属性说明:

  • appBase:此Hostwebapps目录,即存放非归档的web应用程序的目录或归档后的WAR文件的目录路径;可以使用基于$CATALINA_HOME的相对路径;

  • autoDeploy:在Tomcat处于运行状态时放置于appBase目录中的应用程序文件是否自动进行deploy;默认为true

  • unpackWars:在启用此webapps时是否对WAR格式的归档文件先进行展开;默认为true

下面是虚拟主机定义示例:

     
     
     
             
     
         

主机别名定义:

    如果一个主机有两个或两个以上的主机名,额外的名称均可以以别名的形式进行定义,

 
     
test.com
    

未完待续~~~~