구조 및 데이터 관리/INFRA

Tomcat - Service 여러개 가동

개발참치 2021. 9. 8.

Tomcat으로 여러 개 서비스를 구동하는 방법을 공유해드리려 합니다.

 

문제

 

외장 Tomcat으로 서비스를 가동할 때, 한 Tomcat으로 여러 개의 서비스를 가동할 상황이 주어집니다.

 

중복되지 않게 가동하는 방법은 상황에 따라 두 가지가 존재합니다.

 

  • 서비스 포트번호로 분류하는 법
  • 같은 포트 번호인데 도메인으로 분류하는 법

 

Tomcat의 webapps 폴더를 두개 만들어주면 경로 설정을 수월하게 할 수 있습니다.

 

서비스 포트로 분류하는 법

 

첫째

 

tomcat의 config/server.xml을 vi 편집기를 이용하여 열어준 뒤 Service 부분에 속해있는 host 부분을 찾습니다.

 

<Service name="Catalina">
   <Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               URIEncoding="UTF-8"
               redirectPort="8443" />

   <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />

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

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

     <Host name="test.domain.com"  appBase="webapps"
           unpackWARs="true" autoDeploy="true">
       <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
              prefix="localhost_access_log." suffix=".txt"
              pattern="%h %l %u %t &quot;%r&quot; %s %b" />
     </Host>
   </Engine>
 </Service>

 

둘째

 

Host 부분의 name 부분과 appBase 부분을 다르게 변경하여 하나 더 추가해줍니다.

 

<Service name="Catalina">
   <Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               URIEncoding="UTF-8"
               redirectPort="8443" />

   <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />

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

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

     <Host name="test.domain.com"  appBase="webapps"
           unpackWARs="true" autoDeploy="true">
       <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
              prefix="localhost_access_log." suffix=".txt"
              pattern="%h %l %u %t &quot;%r&quot; %s %b" />
     </Host>

// 바뀐 곳
     <Host name="test2.domain.com"  appBase="webapps2"
           unpackWARs="true" autoDeploy="true">
       <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
              prefix="localhost_access_log." suffix=".txt"
              pattern="%h %l %u %t &quot;%r&quot; %s %b" />
     </Host>

   </Engine>
 </Service>

 

서비스 포트로 분류하는 법

 

첫째

 

tomcat의 config/server.xml을 vi 편집기를 이용하여 열어준 뒤 Service 부분을 찾습니다.

 

<Service name="Catalina">
    <Connector port="8082" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />

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

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

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

        <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
               prefix="localhost_access_log" suffix=".txt"
               pattern="%h %l %u %t &quot;%r&quot; %s %b" />

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

 

둘째

 

Service 부분의 port 부분과 appBase 부분을 다르게 변경하여 하나 더 추가해줍니다.

 

<Service name="Catalina">
    <Connector port="8082" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />

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

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

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

        <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
               prefix="localhost_access_log" suffix=".txt"
               pattern="%h %l %u %t &quot;%r&quot; %s %b" />

      </Host>
    </Engine>
  </Service>
  
  
  
  <Service name="Catalina2">
// 바뀐 곳
    <Connector port="8083" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />

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

      <Realm className="org.apache.catalina.realm.LockOutRealm">
        <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
               resourceName="UserDatabase"/>
      </Realm>
// 바뀐 곳
      <Host name="localhost"  appBase="webapps2"
            unpackWARs="true" autoDeploy="true">

        <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
               prefix="localhost_access_log" suffix=".txt"
               pattern="%h %l %u %t &quot;%r&quot; %s %b" />

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

 

서버 캡쳐 사진

 

혹은

 

appBase를 바꾸지 않아도, conText 경로를 바꾸어 추가할 수 있습니다.

 

<Service name="Catalina">
    <Connector port="8082" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />

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

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

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

        <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
               prefix="localhost_access_log" suffix=".txt"
               pattern="%h %l %u %t &quot;%r&quot; %s %b" />
		<Context docBase="TEST" path="" reloadable="true" sessionCookiePath="/"/>
      </Host>
    </Engine>
  </Service>
  
  
  
  <Service name="Catalina2">
// 바뀐 곳
    <Connector port="8083" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />

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

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

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

        <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
               prefix="localhost_access_log" suffix=".txt"
               pattern="%h %l %u %t &quot;%r&quot; %s %b" />
// 바뀐 곳
		<Context docBase="TEST2" path="" reloadable="true" sessionCookiePath="/"/>
      </Host>
    </Engine>
  </Service>

 

댓글