Server

아파치 톰캣 연동(Apache + Tomcat)

  • -
반응형

아파치와 톰캣(정확히는 아파치 톰캣)은 자바와 자바스크립트와 같이 서로 다른 개념으로 처음 개발을 접한 분들에게는 다소 혼란스러울 수 있습니다.

간단하게 두 차이를 정리한 입니다. 참고하시길 바라며 오늘은 아파치와 톰캣을 연동하는 방법에 대해 포스팅해보려 합니다.

 

※ 테스트 환경입니다.

  • Tomcat 7.0
  • Apache 2.4
  • Windows 10

아파치(Apache) 설치

1) 파일 설치

https://www.apachelounge.com/download/에 접속하여 자신의 PC에 맞는 파일을 다운 받는다.

 

내려받은 파일은 압축을 해제하고 Apache24 폴더를 C: 경로로 옮겨준다.

 

2) 서비스 등록

커맨드창을 실행하여 아래 명령어를 입력한다.

cd/

cd Apache24

cd bin

httpd.exe -k install

 

The 'Apache2.4' service is successfully installed. 라는 문구가 뜬다면 정상적으로 설치된 것이다. 아래 Errors 문구는 무시해도 된다.

 

액세스 허용.

 

3) 아파치 실행

C: 경로로 옮긴 Apache24 - bin 경로에 보면 ApacheMonitor.exe 라는 파일이 있다. 해당 파일을 실행한다.

 

파일을 실행하면 작업표시줄에 아파치 모니터 아이콘이 보인다.

 

실행 버튼을 클릭한다.

 

4) 테스트

localhost 또는 본인 PC 아이피를 입력 후 아래와 같은 화면이 뜬다면 성공!

아파치 설치시 기본 포트는 80으로 지정되어 있다. 때문에 포트 번호를 입력하지 않아도 된다.

이제 아파치와 톰캣을 연동해보자.

아파치 톰캣 연동

아파치와 톰캣을 연동하는 방법은 3가지가 있다.

  1. mod_jk(Tomcat connector)
  2. mod_proxy
  3. mod_proxy_ajp

 

본 포스팅에서는 관련 자료가 가장 많았던 mod_jk를 이용했다.

mod_jk는 톰캣의 AJP 프로토콜을 사용하여 아파치와 연동하는데 필요한 모듈이다.

(AJP : 아파치로 들어오는 요청을 위임할 수 있는 바이너리 프로토콜)

 

프로세스를 간단하게 설명하면, 사용자의 요청이 톰캣에서 처리해야하는 경우(서블렛을 필요로 하는 경우) 아파치는 AJP포트(기본 8009)에 접속해 요청을 전달한다. 톰캣은 아파치로부터 요청을 받아 처리 후 처리 결과는 아파치에게 되돌려준다. 이 때, 전달 역할을 하는 것이 mod_jk라는 것이다.

 

1) 파일 설치(mod_jk.so)

https://www.apachelounge.com/download/에 접속하면 페이지 하단에 mod_jk & isapi_redirect.dll 이 보인다.

자신의 PC에 맞는 파일을 다운 받는다.

다운 받은 파일은 C: 경로에 옮긴 Apache24 - modules 경로로 옮겨준다,

 

2) 설정 파일 생성

이제 몇 가지 설정이 필요하다.

먼저, 에디터(메모장, Editplus, Ultraedit,...)를 열어 mod_jk.conf , workers.properties라는 이름으로 파일을 만든다.

경로는 Apache24 - conf 로 해준다.

 

3) mod_jk.conf / workers.properties 작성

두 개의 설정 파일은 httpd.conf에서 임포트하여 사용된다. 따라서 반드시 설정 파일을 만들어 작성해야 하는 이유는 없다. 다만 관리 효율을 위해 따로 빼내어 관리하였다.

 

mod_jk.conf

JkLogFile "|bin/rotatelogs.exe -l logs/mod_jk_%Y%m%d.log 86400"
JkLogLevel  Info

JkLogStampFormat "[%a %b %d %H: %M: %S %Y]"
JkRequestLogFormat "%w %V %T"

JkWorkersFile  conf/workers.properties

JkMount /* workers1
JkLogFile "|아파치 설치 폴더/bin/rotatelogs.exe -1 logs/mod_jk_%Y%m%d.log 86400" 
JkLogLevel Info
  • 로그 파일을 생성한다.
  • 아파치 설치 폴더를 작성하지 않은 이유는 이후에 httpd.conf 설정 파일을 설명하면서 알아보자.
  • logs/mod_jk_%Y%m%d.log : logs라는 폴더에 mod_jk_20200203.log 와 같은 형태로 로그 파일을 만든다.
  • 86400 : 24시간 주기로 파일을 생성한다.
  • 로그 레벨은 Info

 

JkLogStampFormat "[%a %b %d %H: %M: %S %Y]"
  • JkLogStampFormat : 로그 포맷을 지정한다.
  • %a : 요일
  • %b : 월(month)
  • %d : 일(day)
  • %H:M:%S : 시, 분, 초
  • %Y : 년도(year) 
JkRequestLogFormat "%w %V %T"
  • JkRequestLogFormat : 아파치 서버에서 톰캣으로 요청이 넘어갈 때 로그가 저장된다.
  • %w : 톰캣 walker의 이름
  • %V : 요청한 도메인명
  • %T : 처리 시간(소수점 초 단위)
JkWorkersFile conf/workers.properties
  • worker 프로퍼티 설정 파일 경로를 지정한다.(worker는 톰캣 포트와 연결시켜주는 역할을 한다)
JkMount /* workers1
  • 모든 url의 요청은 workers1에서 처리되도록 보낸다.(/*.jsp, /*.php와 같은 형태도 가능하다)
  • workers1은 worker.properties 파일에 명시된 alias이다.

workers.properties

worker.list=workers1
worker.workers1.port=8009
worker.workers1.host=localhost
worker.workers1.type=ajp13
worker.list=workers1
  • worker.list : 사용할 톰캣의 리스트. workes1은 alias의 개념으로 생각하면 된다.
worker.workers1.port=8009
  • 포트 번호는 사용 중인 톰캣의 server.xml에서 AJP 프로토콜 설정이 되어있는 포트 번호를 입력해야 한다.

worker.workers1.host=localhost
  • 아파치가 설치된 아이피 또는 localhost를 입력한다.
worker.workers1.type=ajp13
  • ajp13은 ajp 프로토콜을 의미한다.

 

4) 설정 파일 임포트(httpd.conf)

이제 설정 파일을 httpd.conf에 임포트만 하면 종료이다.

httpd.conf 파일은 Apache24 - conf 경로에 있다.

임포트 전에 기본 설정값으로 몇 가지를 알고 넘어가야 하는 부분이 있다.

# least PidFile.
#
Define SRVROOT "c:/Apache24"

ServerRoot "${SRVROOT}"

#
# Mutex: Allows you to set the mutex mechanism and mutex file directory
# for individual mutexes, or change the global defaults
#
  • (37 ~ 40라인쯤)Define SRVROOT : 아파치의 설치 경로에 대한 문자열(변수)을 지정한 것이다. 아파치 설치 파일을 C: 경로로 옮긴 이유는 이 때문이다. 물론 사용자가 원하는 경로로 수정할 수 있다.
  • ServerRoot "${SRVROOT}" : ServerRoot 설정에 SRVROOT 변수를 대입하한다. 아파치 서버가 설치된 디렉토리 경로를 지정함으로써 앞서 생성한 mod_jk.conf에서 로그 파일,  worker 프로퍼티의 디렉토리 경로를 찾는데 사용된다. 이에 따라 아파치 설치 경로를 작성하지 않아도 된 것이다.

아파치의 기본 포트는 80이다.(57 ~ 60라인쯤)

# prevent Apache from glomming onto all bound IP addresses.
#
#Listen 12.34.56.78:80
Listen 80

#
# Dynamic Shared Object (DSO) Support

 

 

(185 ~ 190라인쯤) 1)에서 설치한 mod_jk.so 파일을 임포트 한다.

#LoadModule xml2enc_module modules/mod_xml2enc.so

LoadModule jk_module modules/mod_jk.so

<IfModule unixd_module>

 

(라인 끝지점) mod_jk.conf를 추가한다.

<IfModule jk_module>
Include conf/mod_jk.conf
</IfModule>

 

5) 테스트

설정이 끝나면 아파치 -> 톰캣 순으로 실행을 하고 주소창에 localhost를 입력해보자.

오른쪽이 톰캣의 8099 포트를 이용한 기존 페이지이며, 왼쪽이 아파치를 통해 접속된 페이지이다.

포트 번호 없이(:80) 입력했을 때 페이지 접속이 된다면 성공한 것이다.

 


+ 피드백은 언제나 환영입니다 :)

 

반응형

'Server' 카테고리의 다른 글

[WAS]POST 방식에서 파라미터 개수 제한  (0) 2020.05.26
아파치 SSL 설정  (5) 2020.02.05
[WAS]Tomcat SSL 적용  (0) 2020.02.03
hosts 파일  (0) 2018.12.02
WAS 그리고 Tomcat(+웹 서버와 차이점)  (0) 2018.05.04
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.