您的位置:首页 > 理论基础 > 计算机网络

CentOS5.3 编译 mod_jk 1.2.15 链接器 整合apache httpd 和 tomcat

2010-01-20 15:39 513 查看
现在我们来做一个整合,也就是当访问 apache 80 端口时候 遇到 jsp 文件也可以正常访问。

如果不整合, 你的apache 80 是不能运行jsp文件的, 只能使用8080端口,也就是tomcat 来访问。

如何整合呢 ? 要借助一个叫做 apache tomcat 的链接器。

下面是官方网站的下载地址,目前为止最新版是 1.2.15。。。
http://archive.apache.org/dist/jakarta/tomcat-connectors/jk/source/jk-1.2.15/

文章最后我会把这个工具提供下载,如果官方网站太慢的话。

首先下载 jakarta-tomcat-connectors-1.2.15-src.tar.gz 到服务器
解压
]# tar xzvf jakarta-tomcat-connectors-1.2.15-src.tar.gz

注意是进入: jk/native 这个目录
]# cd jakarta-tomcat-connectors-1.2.15-src/jk/native

请确认你的 apache 的 apxs 文件位置
native]# ./configure --with-apxs=/usr/local/apache2/bin/apxs

编译生成mod_jk
native]# make

拷贝编译完成生成的 mod_jk.so 文件, 这里也是要注意你的apache modules 目录位置
native]# cp ./apache-2.0/mod_jk.so /usr/local/apache2/modules/
===============================================
修改 apache 配置文件

# vi /etc/httpd.conf

在DirectoryIndex中添加 index.jsp

<IfModule dir_module>
DirectoryIndex index.html index.jsp
</IfModule>
增加关于加载mod_jk的语句:

#Load jsp
#by luinstein 20090825
LoadModule jk_module modules/mod_jk.so
Include /etc/httpd/conf.d/mod_jk.conf

#指出mod_jk模块工作所需要的工作文件workers.properties的位置
JkWorkersFile /etc/httpd/conf.d/workers.properties

###### Where to put jk logs
JkLogFile /etc/httpd/logs/mod_jk.log

###### Set the jk log level [debug/error/info]
JkLogLevel info

###### Select the log format
JkLogStampFormat "[%a %b %d %H:%M:%S %Y]"

###### JkOptions indicate to send SSL KEY SIZE,
JkOptions +ForwardKeySize +ForwardURICompat -ForwardDirectories

###### JkRequestLogFormat set the request format
JkRequestLogFormat "%w %V %T"

###### 将所有servlet 和jsp请求通过ajp13的协议送给Tomcat,让Tomcat来处理
JkMount /servlet/* worker1
JkMount /*.jsp worker1
JkMount /*.jspx worker1
JkMount /*.do worker1

------------------------------------------------------------

===另一种写法

LoadModule jk_module modules/mod_jk.so

<IfModule mod_jc.c>
JkWorkersFile "/opt/httpd/conf/mod_jk.peroperties"
JkLogFile "/var/log/httpd/mod_jk.log"
JkLogLevel debug
</IfModule>

<IfModule mod_jk.c>
JkMount /*.jsp ajp13
JkMount /*.do ajp13
JkMount /servlet/* ajp13
</IfModule>

Alias /library "/opt/app/library/"
<Directory "/opt/app/library/">
Options Indexes MultiViews
AllowOverride None
Order allow,deny
Allow from all
</Directory>

-------

# vi workers.properties

添加以下内容:

####### Defining a worker named worker1 and of type ajp13
worker.list=worker1

####### Set properties for worker1
worker.worker1.type=ajp13
worker.worker1.host=localhost
worker.worker1.port=8009
worker.worker1.lbfactor=50
worker.worker1.cachesize=10
worker.worker1.cache_timeout=600
worker.worker1.socket_keepalive=1
worker.worker1.socket_timeout=30

-----另外一种配置---

workers.tomcat_home=/opt/tomcat
workers.java_home=/usr/java/jdk1.6.0_17
ps=/
worker.list=worker1
worker.worker1.port=8009
worker.worker1.host=localhost
worker.worker1.type=ajp13
worker.worker1.lbfactor=1
worker.locadbalancer.type=lb
worker.loadbalancer.balanced_workers=worker1
worker.inprocess.type=jni
worker.inprocess.class_path=$(workers.tomcat_home)$(ps)lib$(ps)tomcat.jar
worker.inprocess.cmd_line-start
worker.inprocess.jvm_lib=$(workers.jave_home)$(ps)jre$(ps)lib$(ps)
i386$(ps)classic$(ps)libjvm.so
worker.inprocess.stdout=$(workers.tomcat_home)$(ps)logs$(ps)inprocess.stdout
worker.inprocess.stderr=$(workers.tomcat_home)$(ps)logs$(ps)inprocess.stderr

-------------------
tomcat 配置文件路径:
/etc/tomcat5/server.xml

最后编辑Tomcat的配置文件server.xml,建立虚拟主机

<Host name="www.njupt.org.cn" appBase="webapps"
unpackWARs="true" autoDeploy="true"
xmlValidation="false" xmlNamespaceAware="false">
<!-- SingleSignOn valve, share authentication between web applications
Documentation at: /docs/config/valve.html -->
<!--
<Valve className="org.apache.catalina.authenticator.SingleSignOn" />
-->
<!-- Access log processes all example.
Documentation at: /docs/config/valve.html -->
<!--
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="localhost_access_log." suffix=".txt" pattern="common" resolveHosts="false"/>
-->
<Context path="" docBase="/var/www/projects/njupt.org.cn" debug="0" reloadable="true"
crossContext="true"/>
</Host>

重新启动Apache和Tomcat。。。

刚才我在修改 httpd.conf 可能写入了一些多余信息 导致apache配置文件出错,我注释就可以了。

在 /var/www/projects/njupt.org.cn 下 删掉 index.html

建立一个index.jsp ,

写入一些简单的内容:

<%
out.println( "Hello " );
%>
用浏览器访问服务器 http://localhost,看到正确的页面了。

说明 apache 遇到jsp页面 ,它可以提交给 tomcat 去处理。。。

这样就可以整合了 apache 和 tomcat 了。谢谢大家
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: