整合Apache和Tomcat构建Web服务器(4)

3.Tomcat的配置
(1)tomcat的目录机构
在上面的操作中,Tomcat安装在了/usr/local/tomcat5.5.12下,tomcat每个目录的含义如表8.2所示:
表8.1
目录名称 目录作用
bin 存放各种平台下启动和关闭Tomcat的脚本文件
comm 存在Tomcat服务器及所有的web应用程序可以访问的JAR文件
conf 存放Tomcat的各种配置文件,最重要的是 server.xml和web.xml
logs 存放Tomcat日志文件
server 此目录又包含lib和webapps 2个主要目录,webapps存放Tomcat自带的两个WEB应用admin应用和manager应用,lib存放Tomcat服务器所需的各种JAR文件
shared 此目录又包含lib目录,lib目录主要存放所有web应用都可以访问的jar文件(但是不能被Tomcat服务器访问)
webapps Tomcat的主要Web发布目录,默认情况下把Web应用文件放于此目录
work 存放JSP编译后产生的class文件
(2)server.xml的配置
server.xml是tomcat的核心配置文件,为了支持与apache的整合,在tomcat中也需要配置虚拟主机,server.xml是一个有标签组成的文本文件,找到默认的<Host>标签,在此标签结尾,也就是</Host>后面增加如下虚拟主机配置:
<Host debug="0" appBase="/webdata/www" unpackWARs="true">
    <Context path="" docBase="" debug="1"/>
</Host>
其中:
? name:指定虚拟主机名字,这里为了演示方便,用IP代替。
? debug:指定日志输出级别
? appBase:存放Web应用程序的基本目录,可以是绝对路径或相对于$CATALINA_HOME的目录,默认是$CATALINA_HOME/webapps。
? unpackWARs:如果为true,则tomcat会自动将WAR文件解压后运行,否则不解压而直接从WAR文件中运行应用程序。

? autoDeploy:如果为true,表示Tomcat启动时会自动发布appBase目录下所有的Web应用(包括新加入的Web应用)
? path:表示此Web应用程序的url入口,如为“/jsp”,则请求的URL为
? docBase:指定此Web应用的绝对或相对路径,也可以为WAR文件的路径。
这样tomcat的虚拟主机就创建完成了。
注意:tomcat的虚拟主机一定要和apache配置的虚拟主机指向同一个目录,这里统一指向到/webdata/www目录下,所以接下来只需在/webdata/www中放置jsp程序即可。
在server.xml中,还需要注意的几个标签有:
    <Connector port="8080" maxHttpHeaderSize="8192"
 maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" redirectPort="8443" acceptCount="100" connectionTimeout="20000" disableUploadTimeout="true" />
这是tomcat对http访问协议的设定,http默认的监听端口为8080,在apache和tomcat整合的配置中,是不需要开启tomcat的http监听的,为了安全期间,建议注释掉此标签,关闭http默认的监听端口。
      <Connector port="8009"
               enableLookups="false" redirectPort="8443" protocol="AJP/1.3" />
上面这段是tomcat对ajp13协议的设定,ajp13协议默认的监听端口为8009,整合apache和tomcat必须启用该协议,JK模块就是通过ajp协议实现apache和tomcat协调工作的。
(3)配置tomcat启动脚本
Tomcat的bin目录主要存放各种平台下启动和关闭tomcat的脚本文件,在Linux下主要有catalina.sh、startup.sh和shutdown.sh 3个脚本,而startup.sh和shutdown.sh其实都用不同的参数调用了catalina.sh脚本。
Tomcat在启动的时候会去查找jdk的安装路径,因此,我们需要配置系统环境变量,这里详细讲述下Linux下环境变量的设定。
? /etc/profile:是配置系统全局环境变量,系统中所有应用都可以使用这个环境变量。
? ~/.bash_profile:是用户环境变量,每个用户可以通过配置这个文件而设定不同的环境变量。
针对Java环境变量的设置,可以在/etc/profile中指定JAVA_HOME,也可以在启动tomcat的用户环境变量.bash_profile中指定JAVA_HOME,这里我们在catalina.sh脚本中指定java环境变量,编辑catalina.sh文件,添加如下内容:
# OS specific support.  $var _must_ be set to either true or false.
JAVA_HOME=/usr/local/jdk1.6.0_07
export JAVA_HOME
cygwin=false
os400=false
上面加粗部分是新加内容,其它为catalina.sh文件原有内容。通过JAVA_HOME指定了JDK的安装路径,然后通过export设置生效。
4.测试apache与tomcat整合
到这里为止,apache与tomcat整合配置已经完毕了,接下来我们通过添加jsp程序来测试整合的结果,看是否达到了预期的效果。
这里我们将/usr/local/tomcat5.5.12/webapps/ROOT/目录下的所有文件拷贝到/webdata/www下,然后启动tomcat与apache服务,执行步骤如下:
[root@localhost~]#cp –r /usr/local/tomcat5.5.12/webapps/ROOT/*  /webdata/www
[root@localhost ~]# /usr/local/tomcat5.5.12/bin/startup.sh
[root@localhost ~]# /usr/local/apache2/bin/apachectl start
启动服务完毕,就可以访问站点了,输入,如果能访问到tomcat默认的jsp页面,表示tomcat解析成功,接着,在/webdata/www下建立一个test.html的静态页面,内容如下:
<html>
    <head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    <title>Administration</title>
</head>
<body>
apache and tomcat sussessful,
This is html pages!
</body>
</html>
通过访问,应该出现:
apache and tomcat sussessful ,This is html pages!
则表示静态页面也可以正确解析。
由于tomcat也能处理静态的页面和图片等资源文件,那么如何才能确定这些静态资源文件都是由apache处理了呢,知道这个很重要,因为做apache和tomcat集成的主要原因就是为了实现动、静资源分离处理。
一个小技巧,可以通过apache和tomcat提供的异常信息报错页面的不同来区分这个页面或者文件是被谁处理的,例如输入,则显示了页面内容,那么随便输入一个网页,服务器上本来是不存在这个页面的,因此会输出报错页面,根据这个报错信息就可以判断页面是被apache或者tomcat处理的。同理,对于图片、js文件和css文件等都可以通过这个方法去验证。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wywjjz.html