435rwe 发表于 2014-7-7 09:54:01

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企业级应用长须为.earweb服务通常会打包为.ear或.war
tomcat配置文件详解tomcat的配置文件位于/path/to/tomcat/conf/目录下#cd /usr/local/tomcat/conf#cpserver.xml server.xml.bak查看文件:#cat server.xmlListener 为侦听器,通常实现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 "%r" %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即可
#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组中保存退出并重启服务#/etc/init.d/tomcat stop#/etc/init.d/tomcat start查看监听端口是否正常
#netstat -lntup | grep javatcp      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                     默认最大并发连接数200Current 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配置当中;
使用自定义位置如果我们自己要发布一个资源,使用其他特定的目录来发布应用程序的话,也是按照这种格式:# mkdir /tomcat/app1/WEB-INF/{classess,lib} -p进入目录#pwd/tomcat/app1创建index.jsp,内容如下:#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
#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"%r" %s %b" />         <Contextpath="/" docBase="/tomcat/app1" />                  #定义访问的路径当于整个路径的根,docBase表示访问的路径的位置      </Host>这里没有主机名所以将默认主机设置为www.test.com   <Engine name="Catalina" defaultHost="www.test.com">启动服务#/etc/init.d/tomcat start或者#catalina.sh start查看监听端口是否正常#netstat -lntup | grep javatcp      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文件因此每一次都需要编译的,如果不改文件刷新速度是非常快如果是更改了文件的话,第一次访问可能会等待半天,所以任何时候更改完源程序都需要重新编译文件的
一旦页面被编译后会有什么样的结果:#cd Catalina/# lltotal 8drwxr-xr-x. 2 rootroot 4096 Jun 26 10:48 localhostdrwxr-xr-x. 2root root 4096 Jul1 10:45 www.test.com               #每一个host都有一个独立的目录# pwd/usr/local/tomcat/work/Catalina# ll www.test.com/_/org/apache/jsp/index_jsp.index_jsp.classindex_jsp.java#此处已验证了,首先由jasper翻译成serverlet,再由其编译成class文件
实例:部署论坛程序论坛程序包:JavaCenter_Home_2.0_GBK.zip 下载源码包可以去jsprun官方进行下载
解压源码包并拷贝至相关目录
# unzip JspRun\!_6.0.0_UTF8.zip# cdJspRun\!_6.0.0_UTF8/# cp -fra * /tomcat/app1启动tomcat
#catalina.sh start启动mysql
#/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配置文件
#pwd/tomcat/app1#vim config.properties修改为:
dbhost = localhostdbport=3306dbuser = jcuserdbpw = jdpassdbname = jchomepconnect = 0访问 http://10.0.10.61:8080/upload/install.jsp 进行安装
安装过程略,最后迎接我们的则是崭新的论坛界面,如下所示:


END,感谢各位。

页: [1]
查看完整版本: Tomcat基础配置详解