본문 바로가기
programming_kr/other

window 환경 tomcat + apache 연동하기

by JSsunday 2022. 11. 19.
728x90

 

 

이번에는 window 환경에서 tomcatapache를 연동해보겠습니다.

 

1. 필요 프로그램 설치

 

우선 tomcat, apache, jk_mok을 다운받습니다.

 

tomcat 다운로드

 

apache 다운로드

 

mod_jk 다운로드

 

다운받은 파일들을 압축풀고 mod_jk.so 파일을 복사하고

 

Apache 폴더의 modules 하위에 복사를 합니다.

 

Apache 경로안에 있는 폴더 중 아래를 중요하게 보시면 됩니다.

  •  bin : 아파치 실행관련 파일
  • conf : 아파치 설정관련 파일
  • htdocs : 정적인 파일 
  • logs : 아파치 관련 로그 파일 
  • modules : 모듈 관련 파일 (Tocat과 연동을 위한 모듈 포함)

이어서 Apache 폴더에 있는 conf 폴더로 들어가 httpd.conf 파일을 수정합니다.

 

2. Apache 설정

 

아피치의 포트 설정을 하기 위한 단계로 저는 80 port를 사용합니다.

 

 SeverName을 설정을 하기위한 단계로 저는 localhost를 사용하기 때문에 localhost로 지정했습니다. 

 

 이부분은 아파치의 DoucumentRoot를 설정하는 단계입니다. 톰캣에 요청을하면 htdocs에서 해당 파일을 찾게 됩니다. 

 

3. mod_jk 모듈 설정

 

mod_jk 란?

mod_jk는 Apach와 Tomcat을 연동을 할때는 프로토콜을 이용합니다. 이때 사용하는 프로토콜은 AJP를 사용합니다.
Apach는 Tomcat에 요청하고자 할때는 이러한 AJP프로토콜은 통하여 요청을하고 그에 대한 Response를 받습니다. 이러한 연동을 도와
주는 모듈을 mod_jk라고 합니다.

 

httpd.conf 파일에 아까 복사했던 mod_jk.so 파일을 불러올 수 있게 LoadModule 기능을 추가합니다.

그리고 저는 mod_jk.conf 파일을 따로 생성해서 mod_jk 설정을 추가하겠습니다. 곧 생성할 mod_jk.conf 파일을 불러올 수 있게 include conf/mod_jk.conf 라인을 추가합니다.

 

그리고 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 /*.do workers1
  • 모든 url의 요청은 workers1에서 처리되도록 보냅니다.(/*.jsp, /*.php와 같은 형태도 가능합니다.)
  • workers1은 worker.properties 파일에 명시된 alias입니다.
  • workers.properties의 worker.list 이름으로 작성합니다.

 

이어서 workers.properties파일을 생성하고 아래와 같이 작성합니다.

worker.list=workers1
worker.workers1.port=8009
worker.workers1.host=localhost
worker.workers1.type=ajp13

설정한 내용에 대해 자세히 알아보겠습니다.

 

worker.list=workers1
  • worker.list : 사용할 톰캣의 리스트입니다. workernas1은 alias의 개념으로 생각하면 됩니다.

 

worker.workers1.port=8009
  • 포트 번호는 사용 중인 톰캣의 server.xml에서 AJP 프로토콜 설정이 되어있는 포트 번호를 입력해야 합니다.
  • apache 서버가 JkMount에 설정한 경로에 대해 8009 포트로 넘겨줍니다.

tomcat의 server.xml

※ 위 프로퍼티에 secretRequired="false"를 추가해줍니다. default가 "true"이기 때문에 "true"로 하게 될 경우 추가적으로 설정이 필요합니다.

 

worker.workers1.host=localhost
  • apache가 설치된 아이피 또는 localhost를 입력합니다.

 

worker.workers1.type=ajp13
  • ajp13은 ajp 프로토콜을 의미합니다.

설정이 완료되면 아래 명령어로 apache 서버를 설치, 실행시킵니다.

명령프롬포트(관리자 권한실행) -> ${아파치 위치}\Apache24\bin 로 이동 

1. httpd -k install (설치)
2. httpd -k start (시작)
3. httpd -k stop (중지)
4. httpd -k restart (재실행)

저의 경우는 1 -> 2로 진행했습니다.

실제로 서버를 중지할 때는 3번 명령어를 사용하면 되고 설정을 변경해 재실행하려면 4번 명령어를 사용하면 됩니다.


위의 명령어로 apache를 실행하고 tomcat을 실행합니다. (차례로)

 

저는 /*.do 요청에 대해서는 was에서 처리하고 나머지 요청에 대해선 apache에서 처리하게 설정했습니다.

 

AppController.java

위 controller에서 index.jsp 파일을 찾습니다.

경로
index.jsp
test.js

 

index.jsp 파일의 test.js는 apache의 documentRoot 경로에서 가져옵니다.

 

따라서 *.do request에 대해선 apache가 ajp프로토콜을 이용해 tomcat 서버로 request를 넘기고 나머지 request에 대해선 apache 서버가 처리하게 됩니다.

 

apache + tomcat 연동하는 방법이었습니다.

728x90

'programming_kr > other' 카테고리의 다른 글

로드밸런싱과 클러스터링  (0) 2022.11.05
OAUTH 2.0 이란?  (0) 2022.10.22
REST API란?  (0) 2022.09.03
애자일(Agile Methodology) 방법론이란?  (0) 2022.08.11
DevOps란?  (0) 2022.08.08

댓글