Tomcat 에 Application 별로 다른 포트를 할당하여 띄우려고 하는 경우, 간단히 Server 내에 Service 를 추가하는 방법이 있다. 인터넷에 도메인 네임 별로 호스트를 주는 방법은 많은데 요건 없어서 적어본다.

Tomcat 6 기준이지만, 이하 버전에서도 동일하게 작동할것이라 굳게 믿는다.

Tomcat 은 server.xml 구조가 기본적으로,
<Server>
<Listener [n]/>
<GlobalNamingResource>
</GlobalNamingResource>
<Service [n]>
<Connector [n]/>
<Engine>
<Realm [?]/>
<Host [n]>
<Context [n]>
<Resource [n]/>
</Context>
</Host>
</Engine>
</Service>
</Server>


위와 같은 구조로 server.xml 을 구성할 수 있다. [n] 은 복수개가 올 수 있다는 것이다.
그래서, Service 를 여러개 만들면, 다른 포트를 가질 수 있는 커넥터와 묶인 Host 를 만들 수 있다.

대충 이런구조가 될 수 있다.

<Server port="8005" shutdown="SHUTDOWN">

  <Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />
  <Listener className="org.apache.catalina.core.JasperListener" />
  <Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" />
  <Listener className="org.apache.catalina.mbeans.ServerLifecycleListener" />
  <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" />

  <GlobalNamingResources>
    <Resource name="UserDatabase" auth="Container"
              type="org.apache.catalina.UserDatabase"
              description="User database that can be updated and saved"
              factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
              pathname="conf/tomcat-users.xml" />
  </GlobalNamingResources>

  <Service name="Catalina">

    <Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />
    <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />

    <Engine name="Catalina" defaultHost="localhost">

      <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
             resourceName="UserDatabase"/>

      <Host name="localhost"  appBase="webapps"
            unpackWARs="true" autoDeploy="false"
            xmlValidation="false" xmlNamespaceAware="false">

      </Host>
    </Engine>
  </Service>

  <Service name="Hudson">
    <Connector port="8081" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" URIEncoding="UTF-8"/>
    <Connector port="8010" protocol="AJP/1.3" redirectPort="8443" />

    <Engine name="Hudson" defaultHost="localhost">

      <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
             resourceName="UserDatabase"/>

      <Host name="localhost"  appBase="hudson_webapps"
            unpackWARs="true" autoDeploy="true"
            xmlValidation="false" xmlNamespaceAware="false">
      <Context displayName="hudson" docBase="/home/apps/hudson/war"
            path="" workDir="" />

      </Host>
    </Engine>
  </Service
>
</Server>



저러면 8080 으로 서비스 하는 host 와 8081 로 서비스하는 Host 가 각각 하나씩 뜨게 된다.
그런데 Tomcat Instance 는 하나라서 성능이 어떻게 될지는 장담하지 못한다는거~
실제 운영환경에서는 Tomcat 을 별도로 띄우는게 더 좋을듯 하다.

반응형
블로그 이미지

Good Joon

IT Professionalist Since 1999

,

오늘 이노무것 땜에 스트레스 좀 받았다. 조금만 로그를 자세히 봤었으면 좋았을것을..^^;;

디렉토리 기반으로 배포하도록 Context 를 server.xml 에 추가했는데 자꾸 아래와 같이 에러가 떨어지더라..

2010. 2. 10 오전 12:43:22 org.apache.catalina.core.AprLifecycleListener init
정보: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: /usr/local/jdk1.6.0_18/jre/lib/amd64/server:/usr/local/jdk1.6.0_18/jre/lib/amd64:/usr/local/jdk1.6.0_18/jre/../lib/amd64:/lib:/usr/lib:/usr/local/lib:/usr/java/packages/lib/amd64:/usr/lib64:/lib64:/lib:/usr/lib
2010. 2. 10 오전 12:43:22 org.apache.tomcat.util.digester.SetPropertiesRule begin
경고: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property 'docbase' to '/home/was/sample/simple' did not find a matching property.
2010. 2. 10 오전 12:43:23 org.apache.coyote.http11.Http11Protocol init
정보: Initializing Coyote HTTP/1.1 on http-8080
2010. 2. 10 오전 12:43:23 org.apache.catalina.startup.Catalina load
정보: Initialization processed in 864 ms
2010. 2. 10 오전 12:43:23 org.apache.catalina.core.StandardService start
정보: Starting service Catalina
2010. 2. 10 오전 12:43:23 org.apache.catalina.core.StandardEngine start
정보: Starting Servlet Engine: Apache Tomcat/6.0.24
2010. 2. 10 오전 12:43:23 org.apache.catalina.core.StandardContext resourcesStart
심각: Error starting static Resources
java.lang.IllegalArgumentException: Document base /home/was/apache-tomcat-6.0.24/webapps/simple does not exist or is not a readable directory
        at org.apache.naming.resources.FileDirContext.setDocBase(FileDirContext.java:142)
        at org.apache.catalina.core.StandardContext.resourcesStart(StandardContext.java:4086)
        at org.apache.catalina.core.StandardContext.start(StandardContext.java:4255)
        at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
        at org.apache.catalina.core.StandardHost.start(StandardHost.java:722)
        at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
        at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443)
        at org.apache.catalina.core.StandardService.start(StandardService.java:516)
        at org.apache.catalina.core.StandardServer.start(StandardServer.java:710)
        at org.apache.catalina.startup.Catalina.start(Catalina.java:593)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289)
        at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414)


처음에는, "왜자꾸 TOMCAT_HOME/webapps 에서 Context 를 로드하려고 하니 얘가.. docbase 도 세팅해줬는데.." 했건만, 결론은, server.xml 에 대소문자 하나때문에 일어난 일이었다..

<Context displayName="simple" docbase="/home/was/sample/simple"
      path="/simple" workDir="" reloadable="true"/>

저 docbase 가 잘못되었었다.. docbase 가 아니고 docBase 인데.. 이런 실수를..ㅜㅜ



반응형
블로그 이미지

Good Joon

IT Professionalist Since 1999

,
1. 백업

svnadmin dump %REPODIR% > %REPOBACKUP%

2. 복원

svnadmin load %REPODIR% < %REPOBACKUP%

반응형
블로그 이미지

Good Joon

IT Professionalist Since 1999

,