Tagged: Tomcat

Tomcat 에러 정보 숨기기

Java 애플리케이션을 작성할때에 에러 발생시 보여줄 에러 페이지를 설정할 수 있습니다. 웹 애플리케이션 설정 파일인 web.xml 파일에 다음과 같이 해줍니다.

단순하게 HTTP 응답코드 뿐만 아니라 Java Exception 객체에 따른 에러도 설정할 수 있습니다.

하지만 이러한 것은 웹 애플리케이션 개발단계에서 설정을 하는 것인데, 이것 말고 서버단계에서 Tomcat 에러 정보 숨기기 를 할 수 있습니다.

Java Application 에러

Tomcat Server 정보 숨기기

에러가 발생했을때보면 Tomcat 서버의 정보가 함께 표시됩니다. 불필요한 정보 입니다. 이를 숨기거나 다른 것으로 서버단에서 바꿀 수 있습니다. $CATALINA_HOME/lib 디렉토리로 이동하고 다음과 같이 디렉토리를 만들어 줍니다.

그리고 다음과 같이 파일을 작성합니다.

그 다음 Tomcat 을 재시동 시켜 주면 적용이 됩니다.

HTTP Header 에 서버 배너 삭제

잘 모르는 이야기인데, 위에처럼 서버정보를 숨긴다 하더라도 다음과 같이 HTTP Header 에는 배너가 추가됩니다.

톰캣 HTTP Header 배너

Server 에 보면 “Apache-Coyote/1.1″ 가 나옵니다. 이는 다음과 같이 설정함으로써 안나오게 할 수 있습니다.

위에 보는 것처럼 Server=” ” 를 추가해주고 톰캣을 재시작하면 됩니다.

자세한 오류 정보 숨기기

오류가 발생하면 Tomcat 은 아주 자세한 정보를 보여줍니다. 여기에는 파일의 위치, Java 애플리케이션의 Stack trace 까지 다 나옵니다. 이를 막는 방법은 아주 간단합니다.

단, 이 방법은 Tomcat 7.0.55 이상 버전이여야 합니다.

Tomcat 은 여러가지 서버단에서 필터를 넣을 수 있습니다. Tomcat 의 동작에 여러가지 옵션을 넣거나 바꾸거나 하는 겁니다. 이를 필터라고 하지 않고 밸브(Valve)라고 하고 밸브를 통해서 여러가지 설정을 할 수 있는데, 자세한 오류 정보 숨기기도 밸브를 이용해서 가능합니다.

위에 보면 Host 설정안에 ErrorReportValve 를 설정하고 있습니다. 이렇게 설정을 한 후에 톰캣을 재시작 시켜주면 적용됩니다.

Tomcat 7 구조

이 문서는 Tomcat 7  구조 (Architecture) 에 관한 것입니다. 많은 부분을 “Apache Tomcat 7 More about the Cat” 을 참고 했습니다.

Tomcat 7 의 구조는 계층적 구조를 보이며 계층적으로 상속관계에 있습니다. 이를 다이어그램으로 표시하면 다음과 같습니다.

Tomcat Architecture
출처: http://www.ntu.edu.sg/home/ehchua/programming/howto/Tomcat_More.html

이 구조는 Tomcat 의 설정 파일에서도 그대로 나타납니다.

Tomcat 7 디렉토리 구조.

  • bin: Tomcat 의 바이너리 및 스크립트들.
  • conf: 모든 webapp 에 적용되는 글로벌 설정들.
  • lib: 모든 webapp 에서 활용가능한 JAR-file 들. 기본적으로 servlet-api.jar(Servlet), jasper.jar(JSP), jasper-el.jar(EL).
  • logs: 서버 로그 파일들이 있는 디렉토리. Catalina.{yyyy-mm-dd}}.log 는 엔진의 로그이며 localhost.{yyyy-mm-dd}.log 는 호스트 로그.
  • webapps: 디폴트 webapp
  • work: Tomcat 의 java 소스를 컴파일한 class 파일들을 모아놓은 디렉토리.
  • temp: 임시 파일들을  위한 디렉토리.

여기서 중요한 디렉토리는 conf 디렉토리로 Tomcat 의 운영과 webapp 에 영향을 주는 파일들로 총 7개가 있습니다.

  • catalina.policy : 이 파일은 Tomcat 7 에 대한 보안정책권한(Security Policy Permissions)들을 기술해 놓은 것입니다. 이것은 JVM 에 의해서 웹 애플리케이션에 강제적으로 보안정첵권한을 적용 합니다.
  • catalina.properties: 이 파일은 서버가 시작될때에 스캔되어질 필요가 있는 공유할 서버 정의, 공유할 로더, JARs를 가지고 있습니다.
  • server.xml: Tomcat 에서 매우 중요한 파일중 하나인데 서버의 IP 주소, 포트, 버추얼 호스트, 컨텍스트, 패스등과 같은 매우 중요한 정보를 가지고 있습니다.
  • tomcat-users.xml: 이 파일은 인증, 권한부여, 롤기반 정의에 사용될 수 있습니다. 인증을 위한 users/passwords/roles 의 데이터베이스나 컨테이너 관리 보안을 위해 사용되어집니다. 사용자를 추가/삭제나 존재하는 사용자에게 롤을 할당/비할당하기 위해서 이 파일을 편집하면 됩니다.
  • logging.properties: 이름에서 짐작했듯이, Tomcat 인스턴스의 로딩 속성들을 정의할 수 있습니다.
  • web.xml: 이것은 Tomcat 인스턴스에 의해서 로드되어 모든 웹 애플리케이션에 적용되어지는 기본 값들을 정의합니다. 만약 웹 애플리케이션이 자신만의 deployment 디스크립터를 가지고 있다며, 이 컨텐츠는 항상 기본 스크립터에 의해서 정의되어진 설정값을 오버라이드(override) 합니다.
  • context.xml: 이 파일의 내용들은 모든 애플리케이션에 로드됩니다. 세션 퍼시스턴스, Comet 접속 트래킹과 같은 파라메터 설정들을 할 수 있습니다.

Tomcat 7 설치

tomcat 이 문서는 리눅스 Tomcat 7 설치 에 관한 문서 입니다.

1. Tomcat 7 스펙

Tomcat 7 의 스펙은 다음과 같습니다.

  • Servlet: 3.0
  • JSP Spec: 2.2
  • EL Spec: 2.2
  • WebSocket: 1.1
  • Support Java Versions: 6 and later

Java 1.6 버전 이상이 필요 합니다. CentOS 7 이라면 다음과 같이 설치할 수 있습니다.

2. Download

다운로드는 Apache Tomcat 페이지에서 다운로드 한다.

3. 설치

설치는 압축을 해제하는 것으로 끝이 난다.

4. 테스트

Tomcat 7 에서는 환경을 테스트해 볼 수 있는 스크립트가 두가지 있습니다.

  • version.sh – 현재 Tomcat 7 에 대한 버전 정보가 나옵니다.
  • configtest.sh – Tomcat 7 의 설정파일에 문제가 없는지를 테스트 해줍니다.

configtest.sh 는 Tomcat 을 실행시키지 않는 상태에서 실행하는 것이 좋습니다.

5. 시작

 

Tomcat 8 설치.

tomcat

Tomcat 8 설치.

 

 

CentOS 7 에서는 OpenJDK 1.7 이 기본으로 탑재되어 있다. Java 7 에 대응하는 Tomcat 은 버전 8인데, 이에 대한 설치에 대한 것입니다.

Spec

Tomcat 8 의 스팩은 다음과 같다.

  • Servlet : 3.1
  • JSP Spec: 2.3
  • EL Spec: 3.0
  • WebSocket Spec: 1.1
  • Support Java Versions: 7 and later

Download

다운로드는 Apache Tomcat 페이지에서 다운로드 한다.

설치

설치는 압축을 해제하는 것으로 끝이 난다.

시작

웹에서 http://localhost:8080 으로 접속을 시도해 페이지가 뜬다면 정상이다.