톰캣: 25개의 글
일반적으로 톰캣을 구동하고 종료하는 명령어는 $TOMCAT_HOME/bin/ 에 있는 startup.sh 와 shutdown.sh 이다. 그런데 리눅스 서버에서 톰캣을 운영하다 보면 종종 어이없는 일이 발생을 한다. 그중에 하나가 shutdown.sh 명령을 실행했음에도 불구하고 톰캣이 죽지 않는 상황이 발생할 때가 있다. 물론 이 경우 리눅스에서 PID를 확인 한 후에 kill -9 명령어를 통해 톰캣 프로세스를 종료시킬 수는 있으나 매번 이렇게 종료시키에는 귀찮음이 따른다. 이럴때는 CATALINA_PID를 이용하여 shutdown.sh에 force 옵션을 사용하면 된다. CATALINA_PID를 지정하게 되면 톰캣이 구동될때 프로세스ID를 해당 파일에 기록하게 되며, shutdown시 해당 PID를..
지난번에 리눅스 시스템내에서 심볼링 링크를 생성하고 삭제하는 방법을 포스팅한적이 있다. 오늘은 Apache 와 Tomcat에서 심볼링 링크를 일반 디렉토리와 동일하게 읽을수 있도록 설정하는 방법을 포스팅하겠다. Apache와 Tomcat은 기본 설정으로는 심볼릭 링크를 읽지 못한다. 이는 보안 측면으로 기본설정에서 막아둔 것인데 간단한 옵션 설정을 통해 설정변경이 가능하다. 1. Tomcat $TOMCAT_HOME/conf/server.xml 파일을 열어 Context 구문에 allowLinking="true" 를 지정해 주면 된다. 2. Apache2 $APACHE_HOME/conf/httpd.conf 파일을 열어 태그 밑에 Options FollowSymLinks 를 지정해주면 된다. Options ..
나같은 경우 로컬 개발환경이나 테스트 서버의 경우 수많은 프로젝트들이 존재한다. 운영환경도 아닌 개발 및 테스트 환경에서 프로젝트가 추가될때마다 톰캣을 추가하는것은 사실 불필요하다. 어차피 내부 개발인력과 테스터 인력들만이 접속해서 확인할텐데 그때마다 톰캣을 새로 추가하는것은 오히려 리소스 낭비이다. 그래서 나는 로컬이나 테스트서버의 경우 1개의 톰캣에 3~4가지의 서비스들(프로젝트들)을 올려서 사용한다. 톰캣에 여러 서비스를 올리는것은 간단하다. TOMCAT_HOME/conf/server.xml 에서 service 부분을 추가해 주면 된다. [server.xml] 이때 주의할점은 크게 다음과 같다. 1. Service Name 과 Engine Name은 서로 동일해야 한다 2. Connector por..
개발을 하는 어느날 연계사로부터 새로운 모듈을 받았다. 해당 모듈을 적용할때 주의사항은 단 하나. WEB-INF/lib 또는 TOMCAT_HOME/lib 에 해당 모듈을 넣지말고 별도로 classpath에 적용할것. 그래서 별 생각없이 개발PC(윈도우) CLASSPATH 에 해당 모듈을 추가하고 커맨드창에서 모듈을 실행하니 잘 나온다. 그런데 해당 모듈을 웹 프로젝트에 적용하니 모듈 호출이 안된다. 어라? 내가 뭘 잘못했나 한참을 생각했다. 결국은 톰캣 자체 CLASSPATH에 추가를 한 뒤 해결할 수 있었으나 이 찜찜함. 그래서 열심히 구글링을 해 본 결과 톰캣은 OS 환경변수를 그냥 무시해 버린단다. 어찌되었든 톰캣 TOMCAT_HOME/bin/catalina.sh(bat) 파일에 CLASSPATH를..
개발은 윈도우(로컬PC), 서비스 운영은 리눅스일때 가장 문제가 되는것은 OS 캐릭터셋의 다름에 의한 문제이다. JVM을 구동시키는 캐릭터셋이 다를경우 파일 입출력, 한글 byte 계산등에서 문제가 발생한다. 윈도우의 경우 캐릭터셋으로 MS949를 사용하고, 리눅스는 설치 환경마다 다르지만 요즘 추세대로 UTF-8을 이용한다. 서로 다른 캐릭터셋을 하나로 통일시켜주는것이 오류도 적으니 개발PC의 톰캣 설정을 서버 환경처럼 UTF-8로 맞추자. 캐릭터셋을 맞추는 가장 핵심은 톰캣을 구동시키는 JVM의 파라미터 옵션을 두면 된다. 아래와 같이 크게 3가지 파라미터를 옵션해 주가해 주면 된다. -Dfile.encoding=UTF-8 -Dfile.client.encoding=UTF-8 -Dfile.encodin..