목차
Tomcat 서버 설정 가이드: 설치부터 성능 최적화까지
Apache Tomcat은 Java 기반의 웹 애플리케이션을 호스팅하기 위한 오픈소스 웹 서버이자 서블릿 컨테이너입니다. Java EE(Servlet, JSP 등) 기반의 웹 애플리케이션을 실행하는 데 많이 사용됩니다. 이 글에서는 Tomcat 서버 설치부터 시작해, 서버 설정 파일, 성능 최적화, 보안 설정까지 자세히 설명합니다.
1. Tomcat 설치 방법
Tomcat을 설치하는 방법은 매우 간단합니다. Tomcat 공식 웹사이트에서 제공하는 설치 패키지를 다운로드하여 설치할 수 있습니다.
1.1 Tomcat 다운로드
- Tomcat 공식 웹사이트(https://tomcat.apache.org)에 접속합니다.
- "Download" 페이지로 이동하여 최신 버전의 Tomcat을 다운로드합니다. (Tomcat 9.x, 10.x 등이 있습니다.)
- zip 또는 tar.gz 형식으로 파일을 다운로드합니다.
1.2 Tomcat 설치
- 다운로드한 파일을 원하는 디렉토리에 압축을 풀고, 해당 디렉토리로 이동합니다.
- 설치가 완료되면 bin 폴더 내의 startup.sh (리눅스) 또는 startup.bat (윈도우) 파일을 실행하여 Tomcat을 시작할 수 있습니다.
# 리눅스 예시
$ ./bin/startup.sh
[ 개인적인 팁 ]
Tomcat이 설치된 bin 파일까지 접근해서 cd 하고 해당 폴더로 접근
C:\Users\korea>cd C:\apache-tomcat-9.0.98-windows-x64\apache-tomcat-9.0.98\bin
enter 치고 해당 부분에 접근 해서 startup으로 시작 준비를 하면 됨.
C:\apache-tomcat-9.0.98-windows-x64\apache-tomcat-9.0.98\bin>startup
[ 잘 설치되었는지 확인 ]
Tomcat이 정상적으로 실행되면 브라우저에서 http://localhost:8080을 입력하여 Tomcat 기본 페이지를 확인할 수 있습니다.
[끄는 방법] - 두가지 중 택하면 됨.
1. Tomcat cmd 창 닫기
2. shutdown 명령어로 창을 끄기
-> 이렇게 하면 그 후에 톰켓 화면이 local 8080에서 접근이 안됨을 알 수 있다.
2. Tomcat 주요 설정 파일
Tomcat의 주요 설정 파일들은 주로 conf 폴더 내에 위치합니다. 이 파일들을 수정하여 Tomcat의 동작 방식을 세부적으로 조정할 수 있습니다.
2.1 server.xml
server.xml 파일은 Tomcat의 가장 중요한 설정 파일입니다. 이 파일에서 포트 설정, 커넥터, 호스트 등을 설정할 수 있습니다.
- 포트 변경: 기본적으로 Tomcat은 8080 포트를 사용합니다. 이를 다른 포트로 변경하려면 <Connector> 태그 내의 port 속성을 수정합니다.
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
- HTTPS 설정: SSL을 사용하여 HTTPS 연결을 설정하려면, 별도의 SSL 커넥터를 추가해야 합니다.
<Connector port="8443" protocol="HTTP/1.1"
SSLEnabled="true"
maxThreads="150"
scheme="https" secure="true"
clientAuth="false" sslProtocol="TLS"
keystoreFile="/path/to/keystore" keystorePass="your_password" />
2.2 context.xml
context.xml 파일은 특정 웹 애플리케이션에 대한 설정을 제공합니다. 이 파일에서는 데이터베이스 연결 설정, 리소스 설정 등을 할 수 있습니다.
- 데이터베이스 연결 설정 예시:
<Context>
<Resource name="jdbc/mydb" auth="Container"
type="javax.sql.DataSource" driverClassName="com.mysql.cj.jdbc.Driver"
url="jdbc:mysql://localhost:3306/mydb"
username="root" password="password"
maxTotal="20" maxIdle="10" maxWaitMillis="10000"/>
</Context>
2.3 web.xml
web.xml 파일은 웹 애플리케이션의 배치 서술자입니다. 이 파일에서는 서블릿, JSP, 필터 및 리스너와 같은 애플리케이션 구성 요소를 정의합니다.
3. 성능 최적화 설정
Tomcat을 최적화하려면 몇 가지 성능 관련 설정을 고려할 수 있습니다.
3.1 스레드 풀 설정
Tomcat은 기본적으로 maxThreads 값을 사용하여 동시에 처리할 수 있는 요청 수를 설정합니다. 이 값을 적절히 조정하여 성능을 최적화할 수 있습니다. server.xml 파일 내의 <Connector> 태그에서 maxThreads 값을 설정할 수 있습니다.
<Connector port="8080" protocol="HTTP/1.1"
maxThreads="200"
connectionTimeout="20000"
redirectPort="8443" />
3.2 JVM 메모리 설정
Tomcat의 성능을 높이기 위해 JVM의 메모리 설정을 조정할 수 있습니다. setenv.sh (리눅스) 또는 setenv.bat (윈도우) 파일에서 JAVA_OPTS 변수를 설정하여 메모리를 조정합니다.
export JAVA_OPTS="-Xms512m -Xmx1024m -XX:PermSize=128m -XX:MaxPermSize=256m"
3.3 압축 활성화
HTTP 응답을 압축하면 대역폭을 절약할 수 있습니다. 이를 활성화하려면 server.xml 파일에서 <Connector> 태그에 compression 속성을 추가합니다.
<Connector port="8080" protocol="HTTP/1.1"
compression="on"
compressableMimeType="text/html,text/xml,text/plain"/>
4. 보안 설정
Tomcat 서버는 기본적으로 많은 보안 취약점을 가지고 있을 수 있으므로, 보안 설정은 매우 중요합니다.
4.1 관리 콘솔 접근 제한
Tomcat의 관리자 페이지에 접근을 제한하려면 tomcat-users.xml 파일에서 사용자 권한을 설정해야 합니다.
<role rolename="manager-gui"/>
<role rolename="admin-gui"/>
<user username="admin" password="admin_password" roles="manager-gui,admin-gui"/>
그런 후, context.xml 파일에서 관리자 페이지 접근을 IP로 제한할 수 있습니다.
<Valve className="org.apache.catalina.valves.RemoteAddrValve"
allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1"/>
4.2 디버그 모드 비활성화
web.xml 파일에서 디버그 모드를 비활성화해야 합니다. 디버그 모드는 공격자가 시스템에 대한 정보를 얻을 수 있도록 할 수 있기 때문입니다.
5. Tomcat 서버 종료 및 관리
Tomcat을 종료하거나 관리하려면 bin 디렉토리의 shutdown.sh (리눅스) 또는 shutdown.bat (윈도우) 파일을 사용합니다.
$ ./bin/shutdown.sh
마치며
Tomcat은 매우 강력한 서버로, 다양한 설정을 통해 성능을 최적화하고 보안을 강화할 수 있습니다. 위에서 설명한 설정들을 통해 Tomcat 서버를 보다 안전하고 효율적으로 운영할 수 있습니다. 서버를 운영하면서 주기적으로 로그를 모니터링하고 성능을 점검하는 것도 중요합니다.
'Spring' 카테고리의 다른 글
서블릿(Servlet)의 생명주기(Lifecycle) (0) | 2025.02.20 |
---|---|
WebDataBinder (0) | 2025.02.20 |
Spring @RequestParam 완벽 가이드 (0) | 2025.02.20 |
Spring @ModelAttribute 어노테이션 완벽 가이드 (0) | 2025.02.20 |
메이븐(Maven)과 그래들(Gradle) 비교 (0) | 2025.02.19 |