查看文章
 
Resin自助研究——Resin整合IIS
2005-09-12 11:11
Resin为IIS和PWS提供了一个快速的servelet运行器,允许IIS运行Servelets和JSP文件。





如果你没有必要这么做,那么我们建议你使用Resin作为一个独立的web服务器。

1. 准备工作和环境变量

2. 配置IIS/PWS

     1. ISAPI过滤器

     2. ISAPI过滤器优先权

     3. 配置resin.conf

     4. 测试servlet引擎

3. 命令行参数

     1. 内存配置

4. 部署为一个NT服务

5. 负载平衡

6. 手工配置

     1. IIS和Resin在不同的机器上

7. 虚拟站点(虚拟主机)

8. 给不同的虚拟站点配置不同的JVM

9. 问题解决

     1. 解决IIS 6的问题

准备工作和环境变量

Resin需要JDK 1.4。你可以从Sun公司的主页上下载一个并安装。

用控制面板来配置两个环境变量:

JAVA_HOME=C:\j2sdk1.4.2

RESIN_HOME=C:\resin-3.0

配置IIS/PWS

要使Resin与IIS整合,你必须遵照以下步骤:

1. 配置IIS/PWS

2. 配置resin.conf

3. 开启httpd

ISAPI 过滤器

你可以运行RESIN_HOME/bin/setup.exe 来安装你的配置。 如果setup.exe不工作或者配置

失败,那么就按照在手工配置中的步骤来配置。

ISAPI 过滤器优先权

isapi_srun.dll把它自己安装为默认优先权。有些用户可能需要将其设置为根高的优先等

级,例如设置为高于IIS的DAV支持的优先等级。

resin.ini

ResinConfigServer localhost 6802

CauchoStatus yes

IISPriority high

配置resin.conf

resin.conf 应该是IIS配置的一个镜子。换句话说, 你应该配置文档根目录和任何一个目

录的别名。

对于很多用户来说,在Resin唯一需要改变的是把<document-directory> 属性从  webapp

s/ROOT 改变为你需要的目录,例如 C:/inetpub/wwwroot 。 浏览器中URL路径的映射来自

于硬盘中真实的文件,这点对Resin和对IIS是相同的。更多用来给IIS做映射的复杂配置,

你需要参阅path-mapping属性来比较。

resin.conf

    <!-- configures the default host, matching any host name -->

    <host id=  >



      <!-- configures the root web-app -->

      <web-app id= / >

        <document-directory>C:/inetpub/wwwroot</document-directory>

        <!-- adds xsl to the search path -->

        <class-loader>

          <simple-loader path="$host-root/xsl"/>

        </class-loader>

      </web-app>

    </host>



测试servlet引擎

在命令提示行状态下运行RESIN_HOME/httpd.exe来启动servlet运行器。

Run httpd.exe

C:\> cd %RESIN_HOME%

C:\resin-3.0> cd bin

C:\resin-3.0> httpd.exe

现在浏览http://localhost/test.jsp.你会看到一个文件没有找到 的信息。

创建一个文件 d:\inetpub\wwwroot\test.jsp

2 + 2 = <%= 2 + 2 %>

浏览http://localhost/test.jspagain. 你会看到

2 + 2 = 4

命令行参数

Httpd.exe可以识别如下的配置参数。当在命令行下独自使用参数-install,则把Resin安

装为一个系统服务,可以使得这个参数在每次系统启动的时候都自动运行。

参数 意义

-verbose Write more verbose information to the log file

-resin_home <path> Sets the location of Resin

-java_home <path> Specify the JDK location

-msjava Use Microsoft s JVM

-nojit Disable JIT compilation to help debugging

-classpath <cp> Add to the classpath

-J<arg> Set a Java command line argument, e.g. -J-nojit.

-X<arg> Set a Java -X command line argument, e.g. -Xms128m.

-D<foo=bar> Set a Java variable, e.g. -Dresin.home=here.

-install Install as an NT service

-install-as <name> Install as an NT service with the specific name.

-remove Remove as an NT service

-remove-as <name> Remove as an NT service with the specific name.

内存配置

内存配置是JVM参数的一部分。对于大多数JVM, 你可以通过运行"java -X"找到一个完全的

列表。

Memory Configuration

Argument Meaning

-Xms<size> Initial Java heap size, e.g. -Xms32m

-Xmx<size> Maximum Java heap size, e.g. -Xmx128m

-Xms<size> the size of the heap for the young generation

See Performance : JVM Tuning : Memory for more information on JVM memory usage

.

布署为NT服务

一旦你习惯了使用IIS整合Resin,你就应该把Resin安装为NT服务。作为一个服务,Resin

会在每次NT引重新引导之后自动启动。服务也会在Resin因为异常而退出时自动启动。

要安装为一个服务,请使用

win> resin-3.0.x/httpd -install

要移除服务,请使用

win> resin-3.0.x/httpd -remove

你即不需要重新引导机器或者从控制面板/服务面中来启动服务,NT系统会自动启动servl

et运行器。

注意: 在有JDK版本中会存在错误,使得管理员注销的时候JDK也跟着退出。JDK 1.4或更新

版本可以通过启动参数-Xrs来避免这个错误。

win> resin-3.0.x/httpd -install -Xrs

负载平衡

使用Resin的时候你可以把请求分配给多个主机来处理。所有带有相同会话线程的请求会分

配给相同的主机。此外,如果主机崩溃了,IIS过滤器会把请求送往下一个可用的主机。



另外,你也可以指定一个备份主机。备份主机只有当所有一线主机都崩溃的时候才会处理

请求。

参见Resin配置一节查阅更多信息。

resin.conf

<resin xmlns="http://caucho.com/ns/resin>

<server>

  <cluster>

    <srun id="a" host="host1" port="6802" index="1"/>

    <srun id="b" host="host2" port="6802" index="2"/>

    <srun id="c" host="backup" port="6802" index="3" backup="true"/>

  ...

</server>

</resin>

安装多个servlet运行器服务

win> resin-3.0.x/httpd -install-as "Resin-A" -server a -Xrs

win> resin-3.0.x/httpd -install-as "Resin-B" -server b -Xrs

win> resin-3.0.x/httpd -install-as "Resin-C" -server c -Xrs

手工配置

专家们可能希望手动配置Resin/IIS而不是使用setup程序。过程如下:

1. 确认httpd.exe正确工作

2. 拷贝isapi_srun.dll到IIS scripts目录, d:\inetpub\scripts. 你可能需要运行 net

stop w3svc 才可能访问并且在那个目录写入文件。

3. 如果你有个虚拟站点(虚拟主机), 你必须配置IIS 使得每个虚拟站点的虚拟目录 /scr

ipts指向d:\inetpub\scripts。

4. (可选) 创建一个resin.ini 在 d:\inetpub\scripts 下,指明ResinConfigServer

5. (可选) 添加"CauchoStatus yes"在resin.ini中,目的是为了调试

6. 配置IIS装在isapi_srun.dll作为ISAPI过滤器.

7. 重启动IIS (控制面板/服务)或者net stop w3svc 紧接着输入 net start w3svc.

8. 浏览/servlet/Hello和/foo.jsp. 你应该看到"无法打开连接"错误.

9. 启动httpd.exe

10. 浏览/servlet/Hello和/foo.jsp.你应该看到这些servlet.

拷贝isapi_srun.dll到inetpub/scripts 是最直接了当的方法。 如果你升级了一个新版本

的Resin, 你可能需要停止IIS (控制面板/服务)来取得覆写isapi_srun.dll的权力.

resin.ini是个可选的文件在inetpub/scripts 覆盖自动注册给 $RESIN_HOME/conf/resin

.conf 配置文件。如果你只有一个Resin服务器,你不需要创建resin.ini并且isapi_srun.

dll使用由setup.exe程序创建的注册值。

resin.ini文件只有当你有多台Resin配置文件给不同的虚拟站点做配置时才是必须的。



resin.ini应该包含如下一行:

ResinConfigServer localhost 6802

你可以把 localhost 更改为一个后台服务器. 你也可以添加一个多服务器的 ResinConfi

gServer 项目到一个集群配置上。

为了便于调试, 你可以添加"CauchoStatus yes"这样一行:

ResinConfigServer localhost 6802

CauchoStatus yes

出于安全考虑, resin.ini默认的CauchoStatus值是"no"。

在IIS管理器中添加一个ISAPI过滤器。

IIS 和 Resin在不同的机器上

当Resin和IIS在不同的机器上时,你需要更改ResinConfigServer,把"localhost" 改为R

esin服务器运行的IP地址。

ResinConfigServer 192.168.0.10 6802

CauchoStatus yes

虚拟站点(虚拟主机)

如果IIS正在管理多个虚拟站点(其他人都称作虚拟主机),那么你需要配置IIS把isapi_sru

n.dll过滤器泳在每个虚拟站点上。配置IIS使得对每个虚拟站点有个虚拟目录/scripts 指

向d:\inetpub\scripts, 以便每个站点都可以使用isapiu_srun.dll.

Resin通过<host>标签的id 属性来配置和组织虚拟主机。

带有虚拟主机的resin.conf

<resin xmlns="http://caucho.com/ns/resin>

  ...

  <server>

    ...



    <host id="foo.com">

      ...

    </host>



    <host id="bar.com">

      ...

    </host>



    <host id="baz.com">

      ...

    </host>



  </server>

</resin>

Resin通过检查url.来组织使用那个主机。在上面的例子中http://foo.com/some/path

url回使用id="foo.com" 的虚拟主机,而url为http://bar.com/some/path会使用id="ba

r.com"的虚拟主机.

为每个虚拟站点配置不同的JVM

如果需要为每个独立站点配置独立的JVM,则需要为每个虚拟站点编写独立resin.ini文件

,并且把这个文件放置在scripts目录下面。

resin-foo.conf



<resin xmlns="http://caucho.com/ns/resin>

<server>

  <cluster>

    <srun port="6802"/>

  </cluster>

  ...

  <host id="*">

    ...

  </host>

</server>

</resin>

resin-bar.conf



<resin xmlns="http://caucho.com/ns/resin>

<server>

  <cluster>

    <srun port="6803"/>

  </cluster>

  ...

  <host id="*">

    ...

  </host>

</server>

</resin>

为每个虚拟站点安装独立的servlet运行器

win> resin-3.0.x/httpd -install-as "Resin-foo" -conf resin-foo.conf -Xrs

win> resin-3.0.x/httpd -install-as "Resin-bar" -conf resin-bar.conf -Xrs

resin.ini for IIS virtual site foo.com

ResinConfigServer localhost 6802

resin.ini for IIS virtual site bar.com

ResinConfigServer localhost 6803

ResinConfigServer告诉isapi_srun.dll用来连接Resin实例的端口号。你可以把localhos

t 更改为一个后台服务器。你也可以给机群配置中添加多个ResinConfigServer 项目。



resin-foo.conf和resin-bar.conf包含一个<host id="*">标签,你无需指定主机名,因为

每个conf/JVM 都只从一个固定虚拟站点上接收请求(因为对每个虚拟站点存在唯一的resi

n.ini文件)。

问题解决

1. 用独立运行模式来检查你的配置。换句话说,添加一个 <http port= 8080 /> 域并且

浏览http://localhost:8080.

2. 检查 http://localhost/caucho-status。这个会告诉你ISAPI 过滤器/扩展是否被正

确的安装。

3. 每个srun 主机应该是绿色的并且映射应该跟你的resin.conf相一致。

4. 如果caucho-status完全, 那么问题在于isapi_srun 的安装。直接输入http://localh

ost/scripts/isapi_srun.dll/caucho-status (通过过滤器).如果失败了, IIS 找不到is

api_srun.dll.

o 检查在isapi_srun.dll是否在c:\inetpub\scripts.

o 确保IIS和NTFS文件系统都给isapi_srun.dll设定了适当的访问权限。

o 确保你的IIS主机有从/scripts 到c:\inetpub\scripts 的映射并且/scripts有执行权限



o IIS 6用户需要额外步骤.

5. 如果你没有创建新的IIS web站点,你需要创建一个虚拟目录/scripts指向d:\inetpub\

scripts目录。

6. 如果caucho-status 显示位错误映射, 那么resin.conf文件的配置有误.

7. 如果caucho-status显示为一个红色的servlet运行器, 那么httpd.exe没有正确启动。



8. 如果你得到一个 "cannot connect to servlet engine", caucho-status会显示位红色

, 那么httpd.exe就没有正确的启动。

9. 如果httpd.exe不能正确启动,你应该查看Resin的日志文件。你应该使用httpd.exe -

verbose 来获取更多信息。

10. 如果你发现Resin的文件没有找到, IIS配置也正确,那么可能是resin.conf指向了错

误的目录。

IIS 6的问题解决

IIS 6/Windows 2003的用户可能需要额外的操作步骤。

&#8226; 确认系统账户有足够的权限来读取C:\InetPub和C:\InetPub\Scripts目录还有is

api_srun.dll。

&#8226; 检查在`Internet服务管理器 中列出的`Web服务扩展 ,确认Resin在web服务扩展

列表中并且状态为“启动”。你可以按下"添加一个新的web服务扩展...",在扩展名里填写

.jsp或者其你的文件的扩展名,单击添加按钮并且找到isapi_srun.dll, 选中"设置扩展服

务状态为允许"的复选框,单击OK.

&#8226; 检查用户是否为“应用程序池标志”指定了Resin安装目录拥有读写的权限。打开

“应用程序池”的属性对话框。在“标志”选项签中找到用户,在单选按钮旁边有名为“

预定义用户”的标签,在下拉列表中,可能名字为“网络服务”。那么选中Resin安装目录

的物理目录和其他所有子目录的执行权,使用户具有读/写权限的状态为“开启”。


类别:学·it技术||添加到搜藏 |分享到i贴吧|浏览(2673)|评论 (0)
 
 
最近读者:
 
网友评论:
发表评论:
姓 名:
网址或邮箱: (选填)
内 容:
     

   
帮助中心 | 空间客服 | 投诉中心 | 空间协议
©2012 Baidu