详解CentOS6.7部署Tomcat及主配置文件
Java程序实现部署及应用
POSIX :可移植操作系统,编程操作系统接口规范,实现跨平台编译运行。
API:应用程序编程接口
ABI:应用程序二进制接口 描述了应用程序和操作系统之间,一个应用和它的库之间,或者应用的组成部分之间的低接口.
JAVA:包含四个独立又彼此相关的技术
Java设计语言
JavaAPI :Java应用程序编程接口
Java class 文件格式,需要运行在Java虚拟机中
jvm :Java虚拟机
JAVA流程
1、JavaAPI和程序设计语言开发出源程序
2、Java源程序文件,通常以.java结尾
3、使用Java编译器来编译Java源程序文件
4、编译完成之后保存为类文件,以.class结尾
5、这些类文件必须找一个Java虚拟机才能跑起来
6、这些类文件在Java虚拟机上还需要类库才能跑起来!
7、公共类需要用 class loader 才能加载!
JVM实现方式:
1、一次性解释器:解释的是字节码并执行,解释的过程是将字节码转换成二进制的过程。
2、即时编译器:每一个class类在运行的时候,解释完的内容要缓存下来,第二次执行时,去缓存中取。依赖于更多内存缓存解码后的结果。
3、自适应编译器:自动缓存20%的执行频率比较高的代码,提高80%的速度。
JDK :Java开发环境+运行,是实现Java开发的最小环境
Java应用领域的不同分为三类:
Java SE :Java标准版,
Java EE :Java企业版
Java ME :Java移动版
CGI(协议) :通用网关接口,将处理后的动态界面格式化成HTML格式显示给用户。
Servlet(Server Applet),全称Java Servlet,是用Java编写的服务器端程序。其主要功能在于交互式地浏览和修改数据,生成动态Web内容。狭义的Servlet是指Java语言实现的一个接口,
JSP全名为Java Server Pages,中文名叫java服务器页面,其根本是一个简化的Servlet设计,
它是在传统的网页HTML文件(*.htm,*.html)中插入Java程序段(Scriptlet)和JSP标记(tag),从而形成JSP文件,后缀名为(*.jsp)。 用JSP开发的Web应用是跨平台的,既能在Linux下运行,也能在其他操作系统上运行。
.jsp ---> .java --->(JVM).class
jasper 帮助.jsp转换成.java,Java编译器帮助.java转换成.class,JVM帮助.class转换成程序文件。
JDK :提供了javac,能够帮助.java转换成.class。
servlet容器:包含了JDK,又包含了JDK不具备的额外的组件
基于servlet容器的工作流程:
1、前端有一个web应用程序,负责接收用户请求,一旦发现用户请求的是CGI的内容,
2、servlet程序负责通过CGI协议跟web程序进行交互
3、请求的内容接收进来之后,在JVM上完成程序的执行
servlet容器负责接收CGI传递过来的请求,负责监控本地的.Java程序是否发生了修改,若修改,负责把它转换成.class格式。(包含JDK)
web容器:包含了servlet与JSP框架的程序
连接器:真正想跟用户请求的http请求交互,前端还要依赖于web服务器,连接器可以实现就算没有web服务器解码http请求,封装http响应,也可以直接完成与用户交互,
若是直接面向大量用户请求,连接器压力会变的很大,若前端给他放一个web服务器,web服务器再带有缓存功能,那后端的连接器压力会小很多,这种模式称为Java的web容器,或者应用程序服务器!
安装JDK
1、默认安装在/usr/java/目录下,
2、使用rpm方式安装Java
3、在/etc/profile.d/创建java.sh,内容为:
export JAVA_HOME=/usr/local/jdk1.6.0_45
export PATH=$PATH:$JAVA_HOME/bin
4、执行一下文件:. /etc/profile.d/java.sh
5、使用命令查看Java版本号:java -version
Java配置参数方法:
-XX:+选项 :开启 此参数指定的功能
-XX:-选项 :关闭功能
-XX:选项=值 :给指定的选项赋值
java -XX:+PrintFlagsFinal :显示Java全部选项及其参数
Tomcat详解
tomcat架构详解
整个Tomcat容器架构从外向内一共5层
Tomcat在自己内部开发了一个使用Java语言开发了一个web服务器。
Tomcat自身内部就有一个web服务器,而这个web服务器本身运行起来以后,完全可以直接工作在前台,让用户对本机发起web请求。
第一层是Tomcat服务器(server):每一个server就是一个Tomcat实例,意味着启动一个Tomcat就是启动一个serve。
可以直接响应解析http请求
第二层是Tomcat 服务(service):将一个或多个连接器关联至一个引擎,
连接器(Connector):贯穿第一层到第三层,用于将server和引擎建立起来关联关系,将server收到的请求转发给某一个引擎的组件。有多个!
第三层是Tomcat 引擎:就是一个具有servlet 容器的Java虚拟机,也是具备了web容器功能的容器,解码.java。
第四层是Tomcat 主机:可以有多个,用来在引擎内部实现虚拟主机
第五层是上下文 :定义类似于Apache的路径别名,配置一个Context最主要的是指定Web应用程序的根目录,以便Servlet容器能够将用户请求发往正确的位置。
容器类组件
Engine(引擎)
Host (主机)
Context(上下文)
顶级组件
server (服务器)
service (服务)
其余组件
Realm(领域):用户账户数据库,
Valve (阀门):实现用户的认证
Logger:日志记录器
常用组件
1、Loader(类加载器)
Java的动态装载功能是其语言功能强大表现之一,Servlet容器使用此功能在运行时动态装载servlet和它们所依赖的类。Loader可以用于Context中控制java类的加载
2、Manager
Manger对象用于实现HTTP会话管理的功能,Tomcat6中有5种Manger的实现:
1) StandardManager(标准管理器)
Tomcat6的默认会话管理器,用于非集群环境中对单个处于运行状态的Tomcat实例会话进行管理。当Tomcat关闭时,这些会话相关的数据会被写入磁盘上的一个名叫SESSION.ser的文件,并在Tomcat下次启动时读取此文件。
2) PersistentManager(持久会话管理器)
当一个会话长时间处于空闲状态时会被写入到swap会话对象,这对于内存资源比较吃紧的应用环境来说比较有用。
3)DeltaManager
用于Tomcat集群的会话管理器,它通过将改变了会话数据同步给集群中的其它节点实现会话复制。这种实现会将所有会话的改变同步给集群中的每一个节点,也是在集群环境中用得最多的一种实现方式。
4) BackupManager
用于Tomcat集群的会话管理器,与DeltaManager不同的是,某节点会话的改变只会同步给集群中的另一个,而非所有节点。
5)SimpleTcpReplicationManager
Tomcat4时用到的版本,过于老旧了。
3、Stores(存储)
持久管理器必须包含一个Store元素以指定将会话数据存储至何处。这通常有两种实现方式:FileStore(文件存储)和JDBCStore(数据库存储)。
4、Resources
经常用于实现在Context中指定需要装载的但不在Tomcat本地磁盘上的应用资源,如Java类,HTML页面,JSP文件等。
5、Cluster
专用于配置Tomcat集群的元素,可用于Engine和Host容器中。在用于Engine容器中时,Engine中的所有Host均支持集群功能。在Cluster元素中,需要直接定义一个Manager元素,这个Manager元素有一个其值为org.apache.catalina.ha.session.DeltaManager或org.apache.catalina.ha.session.BackupManager的className属性。同时,Cluster中还需要分别定义一个Channel和ClusterListener元素。
5.1、Channel(通告)
用于Cluster中给集群中同一组中的节点定义通信"信道"。Channel中需要至少定义Membership、Receiver和Sender三个元素,此外还有一个可选元素Interceptor。
5.2、Membership(成员关系管理)
用于Channel中配置同一通信信道上节点集群组中的成员情况,即监控加入当前集群组中的节点并在各节点间传递心跳信息,而且可以在接收不到某成员的心跳信息时将其从集群节点中移除。Tomcat6中Membership的实现是org.apache.catalina.tribes.membership.McastService。
5.3、Sender(心跳发送)
用于Channel中配置"复制信息"的发送器,实现发送需要同步给其它节点的数据至集群中的其它节点。发送器不需要属性的定义,但可以在其内部定义一个Transport元素。
5.4、 Transport(发送集群事务信息)
用于Sender内部,配置数据如何发送至集群中的其它节点。Tomcat6有两种Transport的实现:
1) PooledMultiSender
基于Java阻塞式IO,可以将一次将多个信息并发发送至其它节点,但一次只能传送给一个节点。
2)PooledParallelSener
基于Java非阻塞式IO,即NIO,可以一次发送多个信息至一个或多个节点。
5.5 Receiver(接受集群事务信息)
用于Channel定义某节点如何从其它节点的Sender接收复制数据,Tomcat6中实现的接收方式有两种BioReceiver和NioReceiver。
Tomcat的主配置文件(server.xml)及其各组件之间的关系
<server>
<service>
<Connector />
<Engine>
<Host>
<Context> </Context>
</Host>
</Engine>
</service>
</server>
安装Tomcat之前需要先安装JDK,因为要依赖于开发环境!
Tomcat的安装配置
1、解压包:tar xf apache-tomcat-7.0.69.tar.gz -C /usr/local/
2、包名太长,进行软连接:ln -sv apache-tomcat-7.0.69 tomcat
3、目录结构
bin :二进制程序路径,里面有 .jar文件(Java归档压缩包),shell脚本,还有 .bat(windows的批处理脚本)
conf :配置文件
server.xml:主配置文件
tomcat-users.xml:用户认证
web.xml:默认的应用程序部署描述符 (部署:将一个web应用程序所依赖到的类装载进JVM)
context.xml :默认为上下文所提供的配置文件
logging.properties :定义日志属性
catalina.properties :定义应用程序本身属性
catalina.policy :定义Tomecat自身安全策略,资源授权
lib :类库文件
logs :日志文件
temp :临时文件目录
webapps :应用程序目录,每一个程序文件夹中都有一个WEB-INF,这是程序的私有目录。
work :工作目录,
4、启动Tomcat
4.1、输出一个变量:vim /etc/profile.d/tomcat.sh ,内容为:
export CATALINA_HOME=/usr/local/tomcat
export PATH=$PATH:$CATALINA_HOME/bin
4.2、 启动 catalina.sh start ,然后查看端口:netstat -lnpt中的8080、8009
5、访问网页: 格式为(IP地址:8080)
5、使用service启动Tomcat:vim /etc/rc.d/init.d/tomcat
脚本:
#!/bin/sh
# Tomcat init script for Linux.
#
# chkconfig: 2345 96 14
# description: The Apache Tomcat servlet/JSP container.
JAVA_HOME=/usr/java/jdk1.7.0_67
CATALINA_HOME=/usr/local/tomcat
export JAVA_HOME CATALINA_HOME
exec $CATALINA_HOME/bin/catalina.sh $*
Tomcat优化
Tomcat的优化分成两块:
Tomcat启动命令行中的优化参数即JVM优化(catalina.sh)
ü 系统响应时间增快
ü JVM回收速度增快同时又不影响系统的响应率
ü JVM内存最大化利用
ü 线程阻塞情况最小化
Tomcat容器自身参数的优化(server.xml)
详解CentOS6.7部署Tomcat及主配置文件的更多相关文章
- Nginx中文详解、配置部署及高并发优化
一.Nginx常用命令: 1. 启动 Nginx /usr/local/nginx/sbin/nginxpoechant@ubuntu:sudo ./sbin/nginx2. 停 ...
- Tomcat详解系列(2) - 理解Tomcat架构设计
Tomcat - 理解Tomcat架构设计 前文我们已经介绍了一个简单的Servlet容器是如何设计出来,我们就可以开始正式学习Tomcat了,在学习开始,我们有必要站在高点去看看Tomcat的架构设 ...
- http服务详解(2)——httpd2.2的配置文件常见设置
摘要:一个服务的配置文件非常重要,弄懂配置文件是熟练掌握服务的必要前提. 一.httpd-2.2常见文件介绍 (1)配置文件: 主配置文件尽量别改,改自己的子配置文件 /etc/httpd/conf/ ...
- 一文详解CentOS6.5搭建DNS服务
本文详细介绍DNS服务在Linux Operation System 中的搭建过程 一.DNS服务器的工作原理 客户机提出域名解析请求,并将该请求发送给本地的域名服务器.当本地的域名服务器收到请求后, ...
- Git详解之服务部署
前言 到目前为止,你应该已经学会了使用 Git 来完成日常工作.然而,如果想与他人合作,还需要一个远程的 Git 仓库.尽管技术上可以从个人的仓库里推送和拉取修改内容,但我们不鼓励这样做,因为一不留心 ...
- 详解zabbix安装部署(Server端篇)
原文:http://blog.chinaunix.net/uid-25266990-id-3380929.html Linux下常用的系统监控软件有Nagios.Cacti.Zabbix.Monit等 ...
- zabbix 2.2.20 安装详解(Centos6.9)
环境说明 [root@centos ~]# cat /etc/redhat-release CentOS release 6.9 (Final) [root@centos ~]# uname -a L ...
- ServletContextListener使用详解(监听Tomcat启动、关闭)
在 Servlet API 中有一个 ServletContextListener 接口,它能够监听 ServletContext 对象的生命周期,实际上就是监听 Web 应用的生命周期. 当Serv ...
- 详解centos6和centos7防火墙
CentOS6.5查看防火墙的状态: ? 1 [zh@localhost ~]$service iptable status 显示结果: ? 1 2 3 4 5 6 7 8 9 [zh@localho ...
随机推荐
- 编码格式检测chardet模块
chardet模块: -->检测编码格式 未知编码的bytes,要把它转换成str,就需要知道该bytes的编码方式 #1.直接检测bytes >>> chardet.dete ...
- vue bootstrap中modal对话框不显示遮挡打不开
使用Vue bootstrap时,点击modal却不能弹出来,被隐藏遮挡无法显示,参考下面的这个博客的说明解决了这个问题: Heap Stack Blog(pingbook.top)Vue boots ...
- CentOS安装SonarQube7.9.1
1.准备 SonarQube版本:sonarqube-7.9.1.zip,官网地址:https://www.sonarqube.org/downloads/ jdk版本:jdk-11.0.4_linu ...
- Linux内核klist链表分析
1.前言 在Linux内核的源码中,除了简洁的list链表外,内核还有klist链表,它是list链表的线程安全版本,在结构体中提供了整个链表的自旋锁,对链表节点查找.插入和删除等操作,都需要先获得这 ...
- SpringBoot工程常见报错汇总
1.Springboot测试类运行报错 java.lang.IllegalStateException: Unable to find a @SpringBootConfiguration, you ...
- [转帖]Redis持久化--Redis宕机或者出现意外删库导致数据丢失--解决方案
Redis持久化--Redis宕机或者出现意外删库导致数据丢失--解决方案 https://www.cnblogs.com/xlecho/p/11834011.html echo编辑整理,欢迎转载,转 ...
- 怎么看系统是UEFI还是Legacy BIOS启动模式?
在命令行 cmd 中输入 msinfo32 ,找到右侧[BIOS模式],看到这里显示的是[uefi],那么说明是[uefi]方式启动的,反之显示为[BIOS],那么就是传统[BIOS]启动模式.如下 ...
- 【转】潜说js对象和数组
/* 数组和对象 [JavaScript 权威指南 第五版] */ /* 对象: 是一个无序属性集合, 每个属性都有自己的名字和值 */ /* 创建对象简单方法, 对象直接量 */ var obj = ...
- DotnetSpider爬虫简单示例 net core
文章地址 https://blog.csdn.net/sD7O95O/article/details/78097556 安装爬虫框架 NUGET 安装DotnetSpider 创建HTTP协议数据包 ...
- KSQL: Streaming SQL for Apache Kafka
Few weeks back, while I was enjoying my holidays in the south of Italy, I started receiving notifica ...