resin4 + JDK7环境部署记录

1. 安装jdk7与resin4

jdk7安装方式与6相同,解压并配置环境变量即可。

resin4与resin3略有区别,解压之后需要编译安装。

./configure --prefix=/opt/hermes/resin-4.0.40 --with-java-home=/opt/hermes/jdk1.7.0_67/ --enable-64bit

make

makeinstall

编译安装可避免出现以下错误:

Unable to find native library 'resin_os' for com.caucho.loader.ClassEntry. Resin expects to find this library in:


环境变量配置如下:


2. 简单配置resin

resin.xml配置如下,裁剪了冗余的原配置:

 
 
 
 

 
 

<!--
   - Resin 4.0 configuration file.
  -->
<resin xmlns="http://caucho.com/ns/resin"
       xmlns:resin="urn:java:com.caucho.resin">

  <!-- property-based Resin configuration -->
  <resin:properties path="${__DIR__}/resin.properties" optional="true"/>
  <resin:properties path="cloud:/resin.properties"
                    optional="true" recover="true"/>


  <resin:if test="${properties_import_url}">
     <resin:properties path="${properties_import_url}"
                    optional="true" recover="true"/>
  </resin:if>

   
  <log-handler name="" level="all" path="log/wapmail_handler.log" timestamp="[%y-%m-%d %H:%M:%S.%s]" rollover-period="1D"/>

  <stdout-log path="log/stdout.log" rollover-period="1D" timestamp="[%H:%M:%S.%s] "/>
   <!-- resin4的原始日志没有区分stdout和stderr 需要我们自己补充配置-->
   <!--  rollover-period="1D" 表示1天汇总一个日志文件 也可配置为1H-->    
  <stderr-log path="log/stderr.log" rollover-period="1D" timestamp="[%H:%M:%S.%s] "/>

  <logger name="" level="${log_level?:'info'}"/>
  <logger name="com.caucho.java" level="config"/>
  <logger name="com.caucho.loader" level="config"/>
  
  <resin:import path="${__DIR__}/cluster-default.xml"/>

  <cluster-system-key>${cluster_system_key}</cluster-system-key>

  <dependency-check-interval>${dependency_check_interval?:'2s'}</dependency-check-interval>

  <home-cluster>${home_cluster}</home-cluster>
  <home-server>${home_server}</home-server>
  <elastic-server>${elastic_server}</elastic-server>
  <elastic-dns>${elastic_dns}</elastic-dns>

  <pre name="code" class="html"><!-- 服务配置 -->
     <cluster id="app">
        <!-- JVM参数 -->
        <server-default>
           <!-- 服务器模式 -->
           <jvm-arg>-server</jvm-arg> 
           <!-- JMX监控配置 -->
           <jvm-arg>-Djava.rmi.server.hostname=10.64.78.78</jvm-arg> 
           <jvm-arg>-Dcom.sun.management.jmxremote.port=50000</jvm-arg> 
           <jvm-arg>-Dcom.sun.management.jmxremote.ssl=false</jvm-arg> 
           <jvm-arg>-Dcom.sun.management.jmxremote.authenticate=true</jvm-arg> 
           <jvm-arg>-Dcom.sun.management.jmxremote.password.file=${resin.root}/conf/jmxremote.password</jvm-arg> 
           <jvm-arg>-Dcom.sun.management.jmxremote.access.file=${resin.root}/conf/jmxremote.access</jvm-arg>
           <!-- JXM监控配置end -->
           <!-- 性能参数 -->
           <jvm-arg>-XX:+UnlockExperimentalVMOptions</jvm-arg>
           <jvm-arg>-XX:+UseG1GC</jvm-arg> 
           <jvm-arg>-XX:MaxGCPauseMillis=50</jvm-arg> 
           <jvm-arg>-XX:GCPauseIntervalMillis=200</jvm-arg> 
           <jvm-arg>-XX:SurvivorRatio=6</jvm-arg> 
           <jvm-arg>-Xmx2048m</jvm-arg> 
           <jvm-arg>-Xms2048m</jvm-arg> 
           <jvm-arg>-Xss1m</jvm-arg> 
           <jvm-arg>-XX:MaxPermSize=512m</jvm-arg> 
           <jvm-arg>-Xloggc:${resin.root}/log/jdk_gc.log</jvm-arg>
           <!-- 性能参数 end -->
        </server-default> 
        <!--此cluster监控端口号位6800 -->
        <server-multi id-prefix="app-" address-list="${app_servers}" port="6800"/>
          <!-- 配置服务 --> 
          <host id="wapmail3.XXX.cn" root-directory="."> 

            <!-- access log 配置 --> 
            <access-log path-format='log/access.log.%Y%m%d%H'>
              <rollover-period>1h</rollover-period>
            </access-log> 
            <web-app id="/" root-directory="webapps/ROOT">
              <!-- / 根目录下放着全局404页面 --> 
              <error-page error-code="404" location="/404.html"/>
              <form-parameter-max>${form_parameter_max?:100}</form-parameter-max> 
            </web-app>
            <web-app id="/wap2" root-directory="webapps/wap2"> <!-- 应用 -->
               <form-parameter-max>${form_parameter_max?:100}</form-parameter-max> 
               <!--form-parameter-max  用来限制每次post submit的参数个数,避免hash collision dos -->
            </web-app> 
          </host> 
   </cluster>

</resin>

修改 resin.properties

web_admin_enable : false #生产机不需要web管理界面

session_store : false (每个服务器是一个集群,不需要考虑session 持久化)

resin_doc : false #生产机不需要resin doc

dev_mode:false #生产机开发者模式

在resin.properties添加:

 form_parameter_max:100 #hash dos protection

修改cluster-default.xml

注释:

<!--

      <port-default>

        <port-thread-max>${port_thread_max}</port-thread-max>

        <accept-thread-min>${accept_thread_min}</accept-thread-min>

        <accept-thread-max>${accept_thread_max}</accept-thread-max>

 

        <tcp-cork>${tcp_cork}</tcp-cork>

      </port-default>

-->

port_thread_max:  每个端口最多可以有的活跃线程数,避免系统负载压力过大。这些参数目前不需要。

以上参考:http://www.linuxidc.com/Linux/2012-04/58192.htm


3.配置多个独立端口的应用

resin4支持配置多个独立端口的应用。在resin.xml中一个cluster就代表一个端口应用,每个应用占用一个HTTP端口以及一个Server监控端口,可以独立启动停止。

假设有两个应用,我们事先分配好端口分别是:
Web1:8081(http),6801(监控)
Web2:8082(http),6802(监控)
下面是详细的配置:

[html] view plaincopy
  1. <resin xmlns=http://caucho.com/ns/resin  
  2.        xmlns:resin=http://caucho.com/ns/resin/core>  
  3.   <log name="" level="info" path="stdout:"/>  
  4.   <cluster id="web1">  
  5.     <server-default>  
  6.       <jvm-arg>-Xmx1024m</jvm-arg>  
  7.       <jvm-arg>-Xss1m</jvm-arg>  
  8.       <jvm-arg>-server</jvm-arg>  
  9.     </server-default>     
  10.     <resin:import path="${resin.home}/conf/app-default.xml"/>  
  11.     <server id="web1" port="6801">  
  12.       <http id="" port="8081"/>  
  13.     </server>  
  14.     <host id="" root-directory=".">  
  15.       <web-app id="/" root-directory="D:/WORKDIR/web1" redeploy-mode="manual"/>  
  16.     </host>  
  17.   </cluster>  
  18.    
  19.   <cluster id="web2">  
  20.     <server-default>  
  21.       <jvm-arg>-Xmx1024m</jvm-arg>  
  22.       <jvm-arg>-Xss1m</jvm-arg>  
  23.       <jvm-arg>-server</jvm-arg>  
  24.     </server-default>     
  25.     <resin:import path="${resin.home}/conf/app-default.xml"/>  
  26.     <server id="web2" port="6802">  
  27.       <http id="" port="8082"/>  
  28.     </server>  
  29.     <host id="" root-directory=".">  
  30.       <web-app id="/" root-directory="D:/WORKDIR/web2/webapp" redeploy-mode="manual"/>  
  31.     </host>  
  32.   </cluster>  
  33. </resin> 

上面的配置中,我们为每个应用分配一个唯一的 server id,分别是 web1 和 web2
要启动这两个应用,命令是
./resin.sh start -server web1
./resin.sh start -server web2
停止以及重启应用的方式也是一样。



4. 配置jmx远程监控

jmxremote.access和jmxremote.password文件可以在JDK的jre\lib\management目录下找到。copy到{resin_home}/conf/下。
jmxremote.access包含了登录用户的权限控制信息,jmxremote.password包含了用户名和登录密码信息,配置非常简单。

jmxremote.password文件需要进行文件系统的访问权限设置,设置为只有owner可读,否则会抛出错误信息:
错误: 必须限制口令文件读取访问: XXX
解决办法是修改jmx权限文件的访问权限:chmod 644 jmxremote.access jmxremote.password


完成一系列的配置之后,可以在jconsole或visualVM中远程监控服务的运行。在环境刚搭建时,启用监控可了解应用在新环境的运行状况。

resin4 + JDK7环境部署记录_第1张图片

你可能感兴趣的:(resin4 + JDK7环境部署记录)