톰캣: 25개의 글
기존에 운영하던 서비스중에서 http 80 포트로 운영하던 서비스가 있었다. 해당 서비스에 SSL을 적용해야 하는 이슈가 발생하였는데, 특정 페이지에 대해서 SSL을 적용하는게 아닌 전체 사이트에 SSL을 적용하는것으로 방향을 잡고 진행하였다. 기존에 http로 접속하던 사용자들이 있기에, http를 통한 80포트 접근시 강제로 https로 전환되는 리다이렉트 처리가 필요했다. 어느 레벨에서 리다이렉트를 시킬까 생각하다가 그냥 편하게 apache에서 리다이렉트 하기로 결정하였다. 리다이렉트 처리는 httpd.conf 에서 설정하거나 하는데, 우리 회사는 httpd-vhost 를 사용하므로 해당 파일에 리다이렉트 구문을 추가하였다. 아래와 같이 리다이렉트 될 URL을 지정해 주면 된다. ServerAdmi..
지난번에 리눅스 시스템내에서 심볼링 링크를 생성하고 삭제하는 방법을 포스팅한적이 있다. 오늘은 Apache 와 Tomcat에서 심볼링 링크를 일반 디렉토리와 동일하게 읽을수 있도록 설정하는 방법을 포스팅하겠다. Apache와 Tomcat은 기본 설정으로는 심볼릭 링크를 읽지 못한다. 이는 보안 측면으로 기본설정에서 막아둔 것인데 간단한 옵션 설정을 통해 설정변경이 가능하다. 1. Tomcat $TOMCAT_HOME/conf/server.xml 파일을 열어 Context 구문에 allowLinking="true" 를 지정해 주면 된다. 2. Apache2 $APACHE_HOME/conf/httpd.conf 파일을 열어 태그 밑에 Options FollowSymLinks 를 지정해주면 된다. Options ..
예전에는 jsp 등과 같은 서블릿를 이용한 웹 서비스를 할때 보통 was 앞단에 httpd 서버를 두고 서비스를 했다. 물론 어디까지내 내 생각이긴 하지만 오래전 우리나라에서는 apache + tomcat, webtoB + jeus 조합이 가장 널이 사용되는 조합이었다. 지금은 톰캣의 성능이 많이 좋아져서, 사실 apache 등과 같은 httpd 를 두지 않아도 된다. 예를들어 xml, json 과 같은 동적 문서만을 서비스하는 경우 굳이 httpd를 사용할 필요는 없다. httpd를 연동 할것인가 아닌가는 서비스의 목적, 시스템 구성에 따라 고려해야 하는게 맞다. 개인적인 소견으로는 맹신적인 httpd + 서블릿 컨테이너의 조합은 옳지 않다. 그럼에도 불구하고 내가 apache와 tomcat을 실제 서..
한 서버내 서로 다른 서비스때문에 톰캣을 분리한다던지, 또는 로드밸런싱을 통산 부하분산을 목적 등으로 Tomcat을 다중으로 설치해야 할 일들이 있다. 오늘은 동일 서버내 tomcat을 다중으로 설치하는 방법에 대해 알아보자. 일단 설치에 앞서서, 동일 서버에서 tomcat 여러개를 사용하려면 내부 사용하는 port를 미리 정리할 필요가 있다. 이미 해당 서버에서 다른 port를 사용할 수 있으므로 설치 전에 정리해두면 도움이 된다. tomcat 이용시에는 1개의 톰캣에서 보통 3개의 port를 사용한다고 생각하면 된다. tomcat 내부 포트, apache 연동을 위한 ajp 포트, 서비스 포트 이다. 나는 아래와 같이 포트를 지정했다. tomcat_1tomcat_2server port (내부)8005..
리눅스에 아파치2.2를 설치해 보자. 일단 리눅스에 기본 httpd 가 설치되어 있지 않다고 가정하고 진행하도록 하겠다. 1. 아파치 다운로드 및 압축풀기-------------------------------------------------------------------------------------------------------------------------------[root@tourWeb1 ~]# cd /usr/local/src[root@tourWeb1 ~]# wget http://mirror.apache-kr.org//httpd/httpd-2.2.27.tar.gz[root@tourWeb1 ~]# tar zxvf httpd-2.2.27.tar.gz------------------------..
리눅스에서 Tomcat을 설치하는 방법은 아주 간단하다. 사실 설치라고 말하기에도 뭐한게, Tomcat 설치시에는 그냥 압축만 풀어주면 되니 따로 설치라고 표현할 것도 없다. 물론 서버 환경과 용도에 따라 최적의 상태로 설정값들을 바꾸기는 하지만, 뭐 그건 설치보다는 튜닝이라고 하는게 맞을듯 하다. 여튼, 리눅스에서 Tomcat을 설치했을때의 문제는 서버 부팅시에 Tomcat이 자동으로 실행되지 않는다는 것이다. 윈도우처럼 자동으로 서비스에 등록되고 실행되면 좋겠지만, 우리의 친절한 리눅스에게 그런거 따위 ... Tomcat을 자동 실행되게 하기 위해선 간단하게 아래와 같은 절차가 필요하다. 실행 스크립트 작성 -> run level 등록 1. 실행 스크립트 작성-----------------------..
운영중인 톰캣이 OutOfMemory를 뱉어내고 작동을 안하는 경우가 있다. 관제 시스템이 잘 갖춰진 운영 환경이라면, 담당자에게 바로 알림이 가고 특정 시간내에 처리가 가능하겠지만,그렇지 않은경우에는 의도치 않게 장애가 길어지게 된다. OutOfMemory가 발생된 후 톰캣이 실행중인데 작동 불능에 빠졌을경우 누군가 조치를 취해주지 않거나 톰캣 상태를 모니터링해주는 자동화된 도구가 없다면 어떻게 해야할까? 이럴때는 JVM 옵션을 이용하여 후속 조치가 가능하다. OnOutOfMemoryError 옵션을 이용할 경우 OutOfMemroy 발생 이후에 특정 동작을 지정할 수 있다. 톰캣 catalina.sh 파일의 CATALINA_OPTS 옵션에 "-XX:+HeapDumpOnOutOfMemoryError -..
서버를 운영하다보면 장애 대응을 위하여 여러가지 대비책을 세우게 되는데,Tomcat을 사용하는 곳에서 많이 이용하는것중 하나가 톰캣을 자동으로 시작 시킬수 있는 shell Script가 아닐까 싶다. 아래 스크립트는 톰캣의 PID와 개수를 확인하여 톰캣이 실행중이지 않을때 톰캣을 자동으로 시작시켜주는 쉘 스크립트 이다. * 주의 : 서버에 톰캣 1개만 설치되어 있다는 가정하에 작성 --------------------------------------------------------------------------------------------------------#!/bin/sh export JAVA_HOME=/usr/local/javaexport PATH="$PATH:$JAVA_HOME/bin"exp..
Tomcat에서는 특정 IP의 접근을 제한하거나, 허용할 수 있는 옵션을 제공한다. 물론 웹 서비스내에서 인터셉터 또는 필터링 등을 이용하여 IP를 체크한 뒤 걸러낼수는 있지만, 접근을 제한하는 IP등이 명확하다면 서비스단이 아닌 Tomcat 내부 설정에서 컨트롤 하는것이 운영하기에 더 편할때가 있다. Tomcat 내에서 IP를 허용/제한하는 방법은 Tomcat의 설정파일인 server.xml에서 .. 사이에 다음과 같은 내용을 추가하고 재시작 하면된다. [IP 허용] [IP 거부] 이밖에 Tomcat의 valve 컴포넌트에서는 다양한 옵션을 제공하는데, 추가로 정보가 더 필요한 사용자는 아래 URL 에서 확인이 가능하다. http://tomcat.apache.org/tomcat-7.0-doc/confi..
로컬환경으로 Tomcat을 이용하여 개발하다 보면 종종 세션이 끊길때가 있다. 물론 Tomcat 1개에 1개의 서비스만 올려서 사용중이라면 그럴일은 없겠지만, 여러 프로젝트를 여러개의 서비스에 올려서 개발할경우 종종 로그인이 끊어지는 경우가 있다. 여러개의 서비스 일지라도 1개의 서비스만 집중적으로 개발할 경우 그럴일은 없는데, 하루에 여러 프로젝트를 손대다보면 세션 끊김이 발생한다. 예를들어 로컬에서 개발시 A라는 프로젝트를 로그인을 한 후 B라는 프로젝트를 로그인 하면 A 프로젝트에서 로그인 했던 세션이 끊어진다. 해당 문제는 바로 JSessionID가 충돌하여 발생하는 문제라고 볼수 있다. JSessionID는 브라우저에서 로그인등을 통해 세션이나 쿠키등이 생성될경우 사용자의 고유정보를 갖고있는데,..