Tomcat基础配置详解

组件原理图如下:

任何tomcat实例就是一个server,而一个server内部要想能够解析jsp页面转义编译serlet程序,要靠其引擎来实现

而引擎才是真正意义上执行jsp代码的容器,都是tomcat用类来描述这些组件的

同时,为了接受用户的请求,需要基于connector组件,所谓监听的套接字的程序,能够接手用户的请求,被称为连接器

一个server内部可以完全运行N个引擎,无非就是运行多个虚拟机而已

war包的概念

放在网页目录可以直接访问,而部署的时候可以自动将其展开装载,而这是部署本身所完成的工作

在实现web站点的时候,在出程序之下有目录比如/web/htdoc,而在其目录下有一子目录/web/htdoc/bbs 而在其下有个论坛程序

这个目录程序跟其他程序可能不在同一组,而新加的子目录则需要重新部署,因为其属于独立的应用程序,因为每个独立程序都需要独立部署

对于tomcat来讲每一个host内部还有一子组件,叫做conntest,其作用是为了实现程序的独立部署

对于tomcat来讲要想记录日志的话,因此这些都需要使用特殊接口来实现,所以,任何一个需要操作硬件资源的进程,资源都有一个类在实现我们的需求,tomcat也一样。

常见组件

1.服务器(server)

实例,通常一个jvm只能包含一个实例,一般情况下,一个物理服务器可以启动多个jvm,从而启动多个实例,但一般不这么做

2.服务(service)

一个服务组件通常包含一个引擎和此引擎相关联的一个或多个链接服务器

3.连接器(connectors)

一个引擎能配置多个连接器 但是每个连接器的端口不能冲突

同时,tomcat也支持AJP JSERV和JK2连接器,实现让apache反向代理到后端服务器的非常高效的传输协议

容器类组件

4.引擎

可以自己接收用户的http请求,并构建响应报文,而且可以在内部处理java程序的整个套间

5.主机

6.上下文

被嵌套类组件

7.阀门

能够过滤也可以做访问控制

8.日志记录器

9.领域(Realm)

用来实现用户的认证和授权

对tomcat来讲,每种模型上的实现必须开发一种程序,才能完成相应组件的功能,而java中任何程序都是一个类

 

JAVA常用类型文件

EJB程序通常以.jar结尾

web程序通常打包为.war

资源适配器通常为.rar

企业级应用长须为.ear

web服务通常会打包为.ear或.war

tomcat配置文件详解

tomcat的配置文件位于/path/to/tomcat/conf/目录下

[root@node1 conf]#cd /usr/local/tomcat/conf

[root@node1 conf]#cpserver.xml server.xml.bak

查看文件:

[root@node1 conf]#cat server.xml

Listener 为侦听器,通常实现tomcat内部进行通信的,可在各组件之间完成通信

<Serverport="8005" shutdown="SHUTDOWN">

<Listener className="org.apache.catalina.core.AprLifecycleListener"SSLEngine="on" />

<Listener className="org.apache.catalina.core.JasperListener"/>

<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 databasethat can be updated and saved"

factory="org.apache.catalina.users.MemoryUserDatabaseFactory"

pathname="conf/tomcat-users.xml" />            #其调用tomcat-user.xml配置文件进行用户认证

</GlobalNamingResources>

服务类组件配置信息,将连接器关联至引擎上

<Servicename="Catalina">

<Connector port="8080" protocol="HTTP/1.1"                   #所在监听端口,以及协议版本号
              connectionTimeout="20000"                         #连接超时时间,单位毫秒
              redirectPort="8443" />                            #必要的时候可以做重定向,定义在8443

<Connector port="8443"protocol="HTTP/1.1" SSLEnabled="true"        #端口监听在8443,协议http1.1
              maxThreads="150" scheme="https" secure="true"            #最大线程,协议版本,安全的
              clientAuth="false" sslProtocol="TLS" />                  #不验证客户端 ssl协议用的是tls

<Connector port="8009" protocol="AJP/1.3"redirectPort="8443" />

<Engine name="Catalina" defaultHost="localhost">                       #引擎,名为catalina

<RealmclassName="org.apache.catalina.realm.LockOutRealm">

<RealmclassName="org.apache.catalina.realm.UserDatabaseRealm"
              resourceName="UserDatabase"/>
      </Realm>

<Host name="localhost"  appBase="webapps"                       #应用程序存放的位置,相对路径

unpackWARs="true" autoDeploy="true">                     #如果是war文件格式,是否解压,是否自动部署

#定义阀门,java中类的记录方式,当前所处域名反过来写的记录方式
        <ValveclassName="org.apache.catalina.valves.AccessLogValve"directory="logs"

prefix="localhost_access_log." suffix=".txt"         #日志的命名 suffix表示时间戳
              pattern="%h %l %u %t &quot;%r&quot; %s %b" />        #访问日志的格式

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

tomcat的运行方式

tomcat可以自我独立运行,因此可以直接监听在某个端口,从而接收用户的http请求,并构建响应报文

另外也可以做为容器,不接受用户的http请求只接受用户的对于某个jsp文件的请求

当用户第一次去请求tomcat的时候,会自动部署好一个程序的

来查看配置文件:

明确说明了主机名默认为localhost,而unpackWARs的值为真,意为是可以自动部署的

<Hostname="localhost"  appBase="webapps"

unpackWARs="true" autoDeploy="true">

配置Tomcat

·定义管理页面用户名及密码

用户名及密码是通过tomcat-users.xml配置文件进行调用的,所以我们只需要配置tomcat-users.xml即可

[root@node1 conf]#vim tomcat-users.xml

加入以下参数信息

<rolerolename="manager-gui"/>                #定义manager组

<role rolename="admin-gui"/>                 #定义admin组

<user username="tomcat"password="tomcat" roles="manager-gui,admin-gui"/>     #定义用户名及密码都为tomcat,并将tomcat用户加入至manager、admin组中

保存退出并重启服务

[root@node1 conf]#/etc/init.d/tomcat stop

[root@node1 conf]#/etc/init.d/tomcat start

查看监听端口是否正常

[root@node1 conf]#netstat -lntup | grep java

tcp        0     0 :::8080                    :::*                        LISTEN      2359/java

tcp        0     0 ::ffff:127.0.0.1:8005      :::*                        LISTEN      2359/java

tcp        0     0 :::8009                    :::*                        LISTEN      2359/java

访问测试:

输入用户名和密码,选择登陆

如下所示,已经成功登陆至后台信息页面

Type               #所属类型类型

Initial            #初始化空间多大

Total

Maximum             #最大空间有多大

Used                #已经使用了多少

Max threads: 200                     默认最大并发连接数200

Current thread count: 0              当前连接数

Current thread busy: 0               繁忙连接数

对其做压力测试并观察其连接状态,并再次刷新页面

状态说明:

R: 已经准备好

S: 正在提供服务

k:  持久连接

登陆后台管理页面

由于我们刚才定义tomcat-user.xml的时候已经将用户tomcat加入到admin-gui组中,所以我们直接登陆就可以了

打开主页面,选择Host Manager

Host Manager 表示有多少个虚拟主机

如果想部署新的虚拟主机可以在下面的图形界面进行部署,如下所示

tomcat应用程序目录结构

/WEB-INF/web.xml:包含当前webapp的deploy描述符,如所有的servlet和JSP等动态文件的详细信息,会话超时时间和数据源等;因此,其也通常用于定义当前webapp特有的资源;

/WEB-INF/classes: 包含所有服务器端类及当前应用程序相关的其它第三方类等;
/WEB-INF/lib: 包含JSP所用到的JAR文件;
/META-INF/  :也是用来存放资源信息的,只不过一般用的不是特别多,就算有的话里面程序也未必有文件;

webapps/manager/META-INF/context.xml :上下文配置文件,有些配置信息可以放在META配置当中;

使用自定义位置

如果我们自己要发布一个资源,使用其他特定的目录来发布应用程序的话,也是按照这种格式:

[root@node1tomcat]# mkdir /tomcat/app1/WEB-INF/{classess,lib} -p

进入目录

[root@node1 app1]#pwd

/tomcat/app1

创建index.jsp,内容如下:

[root@node1 app1]#cat index.jsp

<%@ pagelanguage="java" %>

<html>

<head><title>TomcatA</title></head>

<body>

<h1><fontcolor="red">TomcatA </font></h1>

<tableborder="1">

<tr>

<td>Session ID</td>

<%session.setAttribute("abc","abc"); %>

<td><%= session.getId()%></td>

</tr>

<tr>

<td>Created on</td>

<td><%=session.getCreationTime() %></td>

</tr>

</table>

</body>

</html>

定义虚拟主机

编辑server.xml

[root@node1 conf]#vim server.xml

加入如下内容

<Host name="www.test.com" appBase="webapps"

unpackWARs="true"autoDeploy="true">

<ValveclassName="org.apache.catalina.valves.AccessLogValve"directory="logs"

prefix="www_access_log."suffix=".txt"

pattern="%h %l %u %t&quot;%r&quot; %s %b" />

<Contextpath="/" docBase="/tomcat/app1" />                  #定义访问的路径当于整个路径的根,docBase表示访问的路径的位置

</Host>

这里没有主机名所以将默认主机设置为www.test.com

<Engine name="Catalina" defaultHost="www.test.com">

启动服务

[root@node1 conf]#/etc/init.d/tomcat start

或者

[root@node1 conf]#catalina.sh start

查看监听端口是否正常

[root@node1 conf]#netstat -lntup | grep java

tcp        0     0 :::8080                     :::*                        LISTEN      2079/java

tcp        0     0 ::ffff:127.0.0.1:8005       :::*                        LISTEN      2079/java

tcp        0     0 :::8009                     :::*                        LISTEN      2079/java

访问测试:

http://10.0.10.61:8080/

第一次访问时,页面会很慢,是因为第一次访问jsp的时候都需要对其进行编译;

 

编译jsp页面的执行次序

jsp页面通过jasper进行编译 再由编译器 javac编译为 class文件因此每一次都需要编译的,如果不改文件刷新速度是非常快

如果是更改了文件的话,第一次访问可能会等待半天,所以任何时候更改完源程序都需要重新编译文件的

一旦页面被编译后会有什么样的结果:

[root@node1 conf]#cd Catalina/

[root@node1Catalina]# ll

total 8

drwxr-xr-x. 2 rootroot 4096 Jun 26 10:48 localhost

drwxr-xr-x. 2root root 4096 Jul  1 10:45 www.test.com               #每一个host都有一个独立的目录

[root@node1 Catalina]# pwd

/usr/local/tomcat/work/Catalina

[root@node1Catalina]# ll www.test.com/_/org/apache/jsp/index_jsp.

index_jsp.class  index_jsp.java

#此处已验证了,首先由jasper翻译成serverlet,再由其编译成class文件

实例:部署论坛程序

论坛程序包:JavaCenter_Home_2.0_GBK.zip

下载源码包可以去jsprun官方进行下载

解压源码包并拷贝至相关目录

[root@node1 ~]# unzip JspRun\!_6.0.0_UTF8.zip

[root@node1 ~]# cdJspRun\!_6.0.0_UTF8/

[root@node1upload]# cp -fra * /tomcat/app1

启动tomcat

[root@node1 app1]#catalina.sh start

启动mysql

[root@node1 app1]#/etc/init.d/mysqld start

将mysql赋予授权

mysql> grantall on jchome.* to 'jcuser'@'localhost' identified by 'jdpass';
Query OK, 0 rows affected (0.00 sec)

mysql> flushprivileges;

创建数据库

mysql> createdatabase jchome;

修改论坛程序的config.properties配置文件

[root@node1 app1]#pwd

/tomcat/app1

[root@node1 app1]#vim config.properties

修改为:

dbhost = localhost

dbport=3306

dbuser = jcuser

dbpw = jdpass

dbname = jchome

pconnect = 0

访问 http://10.0.10.61:8080/upload/install.jsp 进行安装

安装过程略,最后迎接我们的则是崭新的论坛界面,如下所示:

END,感谢各位。

转载于:https://blog.51cto.com/blief/1754284

tomcat配置文件详解相关推荐

  1. 【Linux】循序渐进学运维-tomcat配置文件详解

    文章目录 目录结构及作用 tomcat配置文件 1. context.xml 2. web.xml 3. server.xml 4. tomcat-users.xml 运维常用配置文件讲解 1. 整体 ...

  2. tomcat之配置文件详解

    tomcat配置文件详解 目录结构及作用 tomcat配置文件 1. context.xml 2. web.xml 3. server.xml 4. tomcat-users.xml 运维常用配置文件 ...

  3. idea 服务器tomcat配置文件,IntelliJ IDEA Tomcat配置详解(图文)

    IntelliJ IDEA Tomcat配置详解(图文) 发布时间:2020-10-07 17:31:10 来源:脚本之家 阅读:94 作者:chenshun123的博客 栏目:服务器 查找该问题的童 ...

  4. nginx服务器安装及配置文件详解

    nginx服务器安装及配置文件详解 seanlook 5月26日 发布 4 推荐 97 收藏,9.2k 浏览 nginx在工作中已经有好几个环境在使用了,每次都是重新去网上扒博客,各种编译配置,今天自 ...

  5. Tomcat原理详解和各种集群的实现

    注意:本篇博文涉及的知识内容如下,实验中所用的系统环境为RHEL6.4. 1.Java基础知识讲解 2.Tomcat的安装和实现 3.通过apache的mod_proxy模块代理并实现Tomcat负载 ...

  6. spring boot配置文件详解

    spring boot配置文件详解 application.properties是spring-boot的核心配置文件,这个配置文件基本可以取代我们ssm或者ssh里面的所有的xml配置文件. 当我们 ...

  7. Nginx(二):反向代理原理 与 配置文件详解

    相关阅读: Nginx(一):Nginx原理概述 与 安装步骤详解 Nginx(二):反向代理原理 与 配置文件详解 Nginx(三):负载均衡策略 与 Nginx静态服务器 Nginx(四):Ngi ...

  8. Tomcat原理详解和各种集群的实现(转自:http://harisxiong.blog.51cto.com/7513022/1304746)

    标签:apache Java Tomca mod_proxy 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://harisxiong ...

  9. Tomcat的详解和优化

    Tomcat的详解和优化 转自:http://www.toutiao.com/i6387497067698192897/ 一.Tomcat的缺省是多少,怎么修改 Tomcat的缺省端口号是8080. ...

最新文章

  1. 深度学习入门笔记,三流程序员如何凭借实力逆袭高薪?你不服不行!
  2. 给kali的metasploit下添加一个新的exploit
  3. 大数据和后端学习知识体系思维导图
  4. 信息学奥赛一本通(1260:【例9.4】拦截导弹(Noip1999))
  5. mysql 5.6.26 驱动_mysql版本引起的驱动问题
  6. HttpServlet请求重定向
  7. 北大计算机学硕几年,我的OI经历 --张正超(深学教育资深教练、北大计算机系研究生)...
  8. Atitit 数据库结果集映射 ResultSetHandler 目录 1. 常见的四种配置ResultSetHandler 1 2. Dbutil 1 3. Mybatis 致敬 3 4. H
  9. drool 7.x 语法和属性
  10. VTracer - 将图片转化为矢量 SVG 图形的免费开源工具
  11. 贝叶斯统计:概率思维的魔法
  12. 洛谷 P1653 猴子 解题报告
  13. 国内各运营商(ISP)IP段表
  14. win7网络不显示共享计算机,Win7电脑已开启共享却找不到设备 局域网显示空白该怎么解决...
  15. 雷泰RAYR3I2MSCL3+高温红外测温仪的参数指标
  16. vivo 5G旗舰机真的要来了?新商标好抢眼!
  17. 致创业者的一封信[经典励志]
  18. 福利!在线编写代码的网站
  19. 快速编写HTML代码常用的方法
  20. 网络状态码302和303的区别究竟是啥?面试官最满意这种回答

热门文章

  1. smarty模板引擎总结六配置网站title,keywords,description
  2. PHP Learning every day
  3. 教你50招提升ASP.NET性能(十五):解决性能问题时不要低估UI的价值
  4. Citrix Production Features by Edition
  5. [转]常用数字处理算法的Verilog实现
  6. ob服务器维修视频,教你如何使用OB系统 还在看转播?你OUT了!
  7. circle后面是什么意思 python_python小课堂16 - 函数篇
  8. linux 的内核参数优化,linux 内核参数优化
  9. Redis集群在线分片
  10. samba服务器配置及使用