작성자의 개인 Study 후 오류 없는 셋팅을 위해 정리 용도로 작성됨을 안내드립니다.
이번 Step에서는 아파치와 톰캣을 연동하는 방법을 작성하겠습니다.
Apache
정적인 데이터를 처리하는 웹서버로 흔히 클라이언트가 HTML, JPG, Resource 파일 같은 변하지 않는 파일을 요청하면 Apache는 해당 파일을 클라이언트에게 응답을 하는 소프트웨어.
Tomcat
Tomcat은 WAS(Web Application Server)로 불리며 동적인 데이터 즉 어떠한 요청에 따른 DB를 조회하고 계산하여 제공하는 등 다양한 역할을 수행하는 소프트웨어.
흔히 웹을 구성할 때 Apache + Tomcat을 결합하여 사용합니다. 그 이유는 Tomcat은 주로 동적인 데이터를 처리 하기 때문에 많은 리소스를 필요로 하여 많은 요청이 들어오면 부하가 걸릴 수 있는 반면 Apache는 정적인 데이터를 전달함으로써, 상대적으로 적은 리소스를 잡아 먹기 때문입니다. 이둘을 연동함으로써 정적인데이터를 요청했을 경우 Apache가 처리한 후 클라이언트에게 전달하고, 동적인 데이터를 요구하는 경우에는 Apache가 Tomcat에게 클라이언트의 요청을 전달하고 Tomcat이 요청에 따른 동적인 데이터를 만든 후 그것을 Apache에게 전달 Apache는다시 클라이언트에게 전달함으로써 좀 더 효율적으로 서버를 운영할 수 있습니다.
Apache, Tomcat설치는 이전 Step에서 다뤘으므로 생략 하도록 하겠습니다.
1. mod_jk 설치
먼저, mod_jk를 설치하기 전에 gcc, gcc-c++, httpd-devel 3가지의 패키지를 설치해야 합니다.
yum -y install gcc gcc-c++ httpd-devel
이제 톰캣 사이트에 들어가서 tomcat connector를 다운받아 줍니다
Download -> Tomcat Connecotrs -> JK ~~~~~~.tar.gz 우클릭 -> 링크 주소복사
다운받을 디렉토리 위치로 이동 후 파일을 아래 명령어로 다운로드 합니다
wget -c [복사한 링크주소]
다운로드 받은 파일을 압축해제 합니다
tar -zxvf [다운받은파일명]
해당 파일을 관리하기 편한곳으로 이동
cd [파일명] /usr/local/lib
native 경로로 이동
cd /usr/local/lib/[Connector디렉토리]/native
apxs 경로 찾기
apxs : Apache 확장기능 설치를 도와주는 유틸리티의 경로
find / -name apxs
make파일 생성
# native 경로에서 해야함
./configure --with-apxs=[apxs경로]
make 명령어로 컴파일 완료 후 make install을 실행
make && make install
mod_jk 설치확인
ll /etc/httpd/modules/ | grep mod_jk
selinux 보안관련 설정
chcon -u system_u -r object_r httpd_modules_t /etc/httpd/modules/mod_jk.so
2. Apache 설정
2-1 httpd.conf 설정 변경
# vi /etc/httpd/conf/httpd.conf
# 맨 아래 추가
LoadModule jk_module modules/mod_jk.so
<VirtualHost *:80>
ServerName localhost
JkMount /* tomcat
</VirtualHost>
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에서 처리하게 됩니다. (이건 안 하셔도 됩니다. 설명을 위한 예제입니다.)
그 다음 worker를 관리하는 worker.properties의 위치와 로그파일 및 level을 관리하는 코드를 맨아래에 또 추가합니다.
해당 코드를 mod_jk.conf 파일로 따로 설정하는 방법도 있지만 간혹 연동이 안되는 경우가 있어 httpd.conf 파일에 같이 넣는 편입니다.
<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>
이제 httpd.conf에서 할 작업은 끝났습니다. :wq로 나가주시면 됩니다.
2-2 workers.properties 설정
# vi /etc/httpd/conf/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: 로드밸런싱할 때 사용함
2-3 Tomcat 설정
# vi /usr/local/apache-tomcat-8.5.69/conf/server.xml
<Connector protocol="AJP/1.3"
address="0.0.0.0"
secretRequired="false"
port="8009"
redirectPort="8443" />
AJP Connector 관련부분 주석을 해제하고 위와 같이 코드를 변경합니다.
3. 연동확인
위와 같이 포트를 입력하지 않아도 호출이 되면 정상적으로 셋팅 된 것 입니다.
막히는 부분은 댓글로 문의주시면 답변 드리겠습니다.
감사합니다.
출처
https://it-serial.tistory.com/72
'Linux > 서버셋팅(Study)' 카테고리의 다른 글
리눅스 서버 셋팅 Step8 - 웹사이트 Let's Encrypt + SSL 적용 (0) | 2022.06.06 |
---|---|
리눅스 서버 셋팅 Step6 - Tomcat Instance 여러개 띄우기 (0) | 2022.04.16 |
리눅스 서버 셋팅 Step5 - Tomcat 설치 (0) | 2022.04.12 |
리눅스 서버 셋팅 Step4 - FTP 설치 (0) | 2022.04.10 |
리눅스 서버 셋팅 Step3 - Apache 설치 (1) | 2022.04.10 |