톰캣 서버에서 여러 프로젝트 설정하기

2022. 1. 23. 18:39개발 참고

반응형

톰캣 서버에서 여러 개의 프로젝트를 동시에 실행하려면, server.xml 파일을 수정하여 각 프로젝트에 대해 별도의 서비스(Service)와 커넥터(Connector)를 설정할 수 있습니다. 이를 통해 서로 다른 포트에서 각기 다른 웹 애플리케이션을 실행할 수 있습니다.

1. 톰캣 홈 디렉토리로 이동 및 server.xml 파일 수정

  • 톰캣 홈 디렉토리로 이동 후, server.xml 파일을 열어 설정을 추가합니다.
cd conf
vi server.xml

2. 프로젝트 등록 예시

각기 다른 서비스 이름과 포트를 사용하여 여러 프로젝트를 설정할 수 있습니다. 예시는 두 개의 서비스(Catalina1, Catalina2)에 대한 설정입니다.

2.1 첫 번째 서비스 (Catalina1)

<Service name="Catalina1">
   <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="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="front" path="" sessionCookieName="jsessionid1" reloadable="true"/>
      </Host>
   </Engine>
</Service>
  • Catalina1 서비스는 8080 포트에서 HTTP 요청을 처리하고, front라는 웹 애플리케이션을 배포합니다.
  • AccessLogValve는 요청 로그를 기록하며, jsessionid1이라는 세션 쿠키를 사용합니다.

2.2 두 번째 서비스 (Catalina2)

<Service name="Catalina2">
   <Connector port="8081" 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="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="admin" path="" sessionCookieName="jsessionid2" reloadable="true"/>
      </Host>
   </Engine>
</Service>
  • Catalina2 서비스는 8081 포트에서 HTTP 요청을 처리하고, admin이라는 다른 웹 애플리케이션을 배포합니다.
  • AccessLogValve와 jsessionid2라는 세션 쿠키를 사용하여 로그와 세션을 관리합니다.

3. 설정 요약

  • 각 서비스는 독립적인 포트를 사용하여 다른 웹 애플리케이션을 실행합니다.
  • Connector는 HTTP 및 AJP 프로토콜을 처리하고, 각 서비스는 서로 다른 웹 애플리케이션을 관리합니다.
  • Host 내에 Context 태그를 사용하여 각각의 웹 애플리케이션(front, admin)을 지정하고, sessionCookieName을 다르게 설정하여 각각의 세션을 구분합니다.

이 설정을 통해 톰캣에서 여러 프로젝트를 동시에 실행하고 관리할 수 있습니다.

반응형