Resin介绍及其使用配置
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 了
- <!-- Resin 3.1 配置文件. -->
- <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日志接口的配置. -->
- <log name="" path="stdout:" timestamp="[%H:%M:%S.%s] "/>
- <!-- 日志信息的级别:'info' 生产环境 'fine' 开发环境 'finer' 调试环境 -->
- <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>
- <!-- 强制resin强制重起时的最小空闲内存 -->
- <memory-free-min>1M</memory-free-min>
- <!-- 最大线程数量. -->
- <thread-max>256</thread-max>
- <!-- 套接字等待时间 -->
- <socket-timeout>65s</socket-timeout>
- <!-- 配置 keepalive -->
- <keepalive-max>128</keepalive-max>
- <keepalive-timeout>15s</keepalive-timeout>
- <!-- 如果使用的是UNIX,这里是启动的帐号和用户组. -->
- <user-name>resin</user-name>
- <group-name>resin</group-name>
- </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应用的默认参数 -->
- <web-app-default>
- <!-- 扩展库的公共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>
- </web-app-default>
- <!-- 简单的数据池配置 -->
- The JDBC name is java:comp/env/jdbc/test
- <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="/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>
- </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配置介绍二
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介绍及其使用配置的更多相关文章
- 网卡配置和DNS配置,手动挂在nas存储的共享目录,网络相关其它操作命令,修改防火墙中的端口配置,resolv.conf配置详细介绍和网卡信息配置详细介绍
1. 网卡配置和DNS配置 若想服务器能够发邮件,需要让部署的服务器能够访问到外网环境.若部署的服务器访问不到外网,通过ping www.baidu.com的方式执行的时候,会出现以下问题: &q ...
- (热死你)Resin https ssl Linux 配置,实战可用
(热死你)Resin https ssl Linux 配置,实战可用 一.配置resin 1.在resin服务器中创建目录keys文件和openssl.conf,格式内容如下: #先复制以下的内容: ...
- jfreechart 在jsp页面显示所画的图片(resin服务器的servelet配置是关键)(图片只过内存)
用的web服务器是resin服务器,在配置web.xml时需要注意,其实resin服务器的web.xml服务器配置和tomcat服务器的配置很像, 1. 我第一次按照自己的想法,想当然的在resin- ...
- kudu介绍及安装配置
kudu介绍及安装配置 介绍 Kudu 是一个针对 Apache Hadoop 平台而开发的列式存储管理器.Kudu 共享 Hadoop 生态系统应用的常见技术特性: 它在 commodity har ...
- (总结)Nginx与Apache、Tomcat、Resin动静分离核心配置
PS:近来有几个刚使用nginx的新童鞋老问我,nginx+fastcgi不够稳定,偶尔出现502错误,怎么解决?本人使用nginx也有3年多了,也认为php-fpm模块不够稳定,在访问量不大的时候没 ...
- 【转载】salesforce 零基础开发入门学习(一)Salesforce功能介绍,IDE配置以及资源下载
salesforce 零基础开发入门学习(一)Salesforce功能介绍,IDE配置以及资源下载 目前国内已经有很多公司做salesforce,但是国内相关的资料确是少之又少.上个月末跳槽去了新 ...
- MySQL介绍及安装环境配置
MySQL介绍及安装环境配置 MySQL是一种关系数据库管理系统,是一种开源软件.由瑞典MySQL AB公司开发,2008年1月16号被Sun公司收购.2009年,SUN又被Oracle收购.MySQ ...
- squid介绍及其简单配置
squid的简单介绍 squid的概念 squid是一种用来缓存Internet数据的软件.接受来自人们需要下载的目标(object)的请求并适当的处理这些请求.也就是说,如果一个人想下载一web界面 ...
- PHP入门介绍与环境配置
浏览目录: 一.PHP的背景和优势: 二.PHP原理简介: 三.PHP运行环境配置: 四.编写简单的PHP代码以及测试. 一.PHP的背景和优势 1.1 什么是PHP? PHP是能让你生成动态网页 ...
随机推荐
- 11. react 基础 使用charles 模拟接口数据
charles参考文档 charles官网 模拟数据 模拟 axios 请求的数据 eg: 1. 编写 axios 请求 axios.get('/api/xxx') .then(()=>{ale ...
- SQL Server 2017 安装问题
遇到问题 Polybase 要求安装 Oracle JRE7 更新 规则失败 安装完毕之后,登录提示:您试图连接的 SQL Server 实例未安装 安装完SQL Server 2017 后,无法启动 ...
- Centos下nginx安装
安装很简单,这里记录只是为了记下下载地址: A.[root@localhost soft]# wget http://nginx.org/download/nginx-1.4.2.tar.gz B.[ ...
- rewrite例子集合
在 httpd 中将一个域名转发到另一个域名 虚拟主机世界近期更换了域名,新域名为 www.wbhw.com, 更加简短好记.这时需要将原来的域名 webhosting-world.com, 以及论坛 ...
- winform显示、隐藏任务栏及开始菜单
private const int SW_HIDE = 0; //隐藏 private const int SW_RESTORE = 9;//显示 /// <summary> /// 获取 ...
- SQL基础教程(第2版)第4章 数据更新:4-2 数据的删除(DELETE)
第4章 数据更新:4-2 数据的删除(DELETE) ● 如果想将整个表全部删除,可以使用DROP TABLE语句,如果只想删除表中全部数据,需使用DELETE语句.● 如果想删除部分数据行,只需在W ...
- (函数)P1217 [USACO1.5]回文质数 Prime Palindromes
题解: 第一次: 算法复杂度过高,导致编译超时,需要优化 #include<stdio.h>#include<math.h>int a[100000001] = { 0 };i ...
- 运行roscore出现unable to contact my own server无法启动小海龟的部分故障问题解决
运行roscore后,出现下图这种情况(unable to contact my own server) 原因是找不到http://后面那些,ping不到域名或IP. 参考http://www.ros ...
- JavaScript—瀑布流
现在网页中需要翻页的列表,好多都已经改为瀑布流了.所以这个思路还是特别重要的 HTML Css 页面 因为每个图片的高度不一样所以她的 top 和left 我们待会通过JS计算 动态生成 js部分 思 ...
- linux-线程同步之信号量
1.任务:用户从终端输入任意字符然后统计字符个数显示,输入end则结束 2.使用多线程实现:主线程获取用户输入并判断是否退出,子线程计数 #include <stdio.h> #inclu ...