반응형
서버 한 대에서 기존 톰캣과 별도로 톰캣을 띄워야 할 때, 간단하지만 놓치기 쉬운 포인트들이 있습니다. 단순 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만 잘 분리해도 기존 톰캣과 완전히 독립 실행 가능
이 구조만 지켜도 서버 한 대에서 톰캣 여러 인스턴스를 안전하게 띄울 수 있습니다.
반응형
'IT' 카테고리의 다른 글
| 외부 API 장애에도 우리 서비스가 죽지 않게 하는 방법 (0) | 2025.12.15 |
|---|---|
| 낙관적 락 vs 비관적 락 (0) | 2025.12.15 |
| JSON 동적 필드 처리 – Jackson @JsonAnySetter 완전 이해하기 (0) | 2025.12.10 |
| RestTemplate 응답 타입에 따른 20초 타임아웃 트러블슈팅 (0) | 2025.12.04 |
| 스프링 의존성 주입: @Autowired vs @RequiredArgsConstructor + 단위 테스트 예제 (0) | 2025.09.24 |
댓글