Resin 在同一台机器不同端口启动两个应用

红薯 发布于 2009/08/05 16:07
阅读 3K+
收藏 3

Resin 运行起来后,一般有这么几个端口

1. WatchDog 的端口,默认6600
2. Server 监控端口,默认6800
3. 应用的HTTP端口,默认8080

不管有多少个应用,Resin只会启动一个WatchDog 实例。

本文所说的并不是通过不同的url前缀来配置不同的应用,我们希望具有如下效果

访问 http://localhost:8081/ 对应的是Web应用1
访问 http://localhost:8082/ 对应的是Web应用2

或者可能是同一个应用,但是两个或者多个端口都可以访问,这在应用的集群中是非常有用的。

首先Resin中每个应用会占用一个HTTP端口以及一个Server监控端口,假设有两个应用,我们事先分配好端口分别是:

Web1:8081,6801
Web2:8082,6802

下面是详细的配置:

<resin xmlns="http://caucho.com/ns/resin"
       xmlns:resin="http://caucho.com/ns/resin/core">
  <log name="" level="info" path="stdout:"/>
  <cluster id="web1">
    <server-default>
      <jvm-arg>-Xmx1024m</jvm-arg>
      <jvm-arg>-Xss1m</jvm-arg>
      <jvm-arg>-server</jvm-arg>
    </server-default>   
    <resin:import path="${resin.home}/conf/app-default.xml"/>
    <server id="web1" port="6801">
      <http id="" port="8081"/>
    </server>
    <host id="" root-directory=".">
      <web-app id="/" root-directory="D:/WORKDIR/web1" redeploy-mode="manual"/>
    </host>
  </cluster>

  <cluster id="web2">
    <server-default>
      <jvm-arg>-Xmx1024m</jvm-arg>
      <jvm-arg>-Xss1m</jvm-arg>
      <jvm-arg>-server</jvm-arg>
    </server-default>   
    <resin:import path="${resin.home}/conf/app-default.xml"/>
    <server id="web2" port="6802">
      <http id="" port="8082"/>
    </server>
    <host id="" root-directory=".">
      <web-app id="/" root-directory="D:/WORKDIR/web2/webapp" redeploy-mode="manual"/>
    </host>
  </cluster>
</resin>

上面的配置中,我们为每个应用分配一个唯一的 server id,分别是 web1 和 web2

要启动这两个应用,命令是

httpd start -server web1
httpd start -server web2

停止以及重启应用的方式也是一样。

加载中
0
张冬
张冬

楼主能讲解一下这样的有什么好处不?

0
红薯
红薯

引用来自#2楼“张冬”的帖子

楼主能讲解一下这样的有什么好处不?

两个独立的进程,可以单独进行管理,例如重启其中一个应用,不会对另外一个造成影响。

0
jing31
jing31

关键是如何分别启动两个应用呢?

我现在是用把下面的脚本()放在下面位置opt/init.d/

 

#!/bin/sh
#
# Linux startup script for Resin
#
# chkconfig: 345 85 15
# description: Resin is a Java Web server.
# processname: wrapper.pl
#
# To install, configure this file as needed and copy init.resin
# to /etc/rc.d/init.d as resin.  Then use "# /sbin/chkconfig resin reset"
#
JAVA_HOME=/usr/j2sdk
RESIN_HOME=/usr/resin
PID=$RESIN_HOME/resin.pid

export JAVA_HOME RESIN_HOME
#
# If you want to start the entire Resin process as a different user,
# set this to the user name.  If you need to bind to a protected port,
# e.g. port 80, you can't use USER, but will need to use bin/resin.
#
USER=
#
# You can change this to $RESIN_HOME/bin/resin if you need Resin to
# bind to port 80, but run as a different user.
#
EXE=$RESIN_HOME/bin/httpd.sh
#
# Sets the commandline arguments.
#
ARGS="-java_home $JAVA_HOME -resin_home $RESIN_HOME"

case "$1" in
  start)
	echo -n "Starting resin: "
	if test -n "$USER"; then
  	  su $USER -c "$EXE -pid $PID start $ARGS"
	else
  	  $EXE -pid $PID start $ARGS
        fi
	echo
	;;
  stop)
	echo -n "Shutting down resin: "
	$EXE -pid $PID stop	
	echo
	rm -f $PID
	;;
  restart)
	$0 stop
	$0 start
	;;
  *)
	echo "Usage: $0 {start|stop|restart}"
	exit 1
esac

exit 0

然后执行:

chkconfig --add resin

chkconfig resin on

这样开机就可以自动加载了。

平时启动:service resin start

现在两个工程,我得做两个上面的脚本不成?

不太会写bash脚本。linux初学啊~

0
jing31
jing31

另外,如果不用集群(cluster)是不是无法实现分别启动两个应用的要求呢?

0
jing31
jing31

我的想法是同端口,不同域名,访问不同的应用。

比如:

www.aaa.com

位置:/usr/web/aaa

shop.aaa.com

位置:/usr/web/shop

还能分别启动两个工程,另外一个工程不受影响呢?

我现在是一个server下的两个host,一个“”,一个“shop.aaa.com”。

可是这样启动的时候两个都收影响。

0
钛元素
钛元素

我用tomcat时就直接启动两个

0
张冬
张冬

引用来自#6楼“jing31”的帖子

我的想法是同端口,不同域名,访问不同的应用。

比如:

www.aaa.com

位置:/usr/web/aaa

shop.aaa.com

位置:/usr/web/shop

还能分别启动两个工程,另外一个工程不受影响呢?

我现在是一个server下的两个host,一个“”,一个“shop.aaa.com”。

可是这样启动的时候两个都收影响。

有一种方法。用两个resin。监听两个不同的端口。再用nginx实现反向代理就可以了。

0
鉴客
鉴客

引用来自#7楼“钛元素”的帖子

我用tomcat时就直接启动两个

Me too

0
谢谢分享,resin 3.1.20可以正常使用
返回顶部
顶部