본문 바로가기
IT

같은 서버에서 톰캣 별도 인스턴스 띄우기

by urosie 2025. 12. 11.
반응형

서버 한 대에서 기존 톰캣과 별도로 톰캣을 띄워야 할 때, 간단하지만 놓치기 쉬운 포인트들이 있습니다. 단순 API 중계용 톰캣이라도 포트, 디렉토리, 로그 분리는 필수입니다.


1. CATALINA_HOME과 CATALINA_BASE

  • CATALINA_HOME: 톰캣 설치 디렉토리. 라이브러리, 실행 파일 등 공통 리소스 위치.
  • CATALINA_BASE: 톰캣 인스턴스별 설정, 로그, 웹앱 위치.

별도 인스턴스라면 CATALINA_BASE를 기존 톰캣과 다른 디렉토리로 지정해야 합니다.

 
export CATALINA_BASE=/data/tomcat_relay

export CATALINA_HOME=/usr/local/tomcat

이렇게 하면 설정과 로그, 웹앱이 완전히 분리됩니다.


2. startup.sh / catalina.sh

  • startup.sh는 내부적으로 catalina.sh start를 실행합니다.
  • 중요한 건 CATALINA_BASE 환경 변수가 올바르게 지정되어 있는지 확인하는 것.
  • 스크립트 자체는 기본값 그대로 사용해도 무방합니다.

3. server.xml 설정

포트 충돌 방지가 핵심입니다.

<Server port="8005" shutdown="SHUTDOWN">
  <Service name="Catalina">
    <Connector port="8099" protocol="HTTP/1.1" connectionTimeout="20000" URIEncoding="UTF-8"/>
    <Engine name="Catalina" defaultHost="localhost">
      <Host name="localhost" appBase="/data" unpackWARs="true" autoDeploy="false">
        <Context path="/" docBase="./outbound-relay" reloadable="true"/>
      </Host>
    </Engine>
  </Service>
</Server>
 

주의 사항

  • HTTP 포트 (Connector port)는 기존 톰캣과 다르게 지정
  • Shutdown 포트 (Server port)는 외부 차단
  • Host, Context, 로그 디렉토리는 인스턴스별로 분리

4. Shutdown 포트 보안

  • 기본값 8005는 외부 접근 불필요.
  • 방화벽에서 차단하거나 localhost 전용으로 바인딩:
 
<Server port="8005" shutdown="SHUTDOWN" address="127.0.0.1">

5. 권한 및 디렉토리 관리

  • 로그, temp, 웹앱 디렉토리는 인스턴스별 권한 확인
  • 여러 톰캣이 같은 계정으로 실행되더라도 권한 충돌 방지 필요

6. 실전 체크리스트

항목체크 포인트
CATALINA_BASE 기존 톰캣과 분리
HTTP/HTTPS 포트 충돌 방지, 다른 포트 지정
Shutdown 포트 외부 차단, localhost 바인딩
server.xml Host, Context, 로그 디렉토리 분리
스크립트 startup.sh/catalina.sh에서 CATALINA_BASE 확인
권한 로그, temp, 앱 디렉토리 권한 충돌 방지

🔹 TIP: 단순 API 톰캣이라면

  • DB 연결 없음, 화면 없음 → 설정 최소화 가능
  • 로그와 temp만 잘 분리해도 기존 톰캣과 완전히 독립 실행 가능
 
 

이 구조만 지켜도 서버 한 대에서 톰캣 여러 인스턴스를 안전하게 띄울 수 있습니다.

반응형

댓글