1. Resin介绍及其使用配置

    Resin是一个提供高性能的,支持 Java/PHP 的应用服务器。目前有两个版本:一个是GPL下的开源版本,提供给一些爱好者、开发人员和低流量网站使用;一种是收费的专业版本,增加了一些更加适用于生产环境的特性。

    Resin的一些特性:

    可靠性:Resin包含了很多可靠的特性,包括服务器自动重启、检测并重启死锁的服务器、管理JVM内存以防止内存泄露等。

    集群:Resin可以将多个服务器作为一个服务器来对客户进行响应,从而增强服务器的扩展能力。

    持久和分布的sessions:持久的session能够在服务器重启的时候保持现有的Http会话,分布式的session可以在多个服务器之间共享Http会话的状态。

    增强的本地代码:同时为Windows和Linux系统提供了本地的代码增强支持。能够改善Socket链接、持久链接和文件读写方面的性能。

    OpenSSL:提供原生的OpenSSL库支持,比JSSE提供的方案要好很多。

    HTTP代理缓存:能够通过内存和磁盘缓存系统提高服务器的性能表现,将动态页面的速度提高到接近静态页面。

    Gzip过滤器:通过gzip来减少带宽。

    Resin服务器的安装(Windows - 独立版)

    1、安装JDK1.5或更高

    2、确保JDK的安装以及正确设置了环境变量JAVA_HOME

    3、解压Resin文件

    4、执行 java –jar resin-3.1.8/lib/resin.jar

    5、或者运行 http.exe

    6、在浏览器地址栏中输入 http://localhost:8080 即可进行访问

    我们也可以将Resin设置为系统服务。

    虚拟机的配置:

    Resin的配置文件位于 ./conf/ 下,默认的配置文件为 resin.conf。

    配置简单的虚拟机,我们只要加入

    <host host-name="test.heep.com" root-directory="D:\workspaces\java\testsys"> 

        <access-log path="logs/test.access.log" 

              format='%h %l %u %t "%r" %s %b "%{Referer}i" "%{User-Agent}i"' 

              rollover-period="1W"/>

    <web-app id="/" root-directory="WebRoot/">

    </web-app> 

      </host> 

    </cluster>

    另外在host文件中加入对应的记录,这样,我们就可以访问 http://test.heep.com 了

  2. <!--  Resin 3.1 配置文件. -->
  3. <resin xmlns="http://caucho.com/ns/resin" xmlns:resin="http://caucho.com/ns/resin/core">
  4. <!-- 加载resin/lib下的所有.jar文件-->
  5. <class-loader>
  6. <tree-loader path="${resin.home}/lib"/>
  7. <tree-loader path="${resin.root}/lib"/>
  8. </class-loader>
  9. <!--  管理配置 -->
  10. <management path="${resin.root}/admin">
  11. </management>
  12. <!--   JDK日志接口的配置.   -->
  13. <log name="" path="stdout:" timestamp="[%H:%M:%S.%s] "/>
  14. <!-- 日志信息的级别:'info' 生产环境  'fine' 开发环境 'finer' 调试环境 -->
  15. <logger name="com.caucho" level="info"/>
  16. <logger name="com.caucho.java" level="config"/>
  17. <logger name="com.caucho.loader" level="config"/>
  18. <!--  环境上下文的检测时间,对于生产站点, 这个要设置长一点,例如600秒,10分钟  -->
  19. <dependency-check-interval>2s</dependency-check-interval>
  20. <!--      发送邮件通知的SMTP服务器     -->
  21. <system-property mail.smtp.host="127.0.0.1"/>
  22. <system-property mail.smtp.port="25"/>
  23. <!--      你可以把编译器改成 "javac", "eclipse" 或者 "internal".    -->
  24. <javac compiler="internal" args="-source 1.5"/>
  25. <!-- Security providers. -->
  26. <security-provider>
  27. com.sun.net.ssl.internal.ssl.Provider
  28. </security-provider>
  29. <!-- 去掉注释,如果你使用resin提供的xml应用 -->
  30. <system-property javax.xml.parsers.DocumentBuilderFactory
  31. ="com.caucho.xml.parsers.XmlDocumentBuilderFactory"/>
  32. <system-property javax.xml.parsers.SAXParserFactory
  33. ="com.caucho.xml.parsers.XmlSAXParserFactory"/>
  34. <cluster id="app-tier">
  35. <!-- 设置集群上下文的根, 相对于server.root -->
  36. <root-directory>.</root-directory>
  37. <server-default>
  38. <!-- HTTP服务的端口-->
  39. <http address="*" port="8080"/>
  40. <!-- SSL端口配置: -->
  41. <http address="*" port="8443">
  42. <openssl>
  43. <certificate-file>keys/gryffindor.crt</certificate-file>
  44. <certificate-key-file>keys/gryffindor.key</certificate-key-file>
  45. <password>test123</password>
  46. </openssl>
  47. </http>
  48. <!--          JVM参数设置        -->
  49. <jvm-arg>-Xmx256m</jvm-arg>
  50. <jvm-arg>-Xss1m</jvm-arg>
  51. <jvm-arg>-Xdebug</jvm-arg>
  52. <jvm-arg>-Dcom.sun.management.jmxremote</jvm-arg>
  53. <!-- Uncomment to enable admin heap dumps 去掉这个如果你想管理内存堆的倾倒 -->
  54. <jvm-arg>-agentlib:resin</jvm-arg>
  55. <watchdog-arg>-Dcom.sun.management.jmxremote</watchdog-arg>
  56. <!--   强制resin强制重起时的最小空闲内存    -->
  57. <memory-free-min>1M</memory-free-min>
  58. <!-- 最大线程数量. -->
  59. <thread-max>256</thread-max>
  60. <!--  套接字等待时间 -->
  61. <socket-timeout>65s</socket-timeout>
  62. <!-- 配置 keepalive -->
  63. <keepalive-max>128</keepalive-max>
  64. <keepalive-timeout>15s</keepalive-timeout>
  65. <!--          如果使用的是UNIX,这里是启动的帐号和用户组. -->
  66. <user-name>resin</user-name>
  67. <group-name>resin</group-name>
  68. </server-default>
  69. <!-- 定义群集服务器 -->
  70. <server id="" address="127.0.0.1" port="6800"/>
  71. <!--    Configures the persistent store for single-server or clustered 配置独立服务器或者群集的持久化存储,专业版的功能    -->
  72. <resin:if test="${resin.isProfessional()}">
  73. <persistent-store type="cluster">
  74. <init path="session"/>
  75. </persistent-store>
  76. </resin:if>
  77. <!--   为了安全, 你可以为SSL会话(SSL sessions)定义一个不同的cookie. -->
  78. <ssl-session-cookie>SSL_JSESSIONID</ssl-session-cookie>
  79. <!--  缓存启用 (专业版的功能)   -->
  80. <resin:if test="${isResinProfessional}">
  81. <cache path="cache" memory-size="64M">
  82. <!-- Vary header rewriting for IE -->
  83. <rewrite-vary-as-private/>
  84. </cache>
  85. </resin:if>
  86. <!-- 启用周期性的服务器状态检查和死锁检查,所有的服务器可以添加 <url> 来检查。  -->
  87. <resin:if test="${isResinProfessional}">
  88. <ping>
  89. <!-- <url>http://localhost:8080/test-ping.jsp</url> -->
  90. </ping>
  91. </resin:if>
  92. <!-- 包含web应用的默认行为  -->
  93. <resin:import path="${resin.home}/conf/app-default.xml"/>
  94. <!-- 每一个web应用的默认参数  -->
  95. <web-app-default>
  96. <!-- 扩展库的公共jar文件,扩展是安全的即使没有类装载器知道的jars,装载的类将为每个应用分别装载,也就是这些类都是不同的 -->
  97. <class-loader>
  98. <tree-loader path="${server.root}/ext-webapp"/>
  99. </class-loader>
  100. <!--  设置缓存页、静态也的延时值  -->
  101. <cache-mapping url-pattern="/" expires="5s"/>
  102. <cache-mapping url-pattern="*.gif" expires="60s"/>
  103. <cache-mapping url-pattern="*.jpg" expires="60s"/>
  104. <cache-mapping url-pattern="*.png" expires="60s"/>
  105. <!-- 启用EL表达式 -->
  106. <allow-servlet-el/>
  107. <!--   安全原因, 默认禁用了会话的URLs -->
  108. <session-config>
  109. <enable-url-rewriting>false</enable-url-rewriting>
  110. </session-config>
  111. <!-- 安全原因, 在cookies中设置HttpOnly标志 -->
  112. <cookie-http-only/>
  113. <!--一些JSP包有不正确的 .tld文件。可以把validate-taglib-schema设置成false,可能继续正常工作 Some JSP packages have incorrect .tld files.  It's possible to set validate-taglib-schema to false to work around these packages. -->
  114. <jsp>
  115. <validate-taglib-schema>true</validate-taglib-schema>
  116. <fast-jstl>true</fast-jstl>
  117. <fast-jsf>true</fast-jsf>
  118. </jsp>
  119. </web-app-default>
  120. <!-- 简单的数据池配置 -->
  121. The JDBC name is java:comp/env/jdbc/test
  122. <database>
  123. <jndi-name>jdbc/mysql</jndi-name>
  124. <driver type="org.gjt.mm.mysql.Driver">
  125. <url>jdbc:mysql://localhost:3306/test</url>
  126. <user></user>
  127. <password></password>
  128. </driver>
  129. <prepared-statement-cache-size>8</prepared-statement-cache-size>
  130. <max-connections>20</max-connections>
  131. <max-idle-time>30s</max-idle-time>
  132. </database>
  133. <!-- 定义所有虚拟主机的默认配置 -->
  134. <host-default>
  135. <!-- 如果和别的web服务器整合,这个可以被去掉,因为web服务器也可以记录这些信息。  -->
  136. <access-log path="logs/access.log" format='%h %l %u %t "%r" %s %b "%{Referer}i" "%{User-Agent}i"' rollover-period="1W"/>
  137. <!-- war 文件的布置目录  -->
  138. <web-app-deploy path="webapps"/>
  139. <!-- ear文件的布置目录 -->
  140. <ear-deploy path="deploy">
  141. <ear-default>
  142. <ejb-server>
  143. <config-directory>WEB-INF</config-directory>
  144. <data-source>jdbc/test</data-source>
  145. </ejb-server>
  146. </ear-default>
  147. </ear-deploy>
  148. <!-- rar文件的布置目录 -->
  149. <resource-deploy path="deploy"/>
  150. </host-default>
  151. <!-- 虚拟主机的布置目录 -->
  152. <host-deploy path="hosts">
  153. <host-default>
  154. <resin:import path="host.xml" optional="true"/>
  155. </host-default>
  156. </host-deploy>
  157. <!-- 默认的虚拟主机配置 -->
  158. <host id="" root-directory=".">
  159. <!-- 配置默认的应用 webapp's ROOT        -->
  160. <web-app id="/" root-directory="webapps/ROOT"/>
  161. <web-app id="/resin-admin" root-directory="${resin.home}/php/admin">
  162. <!--  管理应用程序 /resin-admin password is the md5 hash of the password。md5码的密码。 localhost is true to limit access to the localhost。localhost设置成true,这样只有localhost才能访问 -->
  163. <prologue>
  164. <resin:set var="resin_admin_user" value=""/>
  165. <resin:set var="resin_admin_password" value=""/>
  166. <resin:set var="resin_admin_external" value="false"/>
  167. </prologue>
  168. </web-app>
  169. </host>
  170. </cluster>
  171. <!--  Configuration for the web-tier/load-balancer  -->
  172. <resin:if test="${resin.isProfessional()}">
  173. <cluster id="web-tier">
  174. <server-default>
  175. <!-- The http port -->
  176. <http address="*" port="9080"/>
  177. </server-default>
  178. <server id="web-a" address="127.0.0.1" port="6700"/>
  179. <cache path="cache" memory-size="64M"/>
  180. <host id="">
  181. <web-app id="/">
  182. <rewrite-dispatch>
  183. <load-balance regexp="" cluster="app-tier"/>
  184. </rewrite-dispatch>
  185. </web-app>
  186. </host>
  187. </cluster>
  188. </resin:if>
  189. </resin>

resin配置介绍二

Resin是一个Servlet容器.使用Resin开发Java Web项目时,需要建立自己的WebApp。

Resin中的应用可以有2种方式发布:

  是在Resin的目录下发布;

  是打包成War发布

一、resin.conf配置文件说明[Resin3.1下的]

1.<http host='localhost' port='80'/>

   host参数指定的是服务器,port指定的是http端口,默认是localhost和8080。

2. <web-app>标签

   该标签表示一个web应用,标签中,id属性表示该应用的Web路径。

    如<web-app id='/test'>,表示该应用在Web上访问的时候应该用http://hostname/test/来访问。

    app-dir属性表示该应用的实际路径。如

    <app-dir>d:resindoctest</app-dir>表示该应用在d:resin doctest目录下面。默认值为根下面的和id同名的目录。

3.Resin可以配置3种error-page:

    404错误也就是文件找不到错误页;

    Exception违例页;

    不能连接java引擎页。

他们分别可以这样子设置:

 

    404文件找不到页

    <web-app id='/app1'>

     <error-page error-code='404' location='/file_not_found.jsp'/>

    </web-app>

 

    Exception 违例页

    <web-app id='/foo'>

     <error-page exception-type='java.lang.NullPointerException' location='/nullpointer.jsp'/>

    </web-app>

 

    不能连接到srun Servlet引擎错误页

 

    该页设置和应用无关,属于服务器的设置。

    <http-server>

     <error-page exception-type='connection' location='/missing_file.html'/>

    </http-server>

 

    参见下面的语句:

    <classpath id='WEB-INF/classes' source='WEB-INF/src' compile='true'/>

 

    id参数的值表示classpath中编译后的class的存放路径;

      source参数的值表示classpath中java源代码的存放路径;

      compile中的值可能是true或者false,表示是否由Resin的srun自动编译java源代码。

      Classpath的设置一般和javaBean或者Servlet的使用有关。

      id的值表示javaBean的编译好的包存放的根,

      source的值表示javaBean的java源代码存放的根。

      Servlet相同。

6.  Servlet的设置

      <servlet-mapping url-pattern='*.xtp' servlet-name='xtp'/>

    <servlet-mapping url-pattern='*.jsp' servlet-name='jsp'/>

    <servlet-mapping url-pattern='/servlet/*' servlet-name='invoker'/>

    一般就是指定那些需要通过srun的解析。比如在这里,把*.jsp改成*.jss,其他不变,那么只要在访问时遇到*.jss的文件就和原来遇到*.jsp一样处理。通过这个可以指定解析的引擎,

    如以下的配置:

    <servlet-mapping url-pattern='*.xtp' servlet-name='com.caucho.jsp.XtpServlet'/>

    在Servlet中,也可以指定servlet。如

    <servlet servlet-name='hello' servlet-class='test.HelloWorld'/>

    <servlet-mapping url-pattern='/hello.html' servlet-name='hello'/>

    在servlet-mapping中有个重要的参数case-sensitive 如果在windows上,最好配置成false,忽略大小写,从而和windows的约定一致。

7.  Session的配置

      <session-config>

    <session-max>4096</session-max>

    <session-timeout>30</session-timeout>

    <enable-cookies>true</enable-cookies>

    <enable-url-rewriting>true</enable-url-rewriting>

    <file-store>WEB-INF/sessions</file-store>

    </session-config>

 

    session-max :最大 session数量

    session-timeout :session过期时间,以分钟为单位。

     是否允许cookie :指session是否采用cookies。如果采用cookies,浏览器必须支持session才能使用,发布时建议改成false。enable- url-rewriting和enable-cookies一般配合使用。如果enable-cookies是false,

    enable-url-rewriting应该设成true比较合适。

     file-store :该配置指示服务器是否把session作为文件存放在服务器上。如果把该项注释掉,则在你的web-app目录下的WEB-Inf/sessions目录不保存序列化后的session对象。Session还有jdbc-store配置,对应着把session通过jdbc永久保存在数据库中。其实也就是会话变量的序列化后的保存和重新载入的物理实现。

resin3.1.6配置文件resin.conf如下:

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

<!-- 加载resin/lib下的所有.jar文件-->

<class-loader>

  <tree-loader path="${resin.home}/lib"/>

  <tree-loader path="${resin.root}/lib"/>

</class-loader>

<!-- - 管理配置 -->

<management path="${resin.root}/admin"></management>

<!-- -JDK日志接口的配置. 日志信息的级别:'info' 生产环境 'fine' 开发环境 'finer' 调试环境 -->

<log name="" level="fine" path="stdout:" timestamp="[%H:%M:%S.%s] "/>

<logger name="com.caucho" level="info"/>

<logger name="com.caucho.java" level="config"/>

<logger name="com.caucho.loader" level="config"/>

<!-- - 环境上下文的检测时间,对于生产站点, 这个要设置长一点,例如600秒,10分钟 -->

<dependency-check-interval>2s</dependency-check-interval>

<!-- - 发送邮件通知的SMTP服务器 -->

<system-property mail.smtp.host="127.0.0.1"/>

<system-property mail.smtp.port="25"/>

<!-- - 你可以把编译器改成 "javac", "eclipse" 或者 "internal". -->

<javac compiler="internal" args="-source 1.5"/>

<!-- Security providers.

- <security-provider>

- com.sun.net.ssl.internal.ssl.Provider

- </security-provider>

-->

<!-- 去掉注释,如果你使用resin提供的xml应用

- <system-property javax.xml.parsers.DocumentBuilderFactory

- ="com.caucho.xml.parsers.XmlDocumentBuilderFactory"/>

- <system-property javax.xml.parsers.SAXParserFactory

- ="com.caucho.xml.parsers.XmlSAXParserFactory"/>

-->

<cluster id="app-tier">

<!-- 设置集群上下文的根, 相对于server.root -->

<root-directory>.</root-directory>

<server-default>

<!-- HTTP服务的端口-->

<http address="*" port="8080"/>

<!--

- SSL端口配置:

-

- <http address="*" port="8443">

- <openssl>

- <certificate-file>keys/gryffindor.crt</certificate-file>

- <certificate-key-file>keys/gryffindor.key</certificate-key-file>

- <password>test123</password>

- </openssl>

- </http>

-->

<!-- - JVM参数设置 -->

<jvm-arg>-Xmx256m</jvm-arg>

<jvm-arg>-Xss1m</jvm-arg>

<jvm-arg>-Xdebug</jvm-arg>

<jvm-arg>-Dcom.sun.management.jmxremote</jvm-arg>

<!-- Uncomment to enable admin heap dumps 去掉这个如果你想管理内存堆的倾倒

- <jvm-arg>-agentlib:resin</jvm-arg>

-->

<watchdog-arg>-Dcom.sun.management.jmxremote</watchdog-arg>

<memory-free-min>1M</memory-free-min><!-- 强制resin重起时的最小空闲内存 -->

<thread-max>256</thread-max><!-- 最大线程数量. -->

<socket-timeout>65s</socket-timeout><!-- 套接字等待时间 -->

<keepalive-max>128</keepalive-max><!-- 配置 keepalive -->

<keepalive-timeout>15s</keepalive-timeout>

</server-default>

<!-- 定义群集服务器 -->

<server id="" address="127.0.0.1" port="6800"/>

<!-- Configures the persistent store for single-server or clustered 配置独立服务器或者群集的持久化存储,专业版的功能 -->

<resin:if test="${resin.isProfessional()}">

<persistent-store type="cluster">

<init path="session"/>

</persistent-store>

</resin:if>

<!-- 为了安全, 你可以为SSL会话(SSL sessions)定义一个不同的cookie.

- <ssl-session-cookie>SSL_JSESSIONID</ssl-session-cookie>

-->

<!-- 缓存启用 (专业版的功能) -->

<resin:if test="${isResinProfessional}">

<cache path="cache" memory-size="64M">

<!-- Vary header rewriting for IE -->

<rewrite-vary-as-private/>

</cache>

</resin:if>

<!-- 启用周期性的服务器状态检查和死锁检查,所有的服务器可以添加 <url> 来检查。 -->

<resin:if test="${isResinProfessional}">

<ping>

<!-- <url>http://localhost:8080/test-ping.jsp</url> -->

</ping>

</resin:if>

<!-- 包含web应用的默认行为 -->

<resin:import path="${resin.home}/conf/app-default.xml"/>

<!-- 每一个web应用的默认参数 -->

<<SPAN class=hilite1>web-app-default</SPAN>>

<!-- 扩展库的公共jar文件,扩展是安全的即使没有类装载器知道的jars,装载的类将为每个应用分别装载,也就是这些类都是不同的-->

<class-loader>

<tree-loader path="${server.root}/ext-webapp"/>

</class-loader>

<!-- 设置缓存页、静态也的延时值 -->

<cache-mapping url-pattern="/" expires="5s"/>

<cache-mapping url-pattern="*.gif" expires="60s"/>

<cache-mapping url-pattern="*.jpg" expires="60s"/>

<cache-mapping url-pattern="*.png" expires="60s"/>

<!-- 启用EL表达式 -->

<allow-servlet-el/>

<!-- 安全原因, 默认禁用了会话的URLs -->

<session-config>

<enable-url-rewriting>false</enable-url-rewriting>

</session-config>

<!-- 安全原因, 在cookies中设置HttpOnly标志

- <cookie-http-only/>

-->

<!--一些JSP包有不正确的 .tld文件。可以把validate-taglib-schema设置成false,可能继续正常工作

- Some JSP packages have incorrect .tld files. It's possible to set validate-taglib-schema to false to work around these

packages.

-->

<jsp>

<validate-taglib-schema>true</validate-taglib-schema>

<fast-jstl>true</fast-jstl>

<fast-jsf>true</fast-jsf>

</jsp>

</<SPAN class=hilite1>web-app-default</SPAN>>

<!-- 简单的数据池配置[The JDBC name is java:comp/env/jdbc/mysql]-->

<database>

<jndi-name>jdbc/mysql</jndi-name>

<driver type="org.gjt.mm.mysql.Driver">

<url>jdbc:mysql://localhost:3306/test</url>

<user></user>

<password></password>

</driver>

<prepared-statement-cache-size>8</prepared-statement-cache-size>

<max-connections>20</max-connections>

<max-idle-time>30s</max-idle-time>

</database>

<!-- 定义所有虚拟主机的默认配置 -->

<host-default>

<!-- 如果和别的web服务器整合,这个可以被去掉,因为web服务器也可以记录这些信息。 -->

<access-log path="logs/access.log" format='%h %l %u %t "%r" %s %b "%{Referer}i" "%{User-Agent}i"' rollover-period="1W"/>

<!-- war 文件的布置目录 -->

<web-app-deploy path="webapps"/>

<!-- ear文件的布置目录 -->

<ear-deploy path="deploy">

<ear-default>

<ejb-server>

<config-directory>WEB-INF</config-directory>

<data-source>jdbc/test</data-source>

</ejb-server>

</ear-default>

</ear-deploy>

<!-- rar文件的布置目录 -->

<resource-deploy path="deploy"/>

</host-default>

<!-- 虚拟主机的布置目录 -->

<host-deploy path="hosts">

<host-default>

<resin:import path="host.xml" optional="true"/>

</host-default>

</host-deploy>

<!-- 默认的虚拟主机配置 -->

<host id="" root-directory=".">

<!-- 配置默认的应用 webapp's ROOT -->

<web-app id="/" root-directory="webapps/ROOT"/>

<!-- 你的虚拟目录 -->

<web-app id="/justoneweb" root-directory="D:workjustonewebjavaweb"/>

<web-app id="/resin-admin" root-directory="${resin.home}/php/admin">

<!-- - 管理应用程序 /resin-admin

- password is the md5 hash of the password。md5码的密码。

- localhost is true to limit access to the localhost。localhost设置成true,这样只有localhost才能访问

-->

<prologue>

<resin:set var="resin_admin_user" value=""/>

<resin:set var="resin_admin_password" value=""/>

<resin:set var="resin_admin_external" value="false"/>

</prologue>

</web-app>

</host>

<host id="woke.tool.com" >

    <web-app id="/" root-directory="E:resin-3.1.6deployWokeTool1.0" />

  </host>

</cluster>

<!-- - Configuration for the web-tier/load-balancer -->

<resin:if test="${resin.isProfessional()}">

<cluster id="web-tier">

<server-default>

<!-- The http port -->

<http address="*" port="9080"/>

</server-default>

<server id="web-a" address="127.0.0.1" port="6700"/>

<cache path="cache" memory-size="64M"/>

<host id="">

<web-app id="/">

<rewrite-dispatch>

<load-balance regexp="" cluster="app-tier"/>

</rewrite-dispatch>

</web-app>

</host>

</cluster>

</resin:if>

</resin>

二、Resin 的 watchdog(看门狗)介绍

 

为了稳定和安全,Resin使用一个独立的watchdog进程来启动和监视Resin服务器。

watchdog连续你检测Resin服务器的状态,如果其没有反应或者迟钝,将会重启Resin服务器进程。

大多数情况下,watchdog从resin.xml中读取配置信息,而不需要其它的附加配置。

某些ISP服务商可能使用特别的配置,为了安全他们会配置watchdog来隔离JVM(Java虚拟主机)。

概述

因为watchdog作为一个服务运行,大多数情况下你根本不需要注意它。

标准的配置下,一个机器上的watchdog可以监视这个机器上所有JVM,因此大部分情况下你不需要修改watchdog的配置。

需要你管理watchdog的任务就是,如果机器发生了问题,停止watchdog,并检查 watchdog日志中Resin服务器的重启事件。

watchdog自动重启崩溃和退出的Resin服务。因此如果你想停止Resin,你需要告诉watchdog来停止Resin实例,或者完全停止watchdog。

使用resin.jar中的主程序(main)来控制watchdog,有用来启动、停止、重启Resin实例的命令,同样还有报告watchdog状态的命令。

大多数用户不需要特别的配置watchdog,但是ISP和大的站点可能创建特殊的watchdog.xml(包含<watchdog- manager>标签)来控制watchdog。

<watchdog-manager>允许ISP控制watchdog,为他们用户的 Resin实例指定附加的命令行参数,包括为他们的用户创建安全的chroot环境的能力。

典型地,watchdog以root帐号运行,然而用户实例使用他们各自的用户id。

命令行

  resin.jar中的主类ResinBoot的命令行用来控制watchdog。主要的操作包括:start、stop、restart、shutdown和status。

start

"start"命令使用给定的server id启动一个新的Resin实例。ResinBoot首先会尝试在当前机器上的watchdog,在需要时会启动一个新的watchdog。

 在resin.xml中定义的server id必须是惟一的。

例如: watchdog启动

resin-3.2.x> java -jar lib/resin.jar -conf conf/test.conf -server a start

Resin/3.2.x started -server 'a' for watchdog at 127.0.0.1:6700

stop

"stop"命令使用给定的server id停止Resin实例。如果停止的实例是watchdog管理的最后一个Resin实例,watchdog也会自动退出。

如果没有指定 -server 参数,watchdog使用默认的 -server "" 。

例子: watchdog停止

resin-3.2.x> java -jar lib/resin.jar stop

Resin/3.2.x started -server '' for watchdog at 127.0.0.1:6600

status

"status"命令统计被watchdog服务管理的Resin实例的状态。

例子: watchdog状态

resin-3.2.x> java -jar lib/resin.jar status

Resin/3.2.x status for watchdog at 127.0.0.1:6600

server '' : active

  password: missing

  user: ferg

  root: /home/test/resin/

  conf: /etc/resin/resin.xml

单一Resin实例

  这个例子显示了一个单一服务器站点,其监听标准的HTTP端口80,并以resin这个用户身份运行。在这个例子中watchdog是以root用户身份运行的,

因此其能够绑定到特殊的端口80上,但是Resin实例是以resin身份运行的。

因为使用了默认的配置,watchdog监听6600端口来获取命令。

例子: /etc/resin/resin.xml

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

<cluster id="">

<server id="app-a" address="127.0.0.1">

    <user-name>resin</user-name>

    <group-name>resin</group-name>

<http port="80" />

  </server>

<resin:import path="${resin.home}/conf/app-default.xml" />

<host id="">

    <web-app id="" path="/var/www/htdocs" />

  </host>

</cluster>

</resin>

在一个机器上使用共享的watchdog实现负载平衡

  当在一个机器上运行多个Resin实例的时候,一个watchdog-manager就能管理所有的Resin实例。

指定server id用来决定那个Resin实例是start或者stop。

在这个例子中,有一个web-tier服务器做为负载平衡器,两个app-tier服务器处理后台数据,它们都在一个机器上。

为了维护和升级方便,一个站点可能需要多个app-rier服务器。当一个停机的时候,第二个服务器可以继续服务。

这个例子使用默认的watchdog配置,其读取的是标准的resin.xml文件。

watchdog进程和ResinBoot都读取resin.xml 配置文件,因此不需要特别的watchdog配置。

watchdog能够自动发现运行在这个机器上的多个Resin实例并管理它们。

例子: /etc/resin/resin.xml

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

<cluster id="app-tier">

<server-default>

    <user-name>resin</user-name>

    <group-name>resin</group-name>

  </server-default>

<server id="app-a" address="192.168.1.10" port="6810" />

  <server id="app-b" address="192.168.1.10" port="6811" />

<host id="">

    <web-app id="" path="/var/www/htdocs" />

  </host>

</cluster>

<cluster id="web-tier">

<server-default>

    <user-name>resin</user-name>

    <group-name>resin</group-name>

  </server-default>

<server id="web-a" address="192.168.1.10" port="6800">

    <http port="80" />

  </server>

<host id="">

    <web-app id="">

      <rewrite-redirect>

        <load-balance regexp="" cluster="app-tier" />

      </rewrite-redirect>

    </web-app>

  </host>

</cluster>

</resin>

同一机器使用不同的watchdog来实现负载平衡

在某些情况下,最好让每个Resin实例有其自己的watchdog,例如当多个用户在使用相同的机器。每个<server>块配置一个<watchdog-port>。

因为watchdog将读取resin.xml使用<server>块匹配命令行参数中的 -server id,每个watchdog将启动期自己的端口。

例子: /etc/resin/resin.xml

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

<cluster id="app-tier">

<server-default>

    <user-name>resin</user-name>

    <group-name>resin</group-name>

  </server-default>

<server id="app-a" address="192.168.1.10" port="6810">

    <watchdog-port>6700</watchdog-port>

<http port="8080" />

  </server>

<server id="app-b" address="192.168.1.10" port="6811">

    <watchdog-port>6701</watchdog-port>

<http port="8081" />

  </server>

<host id="">

    <web-app id="" path="/var/www/htdocs" />

  </host>

</cluster>

</resin>

  在上面的例子中,启动Resin, 使用 -server app-a参数将启动一个在端口6700上的watchdog,使用 -server app-b参数将启动一个在端口6701上的watchdog。

例子: starting app-b with watchdog-port=6701

resin-3.2.x> java -jar lib/resin.jar -server app-b start

ISP watchdog管理

  在ISP的环境中,你可能需要为watchdog使用一个隔离的配置文件,它为不同的用户启动Resin实例。在这个情况下,你要确保watchdog.xml不能被这些普通用户读取,要创建一个管理用户来读取这个文件。

●启动和重启用户的Resin JVM

●设置JVM参数和Java可执行性

●设置Resin实例的root-directory

●setuid user-name 和 group-name

●设置resin.xml配置

●打开受保护的端口,例如80

●可选的chroot设置

watchdog将使用给定的帐号作为setuid来启动Resin实例。它也能打开任何需要的保护端口,例如80。

例子: /etc/resin/watchdog.xml

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

<management>

  <user name="harry" password="MD5HASH==" />

</management>

<watchdog-manager>

<watchdog-default>

    <jvm-arg>-Xmx256m</jvm-arg>

  </watchdog-default>

<watchdog id="user_1">

    <user-name>user_1</user-name>

    <group-name>group_1</group-name>

<resin-xml>/home/user_1/conf/resin.xml</resin-conf>

    <resin-root>/home/user_1/www</resin-root>

<open-port address="192.168.1.10" port="80" />

  </watchdog>

...

<watchdog id="user_n">

    <user-name>user_n</user-name>

    <group-name>group_n</group-name>

<resin-conf>/home/user_n/conf/resin.xml</resin-conf>

    <resin-root>/home/user_n/www</resin-root>

<open-port address="192.168.1.240" port="80" />

  </watchdog>

</watchdog-manager>

</resin>

Resin介绍及其使用配置的更多相关文章

  1. 网卡配置和DNS配置,手动挂在nas存储的共享目录,网络相关其它操作命令,修改防火墙中的端口配置,resolv.conf配置详细介绍和网卡信息配置详细介绍

    1.   网卡配置和DNS配置 若想服务器能够发邮件,需要让部署的服务器能够访问到外网环境.若部署的服务器访问不到外网,通过ping www.baidu.com的方式执行的时候,会出现以下问题: &q ...

  2. (热死你)Resin https ssl Linux 配置,实战可用

    (热死你)Resin https ssl Linux 配置,实战可用 一.配置resin 1.在resin服务器中创建目录keys文件和openssl.conf,格式内容如下: #先复制以下的内容: ...

  3. jfreechart 在jsp页面显示所画的图片(resin服务器的servelet配置是关键)(图片只过内存)

    用的web服务器是resin服务器,在配置web.xml时需要注意,其实resin服务器的web.xml服务器配置和tomcat服务器的配置很像, 1. 我第一次按照自己的想法,想当然的在resin- ...

  4. kudu介绍及安装配置

    kudu介绍及安装配置 介绍 Kudu 是一个针对 Apache Hadoop 平台而开发的列式存储管理器.Kudu 共享 Hadoop 生态系统应用的常见技术特性: 它在 commodity har ...

  5. (总结)Nginx与Apache、Tomcat、Resin动静分离核心配置

    PS:近来有几个刚使用nginx的新童鞋老问我,nginx+fastcgi不够稳定,偶尔出现502错误,怎么解决?本人使用nginx也有3年多了,也认为php-fpm模块不够稳定,在访问量不大的时候没 ...

  6. 【转载】salesforce 零基础开发入门学习(一)Salesforce功能介绍,IDE配置以及资源下载

    salesforce 零基础开发入门学习(一)Salesforce功能介绍,IDE配置以及资源下载   目前国内已经有很多公司做salesforce,但是国内相关的资料确是少之又少.上个月末跳槽去了新 ...

  7. MySQL介绍及安装环境配置

    MySQL介绍及安装环境配置 MySQL是一种关系数据库管理系统,是一种开源软件.由瑞典MySQL AB公司开发,2008年1月16号被Sun公司收购.2009年,SUN又被Oracle收购.MySQ ...

  8. squid介绍及其简单配置

    squid的简单介绍 squid的概念 squid是一种用来缓存Internet数据的软件.接受来自人们需要下载的目标(object)的请求并适当的处理这些请求.也就是说,如果一个人想下载一web界面 ...

  9. PHP入门介绍与环境配置

    浏览目录: 一.PHP的背景和优势: 二.PHP原理简介: 三.PHP运行环境配置: 四.编写简单的PHP代码以及测试. 一.PHP的背景和优势 1.1   什么是PHP? PHP是能让你生成动态网页 ...

随机推荐

  1. 11. react 基础 使用charles 模拟接口数据

    charles参考文档 charles官网 模拟数据 模拟 axios 请求的数据 eg: 1. 编写 axios 请求 axios.get('/api/xxx') .then(()=>{ale ...

  2. SQL Server 2017 安装问题

    遇到问题 Polybase 要求安装 Oracle JRE7 更新 规则失败 安装完毕之后,登录提示:您试图连接的 SQL Server 实例未安装 安装完SQL Server 2017 后,无法启动 ...

  3. Centos下nginx安装

    安装很简单,这里记录只是为了记下下载地址: A.[root@localhost soft]# wget http://nginx.org/download/nginx-1.4.2.tar.gz B.[ ...

  4. rewrite例子集合

    在 httpd 中将一个域名转发到另一个域名 虚拟主机世界近期更换了域名,新域名为 www.wbhw.com, 更加简短好记.这时需要将原来的域名 webhosting-world.com, 以及论坛 ...

  5. winform显示、隐藏任务栏及开始菜单

    private const int SW_HIDE = 0; //隐藏 private const int SW_RESTORE = 9;//显示 /// <summary> /// 获取 ...

  6. SQL基础教程(第2版)第4章 数据更新:4-2 数据的删除(DELETE)

    第4章 数据更新:4-2 数据的删除(DELETE) ● 如果想将整个表全部删除,可以使用DROP TABLE语句,如果只想删除表中全部数据,需使用DELETE语句.● 如果想删除部分数据行,只需在W ...

  7. (函数)P1217 [USACO1.5]回文质数 Prime Palindromes

    题解: 第一次: 算法复杂度过高,导致编译超时,需要优化 #include<stdio.h>#include<math.h>int a[100000001] = { 0 };i ...

  8. 运行roscore出现unable to contact my own server无法启动小海龟的部分故障问题解决

    运行roscore后,出现下图这种情况(unable to contact my own server) 原因是找不到http://后面那些,ping不到域名或IP. 参考http://www.ros ...

  9. JavaScript—瀑布流

    现在网页中需要翻页的列表,好多都已经改为瀑布流了.所以这个思路还是特别重要的 HTML Css 页面 因为每个图片的高度不一样所以她的 top 和left 我们待会通过JS计算 动态生成 js部分 思 ...

  10. linux-线程同步之信号量

    1.任务:用户从终端输入任意字符然后统计字符个数显示,输入end则结束 2.使用多线程实现:主线程获取用户输入并判断是否退出,子线程计数 #include <stdio.h> #inclu ...