Apache Tomcat 웹 애플리케이션 서버(WAS)의 기본 설정 방법을 이야기 하고자 한다
Tomcat은 Java 서블릿을 실행하고 JSP(JavaServer Pages)를 렌더링하기 위한 오픈 소스 웹 서버 및 서블릿 컨테이너다
Tomcat이 이미 서버에 설치되어 있다는 가정하에 필요한 환경 설정을 단계별로 설명하겠다.
◎ 환경 변수 및 실행 경로 설정
■ ~/.bash_profile 설정
사용자가 로그인할 때 자동으로 로드되는 셸 초기화 파일로 Tomcat운영에 필요한 환경변수와 별칭(Alias)를 설정한다
# bashrc환경을 현재 환경에 load함(쉘 일관성)
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
# User specific environment and startup programs
TEST_HOME=/data/test_ma
LANG=ko_KR.utf8
JAVA_HOME=$TEST_HOME/jdk1.8.0_202
TOMCAT_HOME=$TEST_HOME/apache-tomcat-9.0.73
PATH=$JAVA_HOME/bin:$PATH:$HOME/bin
export PATH JAVA_HOME LANG TEST_HOME TOMCAT_HOME
alias tombin='cd $TOMCAT_HOME/bin'
alias tomlog='tail -500f $TOMCAT_HOME/logs/catalina.out'
alias tomrestart='$TOMCAT_HOME/bin/restart.sh'
source ~/.bash_profile로 변경된 환경설정을 즉시 적용해주자.
TEST_HOME: 애플리케이션 기본 디렉토리 경로 LANG: 시스템 언어 설정 (한국어 UTF-8) JAVA_HOME: JDK 설치 경로 TOMCAT_HOME: Tomcat 설치 경로 PATH: 실행 파일 검색 경로 (Java 실행 파일 포함) tombin: Tomcat의 bin 디렉토리로 빠르게 이동 tomlog: Tomcat의 로그 파일을 실시간으로 확인 (마지막 500줄부터) tomrestart: Tomcat 재시작 스크립트 실행 |
◎ Tomcat 서버 구성 설명
■ server.xml 설정
<Connector port="8001" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="9001" URIEncoding="utf-8" />
<!-- A "Connector" using the shared thread pool-->
<Context sessionCookieName="MARIA_JSESSIONID"
docBase="/data/test_ma/application" path="" />
Connector 설정: port="8001": 웹 서버가 HTTP 요청을 수신할 포트 번호 protocol="HTTP/1.1": 사용할 HTTP 프로토콜 버전 connectionTimeout="20000": 연결 타임아웃(밀리초 단위, 20초) redirectPort="9001": SSL 연결 시 리다이렉션할 포트 URIEncoding="utf-8": URL 인코딩에 사용할 문자셋 (한글 지원을 위해 중요) Context 설정: sessionCookieName="MARIA_JSESSIONID": 세션 쿠키 이름을 지정 (다중 애플리케이션 환경에서 세션 구분에 유용) docBase="/data/test_ma/application": 웹 애플리케이션 위치 (소스 코드가 배포될 디렉토리) path="": 컨텍스트 경로 (빈 값은 루트 컨텍스트임을 의미, URL에서 http://server:8001/ 로 직접 접근) |
웹 애플리케이션 소스 코드를 Tomcat 설치 디렉토리와 분리하여 관리할 수 있게 해준다.
Tomcat 업그레이드 시 애플리케이션 코드를 보존하고, 소스 코드 관리를 더 효율적으로 할 수 있게 해준다.
■ Appbase와 Docbase 차이점(Tomcat 디렉토리 구조의 이해)
appbase | docbase |
<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true"> <!-- Context 요소들은 여기에 위치 --> </Host> |
<Context path="/myapp" docBase="/data/test_ma/application" /> |
기본값: webapps (Tomcat 설치 디렉토리 내의 webapps 폴더) | Tomcat의 <Context> 요소에서 정의 특정 웹 애플리케이션의 루트 디렉토리를 지정 =웹 애플리케이션의 실제 위치를 가리키는 경로 |
상위 개념으로, 여러 웹 애플리케이션을 포함하는 컨테이너 디렉토리 | 하위 개념으로, 특정 웹 애플리케이션의 위치를 가리킴 |
- | 업그레이드 용이성: Tomcat을 업그레이드할 때 애플리케이션 코드를 보존 코드 관리 단순화: 애플리케이션 소스 코드와 서버 설정을 분리하여 관리 백업 효율성: 애플리케이션 코드만 별도로 백업 개발 워크플로우 개선: 개발 환경에서 코드를 변경하고 서버를 다시 시작하지 않고도 변경 사항을 즉시 확인 |
appbase와 docbase를 잘 사용한다면 부분적인 MSA를 사용할 수 있다.
<Host name="localhost" appBase="webapps">
<!-- 사용자 서비스 -->
<Context path="/users" docBase="/data/services/user-service" />
<!-- 상품 서비스 -->
<Context path="/products" docBase="/data/services/product-service" />
<!-- 주문 서비스 -->
<Context path="/orders" docBase="/data/services/order-service" />
</Host>
■ JVM 및 성능 설정 을 위한 catalina.sh 설정
Tomcat의 시작, 정지 및 JVM 설정을 관리하는 스크립트
메모리 할당, 가비지 컬렉션, 인코딩 등 Java 런타임 옵션을 설정한다.
CATALINA_OPTS="-server -Djava.awt.headless=true -Xms1024m -Xmx2048m -Dfile.encoding=\"utf-8\""
SCOUTER_AGENT_USER="test_ma"
CATALINA_OPTS: Tomcat 실행 시 적용되는 Java 옵션 -server: 서버 모드로 JVM 실행 (최적의 성능을 위한 설정) -Djava.awt.headless=true: 헤드리스 모드로 Java AWT 실행 (GUI 없는 서버 환경에 적합) -Xms1024m: 초기 힙 메모리 크기 (1GB) / -Xmx2048m: 최대 힙 메모리 크기 (2GB) -Dfile.encoding="utf-8": 파일 읽기/쓰기에 사용할 문자 인코딩 (UTF-8) |
■ 데이터베이스 연결 설정
WEB-INF 디렉토리 내에 속성파일인 resource_db_properties에서 정의함
##############################################################
# MARIA DB
##############################################################
DB.DRIVER=org.mariadb.jdbc.Driver
DB.URL=jdbc:mariadb://1.1.1.1:3306/test_ma
DB.USERNAME=test_ma
DB.PASSWORD=test#123
DB.V_QUERY=SELECT now()
데이터베이스 드라이버: org.mariadb.jdbc.Driver MariaDB 데이터베이스에 연결하기 위한 JDBC 드라이버 클래스 이 드라이버는 WEB-INF/lib 디렉토리에 JAR 파일로 포함되어야 함. 데이터베이스 연결 URL: jdbc:mariadb://1.1.1.1:3306/test_ma 1.1.1.1: 데이터베이스 서버 IP 주소 3306: MariaDB 기본 포트 test_ma: 사용할 데이터베이스 이름 인증정보: DB.USERNAME=test_ma: 데이터베이스 접속 사용자 이름 DB.PASSWORD=test#123: 데이터베이스 접속 비밀번호 검증 쿼리: 데이터베이스 연결 상태 확인에 사용되는 간단한 쿼리 커넥션 풀에서 연결을 가져올 때 유효성 검사에 활용 |
'IT > Linux' 카테고리의 다른 글
폐쇄망과 구글 폰트에 대한 접속 불가 이슈 (1) | 2025.03.12 |
---|---|
SMTP(메일 서버) 연결 테스트 및 메일 전송 오류 트러블 슈팅 (1) | 2025.03.08 |
Tomcat 웹 서버의 SSL 인증서 관리 (1) | 2025.03.06 |
Tomcat Log 수집 방법(JUL, Log4j)과 Level 설정 (1) | 2025.03.05 |
어플리케이션-DB 연결(Tomcat Spring-JDK) (0) | 2025.03.05 |