转载

运维tomcat基础篇

1.Tomcat简介

Tomcat是Apache软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache、Sun和其他一些公司及个人共同开发而成。

Tomcat服务器是一个免费的开放源代码的Web应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP程序的首选。

Tomcat和Nginx、Apache(httpd)、lighttpd等Web服务器一样,具有处理HTML页面的功能,另外它还是一个Servlet和JSP容器,独立的Servlet容器是Tomcat的默认模式。不过,Tomcat处理静态HTML的能力不如Nginx/Apache服务器。

2.Tomcat安装

2.1 环境准备

具体环境可通过开发人员来定,这儿给出了本次实验的环境。

链接: https://pan.baidu.com/s/1uOEy... 密码:pt3l

2.2 部署java环境

java version "1.8.0_60"
Java(TM) SE Runtime Environment (build 1.8.0_60-b27)
Java HotSpot(TM) 64-Bit Server VM (build 25.60-b23, mixed mode)

2.3 安装Tomcat

~]# tar -xf apache-tomcat-8.0.27.tar.gz -C /app/
~]# ln -s /app/apache-tomcat-8.0.27 /app/tomcat
~]# echo 'export TOMCAT_HOME=/app/tomcat'>>/etc/profile.d/tomcat.sh
~]# source /etc/profile.d/tomcat.sh
~]# chown -R root.root /app/jdk/ /app/tomcat/

2.4 Tomcat目录介绍

[root@tomcat ~]# cd /app/tomcat/
[root@tomcat tomcat]# tree -L 1
.
├── bin         #→用以启动、关闭Tomcat或者其它功能的脚本(.bat文件和.sh文件)
├── conf        #→用以配置Tomcat的XML及DTD文件
├── lib         #→存放web应用能访问的JAR包
├── LICENSE
├── logs        #→Catalina和其它Web应用程序的日志文件
├── NOTICE
├── RELEASE-NOTES
├── RUNNING.txt
├── temp        #→临时文件
├── webapps     #→Web应用程序根目录
└── work        #→用以产生有JSP编译出的Servlet的.java和.class文件
7 directories, 4 files
[root@tomcat tomcat]# cd webapps/
[root@tomcat webapps]# ll
total 20
drwxr-xr-x 14 root root 4096 Oct  5 12:09 docs         #→tomcat帮助文档
drwxr-xr-x  6 root root 4096 Oct  5 12:09 examples     #→web应用实例
drwxr-xr-x  5 root root 4096 Oct  5 12:09 host-manager #→管理
drwxr-xr-x  5 root root 4096 Oct  5 12:09 manager      #→管理
drwxr-xr-x  3 root root 4096 Oct  5 12:09 ROOT         #→默认网站根目录

2.5 启动Tomcat

#→启动程序/app/tomcat/bin/startup.sh
#→关闭程序/app/tomcat/bin/shutdown.sh
 
[root@tomcat ~]# /app/tomcat/bin/startup.sh
Using CATALINA_BASE:   /app/tomcat
Using CATALINA_HOME:   /app/tomcat
Using CATALINA_TMPDIR: /app/tomcat/temp
Using JRE_HOME:        /app/jdk
Using CLASSPATH:       
/app/tomcat/bin/bootstrap.jar:/app/tomcat/bin/tomcat-juli.jar
Tomcat started.
 
[root@tomcat ~]# netstat -lnpt | grep java
tcp6       0      0 127.0.0.1:8005          :::*                   LISTEN      1311/java           
tcp6       0      0 :::8009                 :::*                   LISTEN      1311/java           
tcp6       0      0 :::8080                 :::*                   LISTEN      1311/java

2.6 访问网站

http://ipaddr :8080/

运维tomcat基础篇

2.7 日志介绍

[root@tomcat ~]# cd /app/tomcat/logs/
[root@tomcat logs]# ll
total 32
-rw-r--r-- 1 root root 12137 Sep 16 17:55 catalina.2018-09-16.log
-rw-r--r-- 1 root root 12137 Sep 16 17:55 catalina.out
-rw-r--r-- 1 root root     0 Sep 16 05:49 host-manager.2018-09-16.log
-rw-r--r-- 1 root root   560 Sep 16 17:54 localhost.2018-09-16.log
-rw-r--r-- 1 root root   824 Sep 16 18:02 localhost_access_log.2018-09-16.txt
-rw-r--r-- 1 root root     0 Sep 16 05:49 manager.2018-09-16.log
 
#-> catalina.out实时日志
[root@tomcat logs]# tail -f catalina.out 
16-Sep-2018 17:54:59.067 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory /app/apache-tomcat-8.0.27/webapps/docs has finished in 160 ms
16-Sep-2018 17:54:59.067 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory /app/apache-tomcat-8.0.27/webapps/examples
16-Sep-2018 17:55:00.002 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory /app/apache-tomcat-8.0.27/webapps/examples has finished in 935 ms
16-Sep-2018 17:55:00.002 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory /app/apache-tomcat-8.0.27/webapps/host-manager
16-Sep-2018 17:55:00.076 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory /app/apache-tomcat-8.0.27/webapps/host-manager has finished in 73 ms
16-Sep-2018 17:55:00.076 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory /app/apache-tomcat-8.0.27/webapps/manager
16-Sep-2018 17:55:00.095 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory /app/apache-tomcat-8.0.27/webapps/manager has finished in 19 ms
16-Sep-2018 17:55:00.116 INFO [main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler ["http-nio-8080"]
16-Sep-2018 17:55:00.194 INFO [main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler ["ajp-nio-8009"]
16-Sep-2018 17:55:00.197 INFO [main] org.apache.catalina.startup.Catalina.start Server startup in 2440 ms

3. Tomcat配置文件

3.1 Tomcat配置文件

[root@tomcat conf]# pwd
/app/tomcat/conf
[root@tomcat conf]# ll -h
total 212K
drwxr-xr-x 3 root root   23 Sep 16 05:49 Catalina
-rw------- 1 root root  13K Sep 28  2015 catalina.policy
-rw------- 1 root root 7.0K Sep 28  2015 catalina.properties
-rw------- 1 root root 1.6K Sep 28  2015 context.xml
-rw------- 1 root root 3.4K Sep 28  2015 logging.properties
-rw------- 1 root root 6.4K Sep 28  2015 server.xml          #主配置文件
-rw------- 1 root root 1.9K Sep 16 19:11 tomcat-users.xml    #tomcat管理用户配置文件
-rw------- 1 root root 1.9K Sep 28  2015 tomcat-users.xsd
-rw------- 1 root root 164K Sep 28  2015 web.xml

3.2 Tomcat管理

测试功能,生产环境不推荐使用。

Tomcat管理功能用于对Tomcat自身以及部署在Tomcat上的应用进行管理的web应用。在默认情况下是处于禁用状态的。如果需要开启这个功能,就需要配置管理用户,即配置前面说过的 tomcat-users.xml 。

[root@tomcat ~]# vim /app/tomcat/conf/tomcat-users.xml
…………
<role rolename="manager-gui"/>
<role rolename="admin-gui"/>
<user username="tomcat" password="tomcat" roles="manager-gui,admin-gui"/>
</tomcat-users>  #→在此行前加入上面三行
[root@tomcat ~]# /app/tomcat/bin/shutdown.sh
[root@tomcat ~]# /app/tomcat/bin/startup.sh

运维tomcat基础篇

3.3 Tomcat主配置文件server.xml详解

3.3.1 server.xml组件类别

  • 顶级组件:位于整个配置的顶层,如server。
  • 容器类组件 :可以包含其它组件的组件,如service、engine、host、context。
  • 连接器组件 :连接用户请求至tomcat,如connector。
  • 被嵌套类组件:位于一个容器当中,不能包含其他组件,如Valve、logger。

3.3.2 server.xml组件详解

  • engine :核心容器组件,catalina引擎,负责通过connector接收用户请求,并处理请求,将请求转至对应的虚拟主机host。
  • host :类似于httpd中的虚拟主机,一般而言支持基于FQDN的虚拟主机。

-context :定义一个应用程序,是一个最内层的容器类组件(不能再嵌套)。配置context的主要目的指定对应对的webapp的根目录,类似于httpd的alias,其还能为webapp指定额外的属性,如部署方式等。

  • connector:接收用户请求,类似于httpd的listen配置监听端口的。
  • service(服务):将connector关联至engine,因此一个service内部可以有多个connector,但只能有一个引擎engine。service内部有两个connector,一个engine。因此,一般情况下一个server内部只有一个service,一个service内部只有一个engine,但一个service内部可以有多个connector。
  • server :表示一个运行于JVM中的tomcat实例。
  • Valve :阀门,拦截请求并在将其转至对应的webapp前进行某种处理操作,可以用于任何容器中,比如记录日志(access log valve)、基于IP做访问控制(remote address filter valve)。
  • logger :日志记录器,用于记录组件内部的状态信息,可以用于除context外的任何容器中。
  • realm :可以用于任意容器类的组件中,关联一个用户认证库,实现认证和授权。可以关联的认证库有两种:UserDatabaseRealm、MemoryRealm和JDBCRealm。
  • UserDatabaseRealm:使用JNDI自定义的用户认证库。
  • MemoryRealm:认证信息定义在tomcat-users.xml中。
  • JDBCRealm :认证信息定义在数据库中,并通过JDBC连接至数据库中查找认证用户。

3.3.3 配置文件 server.xml 主详解

<?xml version='1.0' encoding='utf-8'?>
#<Server>元素代表整个容器,是Tomcat实例的顶层元素.由org.apache.catalina.Server接口来定义.它包含一个<Service>元素.并且它不能做为任何元素的子元素.
#
<Server port="8005" shutdown="SHUTDOWN">
  #port指定Tomcat监听shutdown命令端口.终止服务器运行时,必须在Tomcat服务器所在的机器上发出shutdown命令.该属性是必须的.
  <Listener className="org.apache.catalina.startup.VersionLoggerListener" />
  <Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />
  <Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" />
  <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" />
  <Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener" />
  <GlobalNamingResources>
    <Resource name="UserDatabase" auth="Container"
              type="org.apache.catalina.UserDatabase"
              description="User database that can be updated and saved"
              factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
              pathname="conf/tomcat-users.xml" />
  </GlobalNamingResources>
  #Service服务组件
  <Service name="Catalina">
    #connector:接收用户请求,类似于httpd的listen配置监听端口。
    #port     :指定服务器端要创建的端口号,并在这个端口监听来自客户端的请求。
    #address  :指定连接器监听的地址,默认为所有地址(即0.0.0.0)。
    #protocol :连接器使用的协议,支持HTTP和AJP。AJP(Apache Jserv Protocol)专用于tomcat与apache建立通信的, 在httpd反向代理用户请求至tomcat时使用(可见Nginx反向代理时不可用AJP协议)。
    #minProcessors:服务器启动时创建的处理请求的线程数。
    #maxProcessors:最大可以创建的处理请求的线程数。
    #enableLookups:如果为true,则可以通过调用request.getRemoteHost()进行DNS查询来得到远程客户端的实际主机名,若为false则不进行DNS查询,而是返回其ip地址。
    #redirectPort :指定服务器正在处理http请求时收到了一个SSL传输请求后重定向的端口号。
    #acceptCount  :指定当所有可以使用的处理请求的线程数都被使用时,可以放到处理队列中的请求数,超过这个数的请求将不予处理。
    #connectionTimeout:指定超时的时间数(以毫秒为单位)。
    <Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />
    <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
    #Engine,核心容器组件,catalina引擎,负责通过connector接收用户请求,并处理请求,将请求转至对应的虚拟主机host。defaultHost指定缺省的处理请求的主机名,它至少与其中的一个host元素的name属性值是一样的。
    <Engine name="Catalina" defaultHost="localhost">
      #Realm表示存放用户名,密码及role的数据库
      <Realm className="org.apache.catalina.realm.LockOutRealm">
        <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
               resourceName="UserDatabase"/>
      </Realm>
      #Host,表示存放用户名,密码及role的数据库。
      #name      :指定主机名。
      #appBase   :应用程序基本目录,即存放应用程序的目录.一般为appBase="webapps" ,相对于CATALINA_HOME而言的,也可以写绝对路径。
      #unpackWARs:如果为true,则tomcat会自动将WAR文件解压,否则不解压,直接从WAR文件中运行应用程序。
      #autoDeploy:在tomcat启动时,是否自动部署。
      #xmlValidation    :是否启动xml的校验功能,一般xmlValidation="false"。
      #xmlNamespaceAware:检测名称空间,一般xmlNamespaceAware="false"。
      <Host name="localhost"  appBase="webapps"
            unpackWARs="true" autoDeploy="true">
        <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
               prefix="localhost_access_log" suffix=".txt"
               pattern="%h %l %u %t "%r" %s %b" />
      </Host>
    </Engine>
  </Service>
</Server>
原文  https://segmentfault.com/a/1190000019882834
正文到此结束
Loading...