Cent OS 7 서버 세팅 5편 - 아파치 톰캣 연동(mod_jk)

박성환·2021년 7월 9일
0

Cent OS 7 서버 세팅

목록 보기
5/6

1. 연동할 때 필요한 패키지 설치

mod_jk를 설치하기 위해 gcc, gcc-c++, httpd-devel 세 가지 패키지가 필요합니다.

# yum -y install gcc gcc-c++ httpd-devel

2. 톰캣 커넥터 설치

http://tomcat.apache.org/download-connectors.cgi
위 주소에 들어가서 톰캣을 다운한 것 처럼 JK 1.2.48 Source Release tar.gz을 우클릭하고 링크 주소 복사를 클릭합니다.

/usr/local 경로에 다운받습니다.

# cd /usr/local
# wget https://mirror.navercorp.com/apache/tomcat/tomcat-connectors/jk/tomcat-connectors-1.2.48-src.tar.gz

tomcat-connectors-1.2.48-src.tar.gz 파일이 다운된 것을 확인할 수 있습니다. tar 명령어를 통해 압축을 해제합니다.

# tar -zxf tomcat-connectors-1.2.48-src.tar.gz

압축 해제 후 생성된 tomcat-connectors-1.2.48-src 폴더 안에 native 디렉토리로 들어가서 아래 명령어를 입력합니다.

# cd tomcat-connectors-1.2.48-src/native/
# ./configure --with-apxs=/usr/bin/apxs
# make
# make install

명령어를 다 실행하게 되면 mod_jk.so라는 파일이 생기게 됩니다. 해당 파일이 생성되었는지 확인합니다.

# ls /etc/httpd/modules/ | grep mod_jk

3. 아파치 설정 변경

연동을 위한 준비가 끝났습니다. 이제 아파치 설정을 변경하겠습니다.

# vi /etc/httpd/conf/httpd.conf
LoadModule jk_module modules/mod_jk.so
<VirtualHost *:80>
	ServerName localhost
  	JkMount /* tomcat
</VirtualHost>

위 코드를 httpd.conf 파일 맨 아래에 추가합니다.
VirtualHost *:80, ServerName 두 가지 정보를 통해 들어온 요청을 어떤 톰캣에서 처리할지 결정합니다.. 지금 설정은 80 포트로 들어오는 모든 요청을 tomcat으로 보내고 있습니다.

#EX) 아래 설명을 위한 코드 입니다.
LoadModule jk_module modules/mod_jk.so
<VirtualHost *:80>
	ServerName example.com
  	JkMount /*.do tomcat2
</VirtualHost>

만약 위와 같이 설정하게 되면 80포트로 들어오면서 요청 URL이 example.com이고, .do로 끝나는 것들만 tomcat2에서 처리하게 됩니다. (이건 안 하셔도 됩니다. 설명을 위한 예제입니다.)

<IfModule mod_jk.c>
	JkWorkersFile conf/workers.properties 
 	JkShmFile run/mod_jk.shm     
 	JkLogFile logs/mod_jk.log     
 	JkLogLevel info     
 	JkLogStampFormat "[%y %m %d %H:%M:%S] " 
</IfModule>

다시 연동으로 돌아와서 VirtualHost 부분 아래에 위 코드를 추가합니다. worker를 관리하는 파일인 workers.properties의 위치와 로그 파일의 위치 및 level을 설정하는 코드입니다.
위 코드를 /etc/httpd/conf.modules.d/mod_jk.conf 파일로 따로 설정하는 방법도 있지만 간혹 연동이 안되는 경우가 있어 httpd.conf 파일에 같이 넣는 편입니다.
이제 httpd.conf에서 할 작업은 끝났습니다. :wq로 나가주시면 됩니다.

# vi /etc/httpd/conf/workers.properties

위에서 설정한 JkWorkerFile 워커 경로에 workers.properties를 만듭니다.
그 후에 아래 내용을 추가해주세요.

worker.list=tomcat
worker.tomcat.port=8009 
worker.tomcat.host=localhost 
worker.tomcat.type=ajp13 
worker.tomcat.lbfactor=1
  • worker.list: 사용할 톰캣 이름 목록
  • worker.톰캣이름.port: 톰캣의 ajp 포트 번호(기본 값은 8009)
  • worker.톰캣이름.host: 톰캣이 위치하고 있는 IP 주소(아파치와 톰캣이 한 서버에 있다면 localhost)
  • worker.톰캣이름.type: 톰캣과 연결할 때 사용할 타입
  • worker.톰캣이름.lbfactor: 로드밸런싱할 때 사용함

4. 톰캣 설정 변경

이제 아파치에서 설정할 것들이 끝났습니다. 이제 톰캣에서 설정을 실행해보도록 하겠습니다.
톰캣의 conf/server.xml에 들어갑니다.

vi /usr/local/apache-tomcat-8.5.69/conf/server.xml


Connector 관련 부분의 주석을 풀어주고, 안에 내용을 아래와 같이 수정합니다.

 <Connector protocol="AJP/1.3"
	address="0.0.0.0"
        secretRequired="false"
        port="8009"
        redirectPort="8443" />

5. 연동 확인

이제 모든 설정이 끝났습니다. 톰캣과 아파치를 재시작하고 ip 주소를 입력하면 톰캣 화면이 나옵니다.

1개의 댓글

comment-user-thumbnail
5일 전

chatGPT보고 해도 안되는 연동을 이거보고 겨우 성공했네요!!
글 올려주셔서 너무 감사합니다

답글 달기