Apache+Tomcat项目部署过程记录 - Apache - 服务器之家

服务器之家

专注于服务器技术!
当前位置:首页 > Web服务器 > Apache

Apache+Tomcat项目部署过程记录

发布时间:2014-03-08 来源:服务器之家

客户请求通过Apache过滤转发到tomcat服务器,对于一些静态页面的请求,包括请求的Html文件,静态页面或者动态页面中的图片都直接由Apache处理,采用另外一种说法就是,对于用户发出的对动态页面的请求,如jsp、servlet,由Apache转发给Tomcat处理,可以有效提高服务器性能。下面记录配置过程。
环境配置:JDK1.4、Tomcat5.0.28、Apache2.0.58、mod_jk-apache-2.0.59.so(下载地址:http://www.apache.org/dist/tomcat/tomcat-connectors/jk/binaries/win32/jk-1.2.25/)
Tomcat配置:
在conf/server.xml中有
<Connector port="8009" enableLookups="false" redirectPort="8443" debug="0" protocol="AJP/1.3"/>,通过8009端口接收AJP13请求
增加一个配置文件,命名为worker.properties。内容如下
workers.tomcat_home=D:/developEnv/server/Tomcat528
workers.java_home=D:/developEnv/JDK/j2sdk1.4.2_05
ps=/
worker.list=ajp13
worker.ajp13.port=8009
worker.ajp13.host=localhost
worker.ajp13.type=ajp13
worker.ajp13.lbfactor=1
看key能明白每行配置的具体意思。这里的ajp13.port的值和上面server.xml中的Connector Port值一致,host根据实际情况,Apache所在机器地址
对于部署在Tomcat上的应用不需要任何变动,不论是直接将war放置在webapp里面,还是将应用的配置文件放在在conf/catalina/localhost/里面。至此Tomcat配置完毕。

Apache的配置:
修改Apache的httpd.xml文件
首先需要确认两个参数,Listen是指Apache的监听端口,不能和现已使用的端口冲突,否则Apache启动失败,在设置过程中,如果出现Apache启动失败的情况时,可以将同目录下的httpd.default.conf文件内容覆盖过来,这里存放的是Apache的默认配置。
另外一个参数是DocumentRoot,这是你的应用放置的起始位置,后面对于想通过Apache转发到Tomcat的应用,其静态内容的存放位置都是相对于该目录的。
在httpd.xml的最后增加如下内容
#加载mod_jk模块
      LoadModule jk_module modules/mod_jk.so
#指向之前生成的Tomcat中conf目录下的workers.properties文件绝对路径
     JkWorkersFile "D:/developEnv/server/Tomcat528/conf/workers.properties"
     #模块工作日志存放文件
     JKLogFile "d:/tmp/jkLog.log"
#日志记录级别,debug为最低级别,使用该级别时,系统日志量非常大,可以采用info、error
     JKLogLevel error
      ServerAdmin tsimgsong@hotmail.com
      ServerName localhost
       DirectoryIndex index.html index.htm index.jsp
#设置转发的请求url,这里设置对于jsp请求或者servlet请求都通过jkModule转发给Tomcat,如果设置JKMount /* Apache将不做任何工作,完全由Tomcat接替Apache,这样就没有整合的意义了,只是起到请求转发的功能,所有的客户请求还是交由Tomcat处理
       JKMount /servlet/* ajp13
       JKMount /*.jsp ajp13
 可以使用 apache -t测试配置文件是否正确,如果错误会提示错误原因。

 应用系统需要做一些相应的变动:
 1、将系统中的一些静态内容按照目录结构移动到apache 的DocumentRoot的相应应用文件夹中,只有那些

 问题以及问题解决:
 1、问题:通过上面方法设置之后,可以通过Apache访问到JSP页面,测试表明静态内容是直接由Apache处理。但是访问server内容时,却不能解析,报404页面不能访问错。
    解决:尽管JKMount /servlet/* ajp13已经设置了满足这种格式的请求由Tomcat处理,但是不能工作,目前的解决方法有2个,一个是重新银蛇server到一个url,并带上后缀,然后在JKMount中类似jsp那样设置,第二个方法是换用Apache2.2,Apache2.2已经支持Tomcat,采用Proxy方式。有知道解决访问虚拟目录访问请留言.

针对有多个应用的需求,设置虚拟主机
LoadModule jk_module modules/mod_jk.so
JkWorkersFile "D:/developEnv/server/Tomcat528/conf/workers.properties"    
<VirtualHost *:81>
     JKLogFile "d:/tmp/jkLog.log"
     JKLogLevel info
     DocumentRoot d:/data/apache/www
      ServerAdmin tsimgsong@hotmail.com 
       ServerName hzCB
       DirectoryIndex index.html index.htm index.jsp
       JKMount /*.srv ajp13
       JKMount /*.jsp ajp13
 </VirtualHost>
 <VirtualHost *:82>
    ServerAdmin tsimgsong@hotmail.com
    DocumentRoot d:/data/apache/www
    ServerName hzPB
    ErrorLog logs/pb.log
    CustomLog logs/pbAccess.log common
</VirtualHost>

 <VirtualHost *:83>
    ServerAdmin tsimgsong@hotmail.com
    DocumentRoot d:/data/apache/www
    ServerName hzIM
    ErrorLog logs/im.log
    CustomLog logs/imAccess.log common
</VirtualHost>