2010/6/3 1:59:00

让II6同时支持JSP和PHP等网站

让II6同时支持JSP和PHP等网站

 

关于基础的2个环境配置,就是IIS6和JAVA环境配置,这里不说了,可以到其他网站上查下,至于Resin的安装也不说了,这里写的Resin同时支持2x和3x'版本。

 
我先把IIS6装起来。
按步骤进行:

在C盘建立C:\web\jspsite目录。这个就是jsp网站的主目录。

然后在目录下创建一个测试用的test.jsp文件。

输入以下内容:

<HTML>
<HEAD>
<TITLE>Jsp Simple Example</TITLE>
</HEAD>
<BODY>
<% out.println("Hello, world!"); %>
</BODY>
</HTML>

 

接着,在C盘建立C:\web\dllrun目录。

把C:\resin\libexec目录下的isapi_srun.dll 复制到C:\web\dllrun目录下。

至于为什么要把dll复制过去,原因就是jsp的解析是要通过Resin提供的第三方的isapi接口进行的。

平时客户端提交URL的时候,只要发现是.jsp,IIS将把.jsp丢给iis_srun.dll来执行。

 

后面这个目录还要再用,继续往下走:

启动IIS6.0,首先在Web服务扩展里面添加允许.jsp后缀的Web服务扩展。

扩展名什么都随意填写,我这里输入jsp。

这是Windows2003里面IIS6.0增强的安全功能,你可以允许服务器上有哪些服务扩展是允许的,哪些是禁止的。

允许JSP。

为了看得更清楚,我们建立一个新的站点。

打开站点属性,在ISAPI筛选器里面添加新的筛选器,名称随意,这里输入jsp,

再输入可执行文件,也就是刚才说的resin挂接IIS用的ISAPI过滤器,输入

C:\web\dllrun\isapi_srun.dll

确认后,要注意一点,就是刚刚挂接进去的dll不会立即生效,优先级也显示*未知*

没有关系,不用理会。继续往下走。

下面我们需要做的就是比较重要也很复杂的事情了,也就是修改Resin的配置文件。

仔细研究C:\resin\conf\samples下的配置文件的参考,

尤其是要研究iis.conf 和 virtual_host.conf

 

下面说一下我的计划,我计划是这样,建立一个带主机名的网站,这样来模拟真实服务器

环境中,虚拟主机的情况。

那么我计划建立一个jsp网站,abu.com 指向我的IP 127.0.0.1

而127.0.0.1直接访问,是IIS默认的asp网站。

如果这两个都能访问,那么表明,我们的目的已经达到了。

 

为了能够在本地实现访问abu.com的时候能够解析到127.0.0.1 我修改本机的hosts文件

 

接下来,我修改c:\resin\conf目录下的配置文件resin.conf

这里非常关键,但其实最重要的就两个地方。

将<doc-dir>注释掉,将Resin自带的8080端口运行的服务注释掉<http port='8080'/>

加入<http-server app-dir='C:\resin\doc'> 这里的app-dir是缺省路径,假如Resin自带的web

运行的话,缺省就是这个目录。

和下面这里:

仔细看<host>中间的这部分,这是建立虚拟主机的关键,每次增加虚拟主机就需要修改这个部分,

每个站点用<>括起来。

配置文件基本配好了。

下面添加一个resin.ini文件到先前建立的dllrun目录

添加内容

ResinConfigServer localhost 6802
CauchoStatus yes

意思就是当调用isapi_srun.dll的时候读取相关配置

 

回到IIS里面,将主机头名添加进去。

给虚拟主机用户添加账号。

加入Guests组 

然后给对应的目录设定权限:

给C:\web\jspsite目录添加刚才用户的权限,注意需要给读写都给。

给c:\web\dllrun目录刚才那个用户的读权限:

在IIS6.0里面的应用程序池中间添加一个新的池

名字叫jspAppPool,然后给这个池 应用程序池标识给予SYSTEM权限。

其实这里可以给更低一点的权限的,有心的朋友可以自己研究一下。

把JSP的网站加入到这个池中方便集中管理。

在jsp的网站上添加一个虚拟目录,目录名为scripts,并且给予可执行的权限。

最后别忘了给这个网站的运行权限设定为刚才的jsp_user用户。

 

重启Resin,重启IIS。

检查Resin有没有挂接进IIS的办法就是看ISAPI筛选器

如果状态是绿色箭头,表示已经被系统挂接成功。

然后浏览abu.com访问test.jsp文件

而asp网站也同时可以运行


其实整个过程的配置并不复杂,但是有2点很容易出问题,第一就是config文件没去掉默认的端口,第二就是安全问题,其实这个是一个抛砖引玉,类似兼容PHP的做法也是一样,通过ISAPI实现,有兴趣的朋友可以自己试一试。