어플리케이션

Tomcat 에 대해 알아보겠습니다.

forward error correction Circle 2023. 4. 8. 09:20
반응형

Ⅰ. 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이 정상적으로 설치되었음을 의미합니다.

 

Apache Tomcat® - Apache Tomcat 10 Software Downloads

Welcome to the Apache Tomcat® 10.x software download page. This page provides download links for obtaining the latest version of Tomcat 10.1.x software, as well as links to the archives of older releases. Unsure which version you need? Specification versi

tomcat.apache.org

 

Ⅲ. 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/

 

Tail for Windows

Download Tail for Windows for free. Windows visual tail for log and text files. WinTail is a freeware Tail for Windows tool, capable of simulating the LINUX / UNIX tail command, including extra features offered by the Windows GUI concept. Includes features

sourceforge.net

   3) BareTail: BareTail은 Windows에서 기본적으로 제공되는 로그 파일을 실시간으로 모니터링할 수 있는 프로그램                      입니다. 다음과 같은 링크에서 BareTail을 다운로드하여 사용할 수 있습니다.

        다운로드 사이트 URL : https://www.baremetalsoft.com/baretail/

 

Bare Metal Software > BareTail - Free tail for Windows

BareTail Release 3.50a 2006-11-02 What's new? Win32 (Windows 95, 98, ME, NT, 2000, XP, 2003, Vista) Free Version - baretail.exe (220k) Licence - Startup splash screen cannot be disabled Registered Version - Only $US 25 Licence - Option to disable startup s

www.baremetalsoft.com

  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 소프트웨어 버전 최신화

반응형