Tomcat负载均衡、调优核心应用进阶学习笔记(二):Tomcat前世今生、安装、配置文件详细说明、tomcat应用程序部署、webapp 体系结构、tomcat运行方式

版权声明:本文为作者原创,转载请注明出处,联系qq:32248827 https://blog.csdn.net/dataiyangu/article/details/89046841

Tomcat前世今生

  1. java体系:
    1 java程序设计语言
    2 java API(类库)
    3 java class文件格式
    4 java vm(虚拟机)

  2. JDK:java development kit (java api 、jvm)java开发工具

  3. Java SE:JDK + 额外类库,面向桌面级应用

  4. Java EE:Java SE+企业级类库
    servlet、jsp、jmx、jms、javamail、ejb
    servlet 容器,让servlet程序能够在这个环境中编译执行

  5. Tomcat:JDK+servlet,jsp(Java SE的不完整实现)

其他的web container:Jetty、Resin、Websphere(Java SE的完整实现)、webLogic(Java SE的完整实现)、JBoss、Glassfish

server.xml 按照某种层次结构,组织了tomcat内置的各种组件,内部有许许多多特殊的Java类,用于实现tomcat的各种功能,这些就是除了jsp和servelet之外的由tomcat自身的类库,作为一个web应用所需要的一些组件

server.xml中的组件:server、service、connector…

安装

//安装jdk
rpm -ivh jdk-7u9-linux-x64.rpm
ls /usr/java
//安装成功后java目录下就会出现刚刚安装的jdk
jdk1.7.0._09
//配置java环境变量(略)https://blog.csdn.net/w1196726224/article/details/52029201

//安装tomcat(略)
//因为tomcat在启动的时候并不需要管理员,所以为了安全请确保
//tomcat的文件目录是普通用户的权限,启动tomcat脚本的时候,也以普通用户的权限启动
useradd -r tomcat
//注意普通用户默认不能使用小于1024的端口,但是有开源程序能够做到
//通过tomcat执行脚本
su - tomcat -c "/usr/local/tomcat/bin/catalina.sh"
//配置环境变量
vim /etc/profile.d/tomcat.sh
//输入
export CATALINA_HOME= /Users/leesin/for mac 安装包/apache-tomcat-7.0.86
export PATH=$CATALINA_HOME/bin:$PATH

//source这个文件
. /etc/profile.d/tomact.sh
//就可以再其他的目录执行catalina.sh了
cd ../../
//查看版本
catalina.sh version
//检查配置文件语法是否有问题
catalina.sh configtest
catalina.sh start

配置文件详细说明

在tomcat 的conf目录下

➜  apache-tomcat-7.0.86 cd conf
➜  conf ls
Catalina            catalina.properties logging.properties  tomcat-users.xml
catalina.policy     context.xml         server.xml          web.xml

server.xml 核心配置文件(前面讲了太多,略)

context.xml :为部署于此Tomcat实例上的所有web应用程序提供的默认配置文件,每个webapp都可以使用独有的context.xml,通常放置于webapp目录的META-INF子目录中,常用于定义会话管理器、Realm以及JDBC等,这个目录是不允许通过web访问的

web.xml:为部署于此Tomcat实例上的所有web应用程序提供默认部署描述符,通常用于为webapp提供基本的servlet定义和MIME映射表。

tomcat-user.xml:用户名密码

catalina.policy:当机遇-security选项启动tomcat实例时会读取此配置文件,此配置文件是JAVA的安全策略配置文件,配置访问codebase或某些java类的权限

catalina.properties:java属性定义文件,设定类加载器路径、安全保列表和一些调整性能的参数信息

logging.properties:定义日志相关的配置信息,如日志级别、文件路径等

tomcat应用程序部署

部署是指将 webapp 及其所依赖类库等装载进 tomcat 实例上,以便接受用户请求;
部署方式:

  1. 静态方式:在 Tomcat 启动之前进行的 webapp 部署
  2. 动态方式:在打断 tomcat 运行的前提下,通过 tomcatmanager 或其它的命令行工具进行的部署;
  3. TCD: Tomcat Client Deployer

部署是由一类“操作”组成:
Deploy:将 web源文件放置于目标目录、配置 tomcat 服务器能够基于某contcxt 路径访问此 weap,并将其特有的类由类加载器进行装载等

Redeploy:重新部署,主要用于升级时

Undeploy:取消部署,停止应用程序并从 tomcat 实例上移除其部分文件和部署名;

stop:停止,停止只是不让访问了,加载的类还在里面

start:将停止的 webapp 启动起来

部暑方式:
Tomcat manager
ANT 脚本
TCD

war 类归档程序的部署:将归档文件复制到$ CATALINA BASE/webapps/目录中,并重启 tomcat即可; tomcat 会自动展开 war归档;

webapp 体系结构

webapp 体系结构有特定的组织格式,是一种层次型目录结构:通常包含了 serylet 代码文件、jsp页面文件、类文件、部署描述符文件等等,一般会打包成归档格式

/:web 应用程序的根目录
/WEB-INF:此 webapp 的私有资源目录,通常 web.xml 放置于此目录
/WEB-INF/classes:此 webapp 自有的类
/WEB-INF/lib:此 webapp 自有能够被打包为 jar 格式的类

webpp 的归档格式:
EJB类归档的扩展名 .jar
web 应用程序的归档扩展名为 .war
资源适配器的扩展名 .rar
企业级应用程序的扩展名 .ear
web 服务的展名为 .ear 或 .war

<%@ page.language="java”‰>
<%@ page Import=”java,uti1.*%>
<html>
	<head>
	<title>JSP test Page</title:
	</head>
	<body>
		<%>
		out println("Hello world!");
		out println("Hello);
		<%>
</html>

tomcat运行方式

独立配置:既是web服务器,又是servlet容器处理jsp
在这里插入图片描述
进程间配置,web服务器通过nginx或者apache实现
在这里插入图片描述
独立/网络配置
在这里插入图片描述

apache与tomgcat连接器通信的模块有两个:
1.mod_jk:apache1.3 apache2.0
2.mod_proxy:apache2.2

tomcat的连接器协议有两种:
http
ajp

所以连接方式有四种
mod_jk:http,ajp
mod_proxy:http,ajp

mod_jk VS mod_proxy:
负载均衡:两者都支持,但是mod_proxy要弱一点,但是在特性定制上很强大
管理接口:基于web页面管理接口两者都支持,现在好像mod_proxy不支持了
兼容性:mod_proxy已经成为标准模块了,但是仍然需要手动安装
配置:mod_proxy要简单
协议:mod_jk(ajp),mod_proxy(http/https/ajp)

tomcat的http连接器:
类型有三种:
1.基于java的http/1.1了连接器(默认)
2.基于java的高性能NIO HTTO/1.1 连接器
3.基于C/C++研发的Native APR HTTP/1.1连接器
在负载较大的程序中,建议使用基于C/C++研发的Native APR HTTP/1.1连接器,但是需要额外编译安装APR组件

<connector port="8080" protocol="http/1.1">
<connector port="8080" protocol="org.apache.coyote.http1.Htto11NioPtotocol">
<connector port="8080" protocol="org.apache.coyote.http1.Htto11AprPtotocol">

LAMT:
apache(mod_jk,ajp)+tomcat(ajp connector)
apache(mod_proxy,(http,https,ajp))+tomcat(http,https,ajp)
LNMT:
nginx+tomcat(http,https)

猜你喜欢

转载自blog.csdn.net/dataiyangu/article/details/89046841