Ⅰ. Tomcat 이란?
Tomcat은 아파치 소프트웨어 재단(Apache Software Foundation)에서 개발한 오픈 소스 웹 서버 소프트웨어입니다. Tomcat은 Java Servlet, JavaServer Pages(JSP), WebSocket 및 Java API for RESTful Web Services(JAX-RS)와 같은 Java 기반 웹 어플리케이션을 실행할 수 있는 서블릿 컨테이너입니다. JSP/Spring으로 웹사이트를 구축한다면 톰캣은 거의 반드시 사용된다고 볼 수 있습니다.
Ⅱ. Tomcat 설치 방법
1) Windows 계열
A. Tomcat 다운로드
Tomcat을 설치하기 전에, 다음 링크에서 Tomcat 다운로드를 받아야 합니다. 원하는 버전의 Tomcat을 다운로드하고 압축을 풀어서 사용할 디렉토리에 압축을 해제합니다.
https://tomcat.apache.org/download-10.cgi
B. 환경 변수 설정
Tomcat을 사용하기 위해서는 JAVA_HOME 환경 변수가 필요합니다. 환경 변수를 설정하려면, "내 컴퓨터"에서 마우스 오른쪽 버튼을 클릭하여 "속성"을 선택합니다. "고급 시스템 설정"을 클릭하고 "환경 변수"를 클릭합니다. "시스템 변수"에서 "새로 만들기"를 클릭하여 변수 이름을 "JAVA_HOME"으로, 변수 값은 JDK가 설치된 경로를 입력합니다.
C. Tomcat 실행
Tomcat 설치 폴더에서 "bin" 폴더로 이동합니다. "startup.bat" 파일을 실행하여 Tomcat을 실행합니다.
D. Tomcat 테스트
Tomcat이 제대로 실행되었는지 확인하려면, 웹 브라우저를 열고 "http://localhost:8080/" 주소로 이동합니다. Tomcat의 기본 페이지가 나타나면 Tomcat이 정상적으로 설치되었음을 의미합니다.
2) Linux, Unix 계열
A. Java 설치
Tomcat을 실행하기 위해서는 Java가 설치되어 있어야 합니다. 다음 명령어를 사용하여 Java를 설치합니다.
B-1) 레드헷계열 (yum)
yum update
yum install default-jdk
B-2) 우분투계열(apt-get)
sudo apt-get update
sudo apt-get install default-jdk
C. Tomcat 다운로드
Tomcat을 설치하기 전에, 다음 명령어를 통해 Tomcat 다운로드를 받아야 합니다. 원하는 버전의 Tomcat을 다운로드하고 압축을 풀어서 사용할 디렉토리에 압축을 해제합니다.
wget https://dlcdn.apache.org/tomcat/tomcat-10/v10.1.7/bin/apache-tomcat-10.1.7.tar.gz
D. Tomcat 실행
Tomcat 설치 폴더에서 "bin" 폴더로 이동합니다. "startup.sh" 파일을 실행하여 Tomcat을 실행합니다.
tar xvzf apache-tomcat-10.1.7.tar.gz cd apache-tomcat-10.1.7/bin ./startup.sh |
E. Tomcat 테스트
Tomcat이 제대로 실행되었는지 확인하려면, 웹 브라우저를 열고 "http://localhost:8080/" 주소로 이동합니다.
Tomcat의 기본 페이지가 나타나면 Tomcat이 정상적으로 설치되었음을 의미합니다.
Ⅲ. Tomcat 로그 저장 위치
기본적으로 Tomcat은 로그를 $CATALINA_BASE는 Tomcat이 설치된 디렉토리를 나타냅니다.
Tomcat이 설치된 디렉토리($CATALINA_BASE/logs) 디렉토리에 저장합니다.
ex) Tomcat이 /usr/local/tomcat에 설치되었다면, 로그 파일은 /usr/local/tomcat/logs 디렉토리에 저장됩니다.
Tomcat이 시작될 때, 설치된 디렉토리($CATALINA_BASE)/bin/catalina.sh (또는 catalina.bat 윈도우 환경에서) 스크립트는 CATALINA_OUT 환경 변수에 지정된 파일에 표준 출력과 표준 오류를 리디렉션합니다. 기본적으로 이 파일은 설치된 디렉토리($CATALINA_BASE)/logs/catalina.out 입니다.
Tomcat은 다양한 로그 레벨을 지원합니다. 기본적으로 INFO 레벨 이상의 로그만 파일에 기록됩니다. 로그 레벨은 설치된 디렉토리($CATALINA_BASE)/conf/logging.properties 파일에서 수정할 수 있습니다.
Tomcat은 다양한 로그 파일을 생성할 수 있습니다. 예를 들어, 액세스 로그 파일은 설치된 디렉토리($CATALINA_BASE)/logs/access_log.*.txt 패턴으로 생성됩니다. 각 파일은 일정 시간 동안 생성된 액세스 로그를 포함합니다. 이 시간 간격은 설치된 디렉토리($CATALINA_BASE)/conf/server.xml 파일에서 수정할 수 있습니다.
Ⅳ. Tomcat 로그 유형
1) Access logs: 이 로그는 Tomcat 서버에 들어오는 모든 HTTP 요청에 대한 정보를 기록합니다. 각 요청에 대해 클라이언트 IP 주소, 요청 URI, HTTP 응답 코드, 요청 시간 등의 정보가 기록됩니다.
2) Catalina logs: 이 로그는 Tomcat 내부에서 발생하는 오류 및 경고와 같은 정보를 기록합니다. 예를 들어, 애플리케이션 초기화 오류, HTTP 연결 오류 등이 포함됩니다.
3) Manager logs: 이 로그는 Tomcat의 관리자 웹 애플리케이션에서 발생하는 이벤트 및 활동에 대한 정보를 기록합니다. 예를 들어, 애플리케이션 배치, 콘텍스트 수정, 애플리케이션 시작 및 중지 등이 포함됩니다.
4) Host-manager logs: 이 로그는 Tomcat의 호스트 관리자 웹 애플리케이션에서 발생하는 이벤트 및 활동에 대한 정보를 기록합니다. 호스트 관리자는 호스트 구성 파일을 수정하고 가상 호스트를 추가 또는 제거할 수 있습니다.
5) stdout 및 stderr logs: 이 로그는 Tomcat 실행 중에 발생하는 모든 표준 출력 및 표준 오류 메시지를 기록합니다. 이 로그는 주로 Tomcat 실행 파일 (catalina.sh 또는 catalina.bat)에서 정의된 $CATALINA_OUT 변수에 저장됩니다.
6) Garbage collection logs: 이 로그는 JVM의 가비지 수집 프로세스에 대한 정보를 기록합니다. 가비지 수집 로그는 메모리 누수 문제를 해결하는 데 도움이 될 수 있습니다.
위와 같은 로그를 적절하게 관리하여 Tomcat의 성능과 안정성을 유지하고 문제를 빠르게 해결할 수 있습니다.
Ⅴ. Tomcat 로그 실시간
1. Linux, Unix 계열 : 파일의 끝을 실시간으로 모니터링하고 싶을 때 'tail -f' 명령어를 사용합니다.
2. Windows 계열 : 'tail' 명령어가 기본적으로 제공되지 않지만, 대체할 수 있는 방법이 있습니다.
1) PowerShell의 Get-Content cmdlet 사용: PowerShell에서 Get-Content cmdlet을 사용하여 파일을 읽어들일 수 있습니다. 다음과 같은 명령어를 실행하면 파일의 마지막 부분을 표시하고, 이후에 파일이 변경되면 새로운 내용을 표시합니다.
Get-Content <파일 경로> -Wait
PS C:\Users\feccle> Get-Content D:\apache-tomcat-10.0.27\logs\localhost_access_log.2023-04-08.txt -Wait 127.0.0.1 - - [08/Apr/2023:08:51:56 +0900] "GET / HTTP/1.1" 200 11437 127.0.0.1 - - [08/Apr/2023:08:51:56 +0900] "GET /tomcat.svg HTTP/1.1" 200 68761 127.0.0.1 - - [08/Apr/2023:08:51:56 +0900] "GET /tomcat.css HTTP/1.1" 200 5895 127.0.0.1 - - [08/Apr/2023:08:51:56 +0900] "GET /bg-button.png HTTP/1.1" 200 713 127.0.0.1 - - [08/Apr/2023:08:51:56 +0900] "GET /asf-logo-wide.svg HTTP/1.1" 200 27530 127.0.0.1 - - [08/Apr/2023:08:51:56 +0900] "GET /bg-nav.png HTTP/1.1" 200 1401 127.0.0.1 - - [08/Apr/2023:08:51:56 +0900] "GET /bg-upper.png HTTP/1.1" 200 3103 127.0.0.1 - - [08/Apr/2023:08:51:56 +0900] "GET /bg-middle.png HTTP/1.1" 200 1918 127.0.0.1 - - [08/Apr/2023:08:51:56 +0900] "GET /favicon.ico HTTP/1.1" 200 21630 127.0.0.1 - - [08/Apr/2023:08:54:45 +0900] "GET / HTTP/1.1" 200 11437 127.0.0.1 - - [08/Apr/2023:08:54:45 +0900] "GET / HTTP/1.1" 200 11437 127.0.0.1 - - [08/Apr/2023:08:54:46 +0900] "GET / HTTP/1.1" 200 11437 127.0.0.1 - - [08/Apr/2023:08:54:47 +0900] "GET / HTTP/1.1" 200 11437 127.0.0.1 - - [08/Apr/2023:08:54:47 +0900] "GET / HTTP/1.1" 200 11437 127.0.0.1 - - [08/Apr/2023:08:54:47 +0900] "GET / HTTP/1.1" 200 11437 127.0.0.1 - - [08/Apr/2023:08:54:47 +0900] "GET / HTTP/1.1" 200 11437 127.0.0.1 - - [08/Apr/2023:08:55:50 +0900] "GET / HTTP/1.1" 200 11437 127.0.0.1 - - [08/Apr/2023:08:55:52 +0900] "GET / HTTP/1.1" 200 11437 127.0.0.1 - - [08/Apr/2023:08:55:54 +0900] "GET /docs/config/ HTTP/1.1" 200 6920 127.0.0.1 - - [08/Apr/2023:08:55:54 +0900] "GET /docs/images/tomcat.png HTTP/1.1" 200 5103 127.0.0.1 - - [08/Apr/2023:08:55:54 +0900] "GET /docs/images/asf-logo.svg HTTP/1.1" 200 20712 127.0.0.1 - - [08/Apr/2023:08:55:54 +0900] "GET /docs/images/docs-stylesheet.css HTTP/1.1" 200 6082 127.0.0.1 - - [08/Apr/2023:08:55:54 +0900] "GET /docs/images/fonts/fonts.css HTTP/1.1" 200 1996 127.0.0.1 - - [08/Apr/2023:08:55:54 +0900] "GET /docs/images/fonts/OpenSans600.woff HTTP/1.1" 200 22604 127.0.0.1 - - [08/Apr/2023:08:55:54 +0900] "GET /docs/images/fonts/OpenSans700.woff HTTP/1.1" 200 22748 127.0.0.1 - - [08/Apr/2023:08:55:54 +0900] "GET /docs/images/fonts/OpenSans400.woff HTTP/1.1" 200 21956 127.0.0.1 - - [08/Apr/2023:08:55:54 +0900] "GET /docs/images/fonts/OpenSans400italic.woff HTTP/1.1" 200 21092 |
2) Wintail: Wintail은 유명한 Linux 'tail' 명령어를 Windows에서 사용할 수 있도록 해주는 오픈소스 프로그램입니다.
다음과 같은 링크에서 Wintail을 다운로드하여 사용할 수 있습니다.
다운로드 사이트 URL : https://sourceforge.net/projects/wintail/
3) BareTail: BareTail은 Windows에서 기본적으로 제공되는 로그 파일을 실시간으로 모니터링할 수 있는 프로그램 입니다. 다음과 같은 링크에서 BareTail을 다운로드하여 사용할 수 있습니다.
다운로드 사이트 URL : https://www.baremetalsoft.com/baretail/
3. 실시간 로그 보기 중단 : Ctrl + C
Ⅵ. Tomcat 보안
A. 기본적으로 Tomcat은 $CATALINA_BASE/webapps/manager 및 $CATALINA_BASE/webapps/host-manager 디렉토리에 관리자 웹 애플리케이션을 제공합니다. 이러한 웹 애플리케이션은 인증 없이 액세스할 수 있습니다. 따라서 $CATALINA_BASE/conf/tomcat-users.xml 파일에서 사용자를 설정하고 암호를 지정하여 관리자 웹 애플리케이션에 대한 액세스를 제한해야 합니다.
B. SSL은 네트워크 트래픽을 암호화하여 중간자 공격을 방지할 수 있습니다. SSL을 사용하려면 SSL 인증서를 구입하거나 자체 서명 인증서를 생성해야 합니다.
C. $CATALINA_BASE/conf/web.xml 파일에서 보안 제약사항을 설정할 수 있습니다. 예를 들어, secure 요소를 true로 설정하면 HTTPS 프로토콜을 통해만 액세스할 수 있습니다.
D. Tomcat 실행 계정에만 필요한 최소한의 권한을 부여하고 Tomcat의 실행 파일과 구성 파일을 읽기 전용으로 설정해야 합니다.
E. Tomcat 의 신규 취약점이나 기존 취약점에 대해서 영향도 확인 및 조치
F. Tomcat 소프트웨어 버전 최신화
'어플리케이션' 카테고리의 다른 글
PHP 보안설정에 대해 알아보겠습니다. (0) | 2023.05.01 |
---|---|
SCP( Secure Copy) 에 대해 알아보겠습니다. (0) | 2023.04.28 |
암호기술에 대해 알아보겠습니다. (0) | 2023.02.13 |
소프트웨어 테스트에 대해 알아보겠습니다. (0) | 2023.01.26 |
httpd.conf 에 대해 알아보겠습니다 (0) | 2023.01.22 |