tomcat 说明及部署

一、tomcat简介

二、tomcat安装配置

三、tomcat配置文件说明

四、tomcat虚拟机配置

五、nginx反向代理tomcat及动静分离

六、apache反向代理tomcat

七、apache ajp反向代理tomcat

八、server status配置

九、host-manager配置

一、tomcat简介

Tomcat是由Apache软件基金会下属的Jakarta项目开发的一个Servlet容器,按照Sun Microsystems提供的技术规范,实现了对Servlet和JavaServer Page(JSP)的支持,并提供了作为Web服务器的一些特有功能,如Tomcat管理和控制平台、安全域管理和Tomcat阀等。由于Tomcat本身也内含了一个HTTP服务器,它也可以被视作一个单独的Web服务器。但是,不能将Tomcat和Apache Web服务器混淆,Apache Web Server是一个用C语言实现的HTTP web server;这两个HTTP web server不是捆绑在一起的。Apache Tomcat包含了一个配置管理工具,也可以通过编辑XML格式的配置文件来进行配置。

环境说明:

IP:172.16.110.25 OS:CentOS7.3 Tomcat:8.0.39 jdk:java-1.8.0-openjdk

IP:172.16.110.47 OS:CentOS7.3 Nginx:1.10.2

IP:172.16.110.48 OS:CentOS7.3 httpd:2.4.6

二、tomcat安装配置

(172.16.110.25)上配置

1.tomcat安装

1.1.安装jdk

下载jdk:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

oracle官方下载或者rpm包安装,这里使用EPEL源通过yum来安装

# yum install jdk

查看安装的JDK:

# rpm -qa | grep java
python-javapackages-3.4.1-11.el7.noarch
tzdata-java-2016j-1.el7.noarch
java-1.8.0-openjdk-1.8.0.111-2.b15.el7_3.x86_64
javapackages-tools-3.4.1-11.el7.noarch
java-1.8.0-openjdk-headless-1.8.0.111-2.b15.el7_3.x86_64

查看java版本:

# java -version
openjdk version "1.8.0_111"
OpenJDK Runtime Environment (build 1.8.0_111-b15)
OpenJDK 64-Bit Server VM (build 25.111-b15, mixed mode)

1.2.下载tomcat

版本选择,下载Binary Distributions版本

http://tomcat.apache.org/download-80.cgi

1.3.安装tomcat

tar -xf apache-tomcat-8.0.39.tar.gz -C /usr/local/
cd /usr/local/
ln -s apache-tomcat-8.0.39/ tomcat

1.3.1.tomcat目录说明

# tree -L 1
.
├── bin    #可执行文件路径,tomcat启动关闭脚本、运行工具等等
├── conf   #配置文件路径
├── lib    #依赖库文件路径
├── LICENSE  
├── logs   #日志文件路径
├── NOTICE 
├── RELEASE-NOTES
├── RUNNING.txt
├── temp    #临时文件目录
├── webapps #程序部署路径
└── work    #工作目录

1.3.2.配置环境变量路径:

vim /etc/profile
export PATH=$PATH:/usr/local/tomcat/bin

1.3.3.加载配置:

source /etc/profile


三、tomcat配置文件说明

1.配置文件概括说明

1.1.配置文件路径:

/usr/local/tomcat/conf/

各个配置文件作用:

server.xml

tomcat的主配置文件,包含service,connectors,engine,realm,valve,hosts等组件

web.xml

遵循Servlet规范标准的配置文件,用于配置servlet,并为所有的Web应用程序提供包括MIME映射等默认配置信息;

tomcat-user.xml

Realm认证时用到的相关角色、用户和密码等信息;Tomcat自带的manager默认情况下会用到此文件;在Tomcat中添加/删除用户,为用户指定角色等将通过编辑此文件实现

catalina.policy

java相关的安全策略配置文件,在系统资源级别上提供访问控制的能力

catalina.properties

Tomcat内部package的定义及访问相关的控制,也包括对通过类装载器装载的内容的控制;Tomcat在启动时会事先读取此文件的相关设置;

logging.properties

Tomcat通过自己内部实现的JAVA日志记录器来记录操作相关的日志,此文件即为日志记录器相关的配置信息,可以用来定义日志记录的组件级别以及日志文件的存在位置等

context.xml

所有虚拟host的默认配置信息

1.2.server.xml配置文件说明

默认的配置文件如下:
<?xml version=‘1.0‘ encoding=‘utf-8‘?>
<Server port="8005" shutdown="SHUTDOWN">
  <Listener className="org.apache.catalina.startup.VersionLoggerListener" />
  <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 name="Catalina">
	<Connector port="8080" protocol="HTTP/1.1"
           connectionTimeout="20000"
           redirectPort="8443" />
	<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
	<Engine name="Catalina" defaultHost="localhost">
	    <Realm className="org.apache.catalina.realm.LockOutRealm">
	    <Realm className="org.apache.catalina.realm.UserDatabaseRealm">
		<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 &quot;%r&quot; %s %b" />
        </Host>
    </Engine>
  </Service>
</Server>

1.3.配置文件结构说明

server:配置文件结构

<Server>
   <Service>
     <Connector />
     <Connector />
        </Engine>
          <Host>
      </Host>
    </Engine>
  </Service>
</Server>

1.4.tomcat结构图

1.5.配置文件每段的意义

Server 

Server元素表示整个Catalina servlet容器。

Service 

Service是这样一个集合:它由一个或者多个Connector组成,以及一个Engine,负责处理所有Connector所获得的客户请 求

Connector

一个Connector将在某个指定端口上侦听客户请求,并将获得的请求交给Engine来处理,从Engine处获得回应并返回客户TOMCAT有两个典型的Connector,一个直接侦听来自browser的http请求,一个侦听来自其它WebServer的请求 Coyote Http/1.1 Connector 在端口8080处侦听来自客户browser的http请求 Coyote JK2 Connector 在端口8009处侦听来自其它WebServer(Apache)的servlet/jsp代理请求

Engine

Engine元素表示与特定服务相关联的整个请求处理机制它接收和处理来自一个或多个连接器的所有请求并将完成的响应返回到连接器,以便最终传输回客户端Engine下可以配置多个虚拟主机Virtual Host,每个虚拟主机都有一个域名 当Engine获得一个请求时,它把该请求匹配到某个Host上,然后把该请求交给该Host来处理Engine有一个默认虚拟主机,当请求无法匹配到任何一个Host上的时候,将交给该默认Host来处理

Host 

代表一个Virtual Host,虚拟主机,每个虚拟主机和某个网络域名Domain Name相匹配

每个虚拟主机下都可以部署(deploy)一个或者多个Web App,每个Web App对应于一个Context,有一个Context path 

当Host获得一个请求时,将把该请求匹配到某个Context上,然后把该请求交给该Context来处理

匹配的方法是“最长匹配”,所以一个path==""的Context将成为该Host的默认Context

所有无法和其它Context的路径名匹配的请求都将最终和该默认Context匹配

Context 

一个Context对应于一个Web Application,一个Web Application由一个或者多个Servlet组成

Context在创建的时候将根据配置文件$CATALINA_HOME/conf/web.xml和$WEBAPP_HOME/WEB-INF /web.xml载入Servlet类

当Context获得请求时,将在自己的映射表(mapping table)中寻找相匹配的Servlet类

如果找到,则执行该类,获得请求的回应,并返回

1.6.配置文件详细说明server.xml

<Server port="8005" shutdown="SHUTDOWN">
tomcat的server实例,也就是一个JVM,监听在8005的管理端口,接受SHUTDOWN命令来对server下线

  <Listener className="org.apache.catalina.startup.VersionLoggerListener" />
  <Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" />
  <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" />
  <Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener" />
  #tomcat监听的类接口组件
  
    <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 name="Catalina">
	定义一个service名为Catalina
	<Connector port="8080" protocol="HTTP/1.1"
           connectionTimeout="20000"
           redirectPort="8443" />
	#定义一个连接器,端口为8080;协议为HTTP1.1;链接超时时间为20秒;来自8443的重定向到此端口

	<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
	#定义一个连接器,端口为8009;协议为AJP协议;来自8443的重定向到此端口

	<Engine name="Catalina" defaultHost="localhost">
	#定义一个名为Catalina的引擎,默认的监听主机为localhost
	    <Realm className="org.apache.catalina.realm.LockOutRealm">
	    <Realm className="org.apache.catalina.realm.UserDatabaseRealm">
		<Host name="localhost"  appBase="webapps"
               unpackWARs="true" autoDeploy="true">
			  #定义一个虚拟主机,名称为localhost,程序路径为webapps,自动解包为;自动部署;
		     <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
                      prefix="localhost_access_log" suffix=".txt"
                      pattern="%h %l %u %t &quot;%r&quot; %s %b" />
			  #定义日志的格式
        </Host>
    </Engine>
  </Service>
</Server>

2.启动tomcat进程

# catalina.sh start
Using CATALINA_BASE:   /usr/local/tomcat
Using CATALINA_HOME:   /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME:        /usr
Using CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Tomcat started.

端口说明:

8005:管理服务端口

8080:服务器提供端口(接受http请求的端口)

8009: AJP端口

3.访问http://172.16.110.25:8080/

四、tomcat虚拟机配置

1.tomcat模拟部署程序

1.1.模拟增加程序

cd /usr/local/tomcat/webapps/

创建目录:

mkdir -pv ckl/{META-INF,WEB-INF,lib,servlets}

1.2.配置测试JSP访问

# tree ckl/
ckl/
├── index.jsp
├── lib
├── META-INF
├── servlets
└── WEB-INF

1.3.编写JSP

# cat index.jsp 
<html>
    <head>
           <title>ckl JSP~</title>
    </head>
    <body>
           <%
                  out.println("This is the first programe page!");
           %>
    </body>
</html>

1.4.重启tomcat进程

[[email protected] conf]# catalina.sh stop
Using CATALINA_BASE:   /usr/local/tomcat
Using CATALINA_HOME:   /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME:        /usr
Using CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
[[email protected] conf]# catalina.sh start
Using CATALINA_BASE:   /usr/local/tomcat
Using CATALINA_HOME:   /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME:        /usr
Using CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Tomcat started.

1.5.测试访问http://172.16.110.25:8080/ckl/

2.tomcat虚拟机配置

2.1.模拟部署程序

mkdir /data/kaka/{lib,META-INF,servlets,WEB-INF} -pv

2.2.增加访问页面

vim index.jsp
<html>
    <head>
           <title>ckl JSP~</title>
    </head>
    <body>
           <%
                  out.println("data page ! ");
           %>
    </body>
</html>

2.3.修改配置文件

vim /usr/local/tomcat/conf/server.xml
#增加下面的内容
  <Host name="www1.ckl.com"  appBase="/data/kaka"
            unpackWARs="true" autoDeploy="true">
        <Context path="" docBase="/data/kaka"/>
        <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
               prefix="ckl_access_log" suffix=".txt"
               pattern="%h %l %u %t &quot;%r&quot; %s %b" />
      </Host>
....

2.4.重启进程

[[email protected] conf]# catalina.sh stop
Using CATALINA_BASE:   /usr/local/tomcat
Using CATALINA_HOME:   /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME:        /usr
Using CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
[[email protected] conf]# catalina.sh start
Using CATALINA_BASE:   /usr/local/tomcat
Using CATALINA_HOME:   /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME:        /usr
Using CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Tomcat started.

4.测试访问

http://www1.ckl.com:8080/ckl

五、nginx反向代理tomcat及动静分离

nginx安装到此(172.16.110.47)

nginx(172.16.110.47)--->tomcat(172.16.110.25)

1.nginx反向代理tomcat

1.1.安装nginx

这里采用EPEL的yum安装,如果需要自行编译

yum install nginx

1.2.配置nginx

vim nginx.conf
....
location ~* \.(jsp|do)$ {
        proxy_pass http://www1.ckl.com:8080;
}
....

1.3.重启nginx

systemctl restart nginx.service

1.4.客户端hosts添加

#172.16.110.25 host增加

172.16.110.25 www1.ckl.com

1.5.客户端测试访问:

http://www1.ckl.com:8080/

2.tomcat动静分离

2.1.部署静态文件

cd /usr/share/nginx/html

上传n2.png

2.2.配置nginx配置文件

vim nginx.conf
.....
  location ~* \.(jpg|png|bmp|gif)$ {
        root  /usr/share/nginx/html;
        expires 30d;
    }
    location ~* \.(jsp|do)$ {
        proxy_pass http://www1.ckl.com:8080;
    }
....

如果请求为图片格式的文件,本地处理,如果请求后缀为java格式的,则转发至后端tomcat

5.3.重启nginx

# systemctl restart nginx

5.4.测试访问静态文件

六、apache反向代理tomcat

apache安装到此(172.16.110.48)

apache(172.16.110.48)--->tomcat(172.16.110.25)

1.apache安装

yum install httpd

2.配置apache

vim httpd.conf
#增加如下内容
....
ProxyVia On
ProxyRequests Off
ProxyPreserveHost On
<Proxy *>
  Order deny,allow
  Allow from all
</Proxy>
ProxyPass "/" http://www1.ckl.com:8080/
ProxyPassReverse "/" http://www1.ckl.com:8080/
<Location /examples/jsp >
  Order allow,deny
  Allow from all
</Location>
...

3.重启apache进程

# systemctl restart httpd.service

4.测试访问

七、apache ajp反向代理tomcat

apache安装到此(172.16.110.48)

apache(172.16.110.48)--->tomcat(172.16.110.25)

1.修改apache配置文件

vim httpd.conf
#增加如下内容:
ProxyVia On
ProxyRequests Off
ProxyPreserveHost On
<Proxy *>
  Order deny,allow
  Allow from all
</Proxy>
ProxyPass "/" ajp://www1.ckl.com:8009/
ProxyPassReverse "/" ajp://www1.ckl.com:8009/
<Location /examples/jsp >
  Order allow,deny
  Allow from all
</Location>
...

2.重启apache进程

# systemctl restart httpd.service

4.测试访问

八、server status配置

1.修改配置文件,增加配置

vim tomcat-users.xml
#增加如下内容
<role rolename="manager-gui"/>
<user username="tomcat" password="s3cret" roles="manager-gui"/>

2.重启tomcat进程

[[email protected] conf]# catalina.sh stop
Using CATALINA_BASE:   /usr/local/tomcat
Using CATALINA_HOME:   /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME:        /usr
Using CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
[[email protected] conf]# catalina.sh start
Using CATALINA_BASE:   /usr/local/tomcat
Using CATALINA_HOME:   /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME:        /usr
Using CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Tomcat started.

3.访问状态页面

九、host-manager配置

1.修改配置文件,增加配置

vim tomcat-users.xml
#修改如下内容
<role rolename="manager-gui"/>
<user username="tomcat" password="ckl600" roles="manager-gui,admin-gui"/>

2.重启tomcat进程

[[email protected] conf]# catalina.sh stop
Using CATALINA_BASE:   /usr/local/tomcat
Using CATALINA_HOME:   /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME:        /usr
Using CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
[[email protected] conf]# catalina.sh start
Using CATALINA_BASE:   /usr/local/tomcat
Using CATALINA_HOME:   /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME:        /usr
Using CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Tomcat started.

3.访问状态页面

时间: 2024-11-06 03:04:10

tomcat 说明及部署的相关文章

Tomcat Maven Plugin部署Maven Web应用

Tomcat官方提供了Maven插件用于部署基于Maven的Web应用,不同版本Tomcat使用的插件不同,不同版本插件的使用也有一定区别,详细信息可参考http://tomcat.apache.org/maven-plugin.html.下面记录的是我在Eclipse环境中使用Tomcat Maven Plugin-2.2在Tomcat7中部署Maven Web应用的配置过程: 第一步:配置Tomcat manager用户: 打开Tomcat根目录下conf目录中的tomcat_user.xm

tomcat中同时部署两个项目的问题

其中一个项目总是无法访问. 参考这两篇文章: 1. tomcat中同时部署两个项目的问题 2. java.lang.IllegalStateException: Web app root system property already set to different value 解决方案:为每个项目的web.xml中添加 <context-param> <param-name>webAppRootKey</param-name> <param-value>

Nginx+Tomcat 集群部署

1.Nginx + Tomcat 集群部署 简单配置 1 #user nobody; 2 worker_processes 4;#工作进程的个数 3 4 #error_log logs/error.log; 5 #error_log logs/error.log notice; 6 #error_log logs/error.log info; 7 8 #pid logs/nginx.pid; 9 10 11 events { 12 worker_connections 1024; #单个进程连

java学习---maven工程的创建+tomcat的热部署

 一.创建maven工程 1.创建maven的的web功能 2.在创建完成后,可能发现功能有错误,在eclipse中的错误描述如下: The superclass "javax.servlet.http.HttpServlet" was not found on the Java Build Path 解决办法如下: 步骤:bulid Path --> Configure Bulid Path --> Libraries --> add Library -->

【J2EE】Struts2+Tomcat开发环境部署,“Hello World”的实现

1.在官网下载Struts2的开发包 下载链接如下: http://120.203.229.30/5ff/2bc79/5ff16ae8698e1c321758a8f03a1bc0939892bc79/struts-2.3.16.3-all.zip?n=struts-2.3.16.3-all.zip http://mirrors.cnnic.cn/apache//struts/documentation/struts-2.3.16.3-docs.zip http://mirrors.cnnic.c

linux的tomcat服务器上部署项目的方法

在tomcat服务器上部署项目的前提,是我们已经准备好了tomcat服务器.在CentOs环境下部署JavaWeb环境,部署tomcat服务器在前面的文章中已经总结过了,可以参考以前文章. 一  tomcat服务器修改端口 tomcat服务器配置好以后,默认是8080端口,为了方便访问,我们将端口修改为80端口.比如, tomcat安装在/usr/local/tomcat目录下,利用命令 #cd /usr/local/tomcat/conf #ls 可以tomcat的conf目录下的文件,端口定

Maven+Tomcat+Eclipse热部署

一:研发工具(推荐) Eclipse:eclipse-jee-kepler-SR2-win32-x86_64.zip(自带maven) Tomcat: apache-tomcat-7.0.53 Mysql: 5.0 在eclipse中引入工程(过程可能有点慢,因为需要下载工程需要的jar文件.Jar文件的下载目录为C:\Users\Administrator\.m2) 二:eclipse远程debug调试 1, 编辑tomcat\bin\catalina.bat,在 rem Guess CATA

采用maven 对tomcat 进行自动部署

还是一如既往的废话不多说,直接开门见山 步骤如下: 1.下载一个绿色版完整的tomcat 包 2.进入tomcat/conf 文件下修改文件 tomcat-users.xml文件 <tomcat-users>      <role rolename="admin"/>      <role rolename="manager"/>      <role rolename="manager-gui"/>

TOMCAT管理页面部署WAR包 大小超出上限

今天在往服务器上部署war包时出现错误: 由错误信息可以看出,要部署的WAR包大小超出配置的上限了,配置的上限在"apache-tomcat-7.0.41\webapps\manager\WEB-INF"下面的web.xml里面设置: <multipart-config> <!-- 50MB max --> <max-file-size>62428800</max-file-size> <max-request-size>62

在Tomcat上安装部署SAIKU

在Tomcat上安装部署SAIKU Saiku是一个强大的独立工具,用于查询构建数据集市,如:即席查询报表.图表展示.导出报表成excel或csv格式等.Saiku是基于Mondrian OLAP引擎. 本文主要是一步一步解释如何在tomcat下部署saiku,为了让你更好更快的使用.开始之前,假设你已经比较熟悉数据集市数据库,以及如何建立Mondrian Schema.(可以参考之前的<pentaho schema workbench 图文教程>) 示例数据库.schema文件以及saiku