Resin4.0+ 单个服务配置多个实例

从项目开始选择Resin作为线上服务器开始,一直表现不俗,通常我们单个Resin启动一个Server即可,但是碰到在这个服务器上还需要同时启动另外几个Server的时候,该怎办呢? 有人会说,可以像Tomcat一样多copy几个Tomcat,每个Tomcat配置一个Server不就OK了么!!!好吧! 好像也没什么错哈!不过Resin可以不再copy几个在单个配置了,它支持一个Resin同时配置多个实例的,是不是听起来很爽~~

先简要介绍下Resin启动服务之后,一般会存在这几个端口: 1、 WatchDog(监听狗 哈哈)端口, 默认:6600 2、Server监听端口,默认:6800 3、应用的Http端口(可自定义),默认:8080 说明:单个Resin不管同时配置几个应用,每次启动Resin之后,只会启动一个WatchDog监听,kill掉WatchDog后,所有的实例都会停止,WatchDog运行中,kill掉某个实例后,该实例会自动重启。

环境准备及说明: 1、使用版本Resin 4.0.45(当前最新版已经到4.0.48) 下载地址:http://caucho.com/products/resin/download 2、我们要实现的效果是 访问 http://127.0.0.1:8080/ 对应的是Web应用1 访问 http://127.0.0.1:8090/ 对应的是Web应用2 3、由于Resin中每个应用需要占用一个Http端口和一个Server端口,所以我们先分配对应的端口 web1:8080,6801 web2:8090,6802 4、Resin详细配置文件

<cluster id="web1">  
    <root-directory>.</root-directory>  
    <server-default>  
      <!-- The http port -->  
      <http address="*" port="8080"/>  
    </server-default>  
    <!-- define the servers in the cluster -->  
    <server id="web1" address="127.0.0.1" port="6801">  
    </server>  

    <!-- the default host, matching any host name -->  
    <host id="" root-directory=".">  
      <web-app id="/" root-directory="/data/www/src/web1">
        <stderr-log path='/data/www/logs/web1/stderr.log' timestamp='[%Y-%m-%d %H:%M:%S] ' rollover-period='1D'/>  
        <stdout-log path='/data/www/logs/web1/stdout.log' timestamp='[%Y-%m-%d %H:%M:%S] ' rollover-period='1D'/>
      </web-app>
    </host>  
  </cluster>  

  <cluster id="web2">  
    <root-directory>.</root-directory>  
    <server-default>  
      <!-- The http port -->  
      <http address="*" port="8090"/>  
    </server-default>  
    <!-- define the servers in the cluster -->  
    <server id="web2" address="127.0.0.1" port="6802">  
    </server>  
    <!-- the default host, matching any host name -->  
    <host id="" root-directory="."> 
       <web-app id="/" root-directory="/data/www/src/web2" >
        <stderr-log path='/data/www/logs/web2/stderr.log' timestamp='[%Y-%m-%d %H:%M:%S] ' rollover-period='1D'/>  
        <stdout-log path='/data/www/logs/web2/stdout.log' timestamp='[%Y-%m-%d %H:%M:%S] ' rollover-period='1D'/>
      </web-app>
    </host>  
  </cluster>  

配置完成之后,启动Resin。 1、如果已经配置Resin到服务里面去了,可以直接使用: service resin start service resin stop service resin restart 命令来启动Resin,启动成功后,可以看到两个实例都启动啦! 2、如果未配置到服务里面去,则可以通过Resin安装目录的bin目录启动: resin.sh start -server web1 resin.sh start -server web2 resin.sh stop-server web1 resin.sh stop -server web2

注意: 1、我这里配置文件里面的这个配置

<stderr-log path='/data/www/logs/web1/stderr.log' timestamp='[%Y-%m-%d %H:%M:%S] ' rollover-period='1D'/>  
<stdout-log path='/data/www/logs/web1/stdout.log' timestamp='[%Y-%m-%d %H:%M:%S] ' rollover-period='1D'/>

是为了让Resin把应用的错误日志和输出日志每天自动生成到指定目录下边去,方便根据日志排查错误,也可以不配置,不配置的话,Resin会将日志默认每天输出到其安装目录的log目录下。 2、Resin也可以指定work目录以及temp目录

 <web-app id="/" root-directory="/data/www/src/web1/">
        <work-dir>/data/www/src/web1/WEB-INF/work</work-dir>  
        <temp-dir>/data/www/src/web1/WEB-INF/temp</temp-dir>
</web-app>

注意:Resin启动应用时,跟Tomcat一样会将jsp编译成可执行文件,保存到应用的WEB-INF/work目录下,tem是临时文件夹,也是在应用的WEB-INF/temp目录下,这里可以修改指向到其他的地方。 2、Resin也可以像Tomcat配置一样,指定某个目录地址作为文件服务器地址,例如:http://127.0.0.1:8080/image/1.jpg

<host id="" root-directory=".">  
      <web-app id="/image" root-directory="/data/file/image"/>
      <web-app id="/doc" root-directory="/data/file/doc"/>
</host>  

我们将图片放在/data/file/image/目录下就可以通过地址访问啦!

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏我的小碗汤

这个404你能解决吗?

去看webapps里工程目录下,index.html文件是有的,见鬼了,是哪儿出了问题?

963
来自专栏散尽浮华

Nginx 负载均衡的Cache缓存批量清理的操作记录

1)nginx.conf配置 [root@inner-lb01 ~]# cat /data/nginx/conf/nginx.conf user www; w...

5815
来自专栏生信技能树

使用pip安装python包的时候会多次安装依赖包

1472
来自专栏乐百川的学习频道

安装持续集成工具Jenkins

Jenkins是一个流行的持续集成框架,可以在我们提交项目的时候自动测试、运行和部署项目。虽然Jenkins使用Java编写,但是由于Jenkins支持多种语言...

3766
来自专栏码农笔录

ubuntu、deepin 程序启动菜单创建

1405
来自专栏维C果糖

IntelliJ IDEA 中的 Maven 项目初体验及搭建 Spring MVC 框架

在「详述 IntelliJ IDEA 创建 Maven 项目及设置 java 源目录的方法」一文中,我们已经将 IntelliJ IDEA 中的 Maven 项...

49611
来自专栏SpringBoot

spingboot 打包jar

https://cloud.tencent.com/developer/support-plan?invite_code=jykf9t9jq2zu

752
来自专栏Java开发

Spring MyBatis多数据源分包

创建基本的entity service dao 不同的数据源创建不同的包 我这里为了分辨 一个用的是Mysql 一个是Oracle 方便测试,

961
来自专栏世界第一语言是java

ubuntu、deepin 程序启动菜单创建

1654
来自专栏程序猿DD

Spring Cloud构建微服务架构:消息驱动的微服务(消费组)【Dalston版】

通过之前的《消息驱动的微服务(入门)》一文,相信很多朋友已经对Spring Cloud Stream有了一个初步的认识。但是,对于《消息驱动的微服务(核心概念)...

3745

扫码关注云+社区