2015/07/31 13:59

apache + tomcat 연동관렵 다양한 팁 및 삽질 후기.. Server/WAS



정말 오랜만에 글을 남기는 것 같다.. 

어플리케이션 아키텍트로서 정신없이 지내다 보니,, 
다양한 상황 속에서 많은 경험을 쌓았지만 
기록하지 못한게 너무 많아 아쉽다는 생각이 많이 들었다.
바쁘다는 핑계 때문이지만... 

------------------

매번 apache + tomcat 연동에 ssl 설정 관련해서 
직접 작업하지는 않고 이런저런 자료를 던져주면서 
가이드만 했었다.. 

이번에 기회가 생겨 처음부터 끝까지 직접 작업을 하게 되었는데,
아 이게 절대 쉬운게 아니었구나. 라는 생각부터 든다..

지금까지 나에게 이거 관련해서 일 못한다고 타박받은 많은 개발자, 운영자 분들께 미안하단 말을....;;

-------------------

작업 (윈도우 서버)
1. jdk 설치 ( 1.4.2.11) 
2. tomcat 설치 ( 5.0.30)
3. apache 설치 (2.0.63, openssl 설치버전)
4. tomcat connector 설치 ( 1.2.28)
5. tomcat 두개 더 설치
6. apache virtual host 이용 tomcat 연동
7. ssl 설정 

크게 작업은 위와 같았다.. 
딱 이틀 걸려서 작업을 했는데.. 삽질 했던것들을 빼면 반나절 정도의 작업밖에 안되는거 같다.. 

--------------------

1. apache + tomcat 연동 ( connector 사용, mod_jk.so)

정말 구글에서 많은 자료를 찾아 보았다. 
하지만 내가 원하는 자료는 없었다.. 

나에게 문제는 일반적인 상황에서 연동하는 것이 아닌,
jdk 1.4 상황에서 tomcat과 apache 버전이 낮았을 떄 연동이 안되는 문제를 해결하는 것이었다.

처음에는 tomcat 5.5 + apache 2.2.30 으로 연동을 시도 했다. 
connector 버전은 1.2.28 버전.. 

서버도 올라왔지만 계속 에러가 난다.. 
:jk_ajp_common.c (2643): (ajp13) connecting to tomcat failed.
:jk_ajp_common.c (1630): (ajp13) connecting to backend failed. Tomcat is probably not started or is listening on the wrong port (errno=61)

위와 같은 에러다.. 

세팅을 아무리 뒤져도 포트 같은 설정은 잘 되어 있다,
물론 톰켓에 올려진 서비스 역시,, 톰켓 포트로 들어가면 잘 된다.. 

결국은 tomcat과 apache 버전, connector 버전을 변경하기로 결정,
과감하게 내려봤다..

그랬더니,, 바로 된다... ㅠ 
감동적이다.. 


2. 80 포트 점유 문제

해당 서버가 기존 테스트를 위해 IIS를 사용하고 있었다.
하지만 몰랐던 나는 80포트가 점유되어 있는 사실을 몰랐었다. 

apache를 설치 했더니, 80포트가 이미 점유 중이라는 메시지가 떠서
netstat -an 명령어를 통해 확인해보니 역시나 사용 중.. 

구글링을 해보니 간단히 해결책 찾음. 

Windows 7/Vista:
net stop was /y
or XP:
net stop iisadmin /y

( 참조 : http://www.sitepoint.com/unblock-port-80-on-windows-run-apache/ )


3. tomcat 개별 JAVA_HOME 설정 문제
정말 별거 아닌 건데,, 삽질 했다..
이유는 white space 때문..

다들 알다시피 보통 윈도우 서버라면 환경설정에 JAVA_HOME을 지정하고
path 설정해서 tomcat 사용시 별도로 JAVA_HOME을 지정해 사용하지 않는다. 

하지만, 한 서버에 다양한 java를 이용해 서비스를 해야할 경우,
컨테이너 별로 별도 java를 지정해주어야 할 수도 있다. 

그럴땐 tomcat / bin / catalina.bat 파일에 JAVA_HOME을 별도로 지정하면 된다. 

하지만 어떻게 지정해야 나같이 삽질을 안하느냐.. 

공백이 있으면 안된다.... 즉. 

set JAVA_HOME = C:\java 가 아니라
set JAVA_HOME=C:\java 


4. tomcat 5.5 버전에서 jdk 1.4 돌리는 방법
난 결국 apache 연동이 되지 않아 tomcat을 5.0.x로 변경을 했지만 
그냥 jdk 1.4 환경에 servlet 컨테이너가 필요한 경우라면 
tomcat 5.5.x 를 내려받아서 java 1.4를 돌릴수 있다.

단, 그냥 tomcat 5.5.x 를 받아 돌리기만 하면 안되고,
tomcat.apache.org 사이트에서 tomcat 받을 때, 
추가로 tomcat-compat 도 받는다.

그래서 압축을 풀어보면 몇개의 파일이 나오는데
해당 파일들을 설치한 tomcat 5.5 내 동일 폴더에 복사해 넣어주면 
jdk 1.4 어플리케이션도 정상적으로 tomcat 5.5에서 기동이 가능하다. 

(참고 : http://neucareer.tistory.com/68 )


5. tomcat root에 어플리케이션 배포 
디렉토리 deploy시 tomcat 내 root에 배포하기 위해서는 
server.xml 파일에 해당 디렉토리를 하드코딩 해 주어야 한다. 
( context root를 제외하고 싶은 경우.. )

HOST 태그 내에 아래와 같이 지정. 

<Context path="" docBase="c:/deploy/directory" reloadable="true"/> 

하지만 위와 같이 지정을 바로 하지 않고 아래와 같이 해서 또 삽질을... 

<Context path="/" docBase="c:/deploy/directory" reloadable="true"/>

path에 / 를 제외해야 root 배포가 된다.. 




덧글

댓글 입력 영역