[Spring Boot] 내장 톰캣 서버 설정
KUKJIN LEE • 3주 전 작성
Spring Boot는 내장된 톰캣(Tomcat) 서버를 통해 별도의 서블릿 컨테이너 없이도 웹 애플리케이션을 손쉽게 실행할 수 있습니다.
내장 톰캣 서버의 주요 장점
-
빠른 개발 환경 구축: 외부 서버 설치나 복잡한 설정 없이 애플리케이션 실행만으로 웹 서버가 동작하므로, 개발과 테스트가 용이합니다.
-
간편한 배포: 내장 톰캣을 사용하면 독립 실행형 JAR 파일로 패키징하여 어디서나 쉽게 배포하고 실행할 수 있습니다.
-
유연한 설정:
application.properties
나application.yml
파일을 통해 서버 설정을 손쉽게 변경할 수 있습니다. -
커스터마이징 용이성: 필요에 따라 프로그램 코드로 서버 설정을 세밀하게 조정할 수 있습니다.
1. 내장 톰캣 서버 설정하기
1.1 포트 번호 변경
기본적으로 톰캣 서버는 포트 8080을 사용합니다. 이를 변경하려면 설정 파일에서 server.port
값을 수정합니다.
application.properties
server.port=8081
application.yml
server:
port: 8081
1.2 스레드 수 및 타임아웃 설정
서버의 성능 최적화를 위해 최대 스레드 수나 커넥션 타임아웃을 조정할 수 있습니다.
(스레드 수와 타임아웃 설정을 무한정 늘리지 않는 이유는 비용과 시스템 자원의 효율성 때문입니다.)
application.properties
server.tomcat.max-threads=200
server.connection-timeout=5s
application.yml
server:
tomcat:
max-threads: 200
connection-timeout: 5s
2. 내장 톰캣 서버 커스터마이징
프로그램 코드로 더욱 세부적인 설정을 하고 싶다면 TomcatServletWebServerFactory
를 이용할 수 있습니다.
import org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory;
import org.springframework.boot.web.server.WebServerFactoryCustomizer;
import org.springframework.stereotype.Component;
@Component
public class CustomTomcatConfig implements WebServerFactoryCustomizer<TomcatServletWebServerFactory> {
@Override
public void customize(TomcatServletWebServerFactory factory) {
factory.setPort(8081); // 포트 번호 설정
factory.addConnectorCustomizers(connector -> {
connector.setProperty("maxThreads", "200"); // 최대 스레드 수 설정
connector.setProperty("connectionTimeout", "5000"); // 커넥션 타임아웃 설정
});
}
}
3. 내장 톰캣 서버의 실행과 종료
-
실행:
SpringApplication.run()
메서드를 호출하면 내장 톰캣 서버가 자동으로 시작되며, 애플리케이션의 모든 서블릿과 리소스가 초기화됩니다. -
종료
-
개발 환경: IDE에서 실행 중인 애플리케이션을 중지하거나 콘솔에서
Ctrl + C
를 눌러 종료합니다. -
운영 환경: 애플리케이션 프로세스를 찾아 종료하거나 서버를 재시작합니다.
-
4. 추가적인 설정 옵션
내장 톰캣 서버는 다양한 설정 옵션을 제공합니다. 일부 유용한 설정은 다음과 같습니다.
4.1 HTTPS 설정
SSL 인증서를 사용하여 HTTPS를 활성화할 수 있습니다.
application.properties
server.port=8443
server.ssl.enabled=true
server.ssl.key-store=classpath:keystore.p12
server.ssl.key-store-password=비밀번호
server.ssl.key-store-type=PKCS12
server.ssl.key-alias=tomcat