因为要做压力测试,而内网项目中用的html比较多,所以要先做apache+resin的整合,虽然比较简单,但还是费了些周折,特做此记录。
1. 下载apache源码,编译安装
# ./configure --prefix=/usr/local/apache2 --enable-module=so
# make
# make install
使得apache支持DSO,生成mod_so.c文件
附:DSO即为Dynamic SharedObjects(动态共享目标)的缩写,它是现代Unix派生出来的操作系统都存在着的一种动态连接机制。它提供了一种在运行时将特殊格式的代码,在程序运行需要时,将需要的部分从外存调入内存 执行的方法。Apache在1.3以后的版本后开始支持它。因为Apache早就使用一个模块概念来扩展它的功能并且在内部使用一个基于调度的列表来链接 扩展模块到Apache核心模块.所以, Apache早就注定要使用DSO来在运行时加载它的模块。
2. 下载resin源码,编译安装
# ./configure --with-apxs=/usr/local/apache2/bin/apxs
# make
# make install
前提是JDK环境已经配好
编译完成后将在/usr/local/apache2/modules/下生成mod_caucho.so模块文件
3. 修改resin的配置文件
修改
<web-app id='/' document-directory="/webapps/ROOT"/>
为应用所在目录
下面的可以使用默认配置
<cluster>
<srun server-id="" host="127.0.0.1" port="6802"/>
</cluster>
4. 修改apache的配置文件
修改apache端口,不和resin冲突
Listen 80
修改默认目录,和resin里的配置要一致
DocumentRoot "/usr/local/apache2/htdocs
在文件最后添加如下代码
LoadModule caucho_module /usr/local/apache2/modules/mod_caucho.so
ResinConfigServer 127.0.0.1 6802
CauchoStatus yes
<IfModule mod_caucho.c>
<Location /caucho-status>
SetHandler caucho-status
</Location>
</IfModule>
AddHandler caucho-request jsp
<Location /servlet/*>
SetHandler caucho-request
</Location>
注意ResinConfigServer 127.0.0.1 6802
这里的IP要和resin.conf里
<cluster>
<srun server-id="" host="127.0.0.1" port="6802"/>
</cluster>
设置的一致
5. 启动resin,启动apache
BUG:如果找不到resin服务器,apache访问jsp时会显示源码。
本来以为整合后是由apache处理html页,resin处理jsp页,但是因为这个bug,又开始找原因,原来是mod_caucho.so的问题,解析机制为apache加载mod_caucho.so模块后会截获所有http请求,然后连接resin,如果成功则将请求与resin配置信息比较,相符则resin处理,否则apache处理,如果resin这边down了,那么jsp由apache解析,源码就暴露了。