티스토리 뷰
Apache, Tomcat 연동
1. 연동 방식
연동 방식은 mod_jk, mod_proxy, mod_proxy_ajp 세가지 방식이 존재합니다. 이 세가지를 간단하게 설명하자면, 아래와 같은 특징이 있습니다.
mod_jk
- URL이나 콘텐츠별로 유연한 매핑 가능(이미지 등 정적 콘텐츠는 웹서버, 서블릿은 Tomcat에서 처리)
- 전용 바이너리 프로토콜이므로 mod_proxy보다 빠른 경우가 있다.
- 별도의 모듈을 설치해야 됨.
mod_proxy, mod_proxy_ajp
- 별도의 모듈 설치가 필요없고 설정이 간편하다.
- 특정 WAS에 의존적이지 않다.(모든 WAS에 적용 가능)
이 글에서는 mod_jk를 이용한 연동 설정만 다루겠습니다.
2. 연동 방법
2-1. Apache, Tomcat 설치
저는 CentOS 7.6.1810에 기본 설치된 Apache 2.4.39를 사용했습니다. 아파치의 기본 포트는 80포트로 설정되있습니다.
Tomcat은 https://tomcat.apache.org/download-90.cgi 에서 받거나,
터미널에서
wget -C tar.gz의 링크주소
위 명령어를 통해 받을 수 있습니다.
저는 최신 버전인 Tomcat 9.0.22를 사용했습니다.
2-2. mod_jk 설치
CentOS에서 mod_jk를 설치하려면 gcc, httpd-devel 패키지가 설치되있어야 합니다.
yum install gcc httpd-devel
위 명령어를 사용하여 설치해주시기 바랍니다.
설치 후, Tomcat Connector를 다운받아야 합니다.
https://tomcat.apache.org/download-connectors.cgi 에서 다운 받거나,
아래 명령어를 통해서 다운받아주시기 바랍니다.
curl -O http://mirror.navercorp.com/apache/tomcat/tomcat-connectors/jk/tomcat-connectors-1.2.46-src.tar.gz
터미널에서 다운 받은 디렉토리로 이동 후, 아래 명령어를 통해 압축을 풀어주세요.
tar zxvf tomcat-connectors-1.2.46-src.tar.gz
압축을 해제하고 cd 압축해제위치/native 명령어로 이동합니다. 그리고 다음 명령어를 실행해주세요.
./configure --with-apxs=/usr/sbin/apxs
apxs의 경로가 다를 수 있으니 which apxs
를 통해서 꼭 확인해주세요.
위 명령어가 정상적으로 실행됐다면, 마지막으로 아래와 같이 make
, sudo make install
명령어를 실행합니다.
make
sudo make install
정상 수행이 되면, /etc/httpd/modules/
경로에 mod_jk.so
가 생성됩니다.
2-3. 톰캣 설정하기
톰캣을 추가로 설정하기 보다는 기존의 설정 확인만 하면 됩니다.
톰캣 설치 경로에서 conf안에 server.xml을 열어서 주세요.
vi 톰캣 설치 경로/conf/server.xml
# 위 명령어를 통해 에디터를 열은 후 다음과 같은 설정 부분이 있는지 확인합니다.
<!-- Define an AJP 1.3 Connector on port 8009 -->
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
# 주석은 없어도 됩니다. 포트 번호가 8009인지 확인합니다.
# 아예 위 부분이 주석처리 되있다면 해제해주세요.
2-4. 아파치 설정하기
연동할 톰캣의 리스트를 나타낼 workers.properties 파일을 만듭니다.
위치는 아파치가 설치된 디렉토리/conf/
로 정하겠습니다.
cd /etc/httpd/conf/
여기서 vi workers.properties
명령어를 통해 에디터를 열고 아래와 같이 입력합니다.
worker.list=worker1
worker.worker1.type=ajp13 #위에서 확인한 serverl.xml의 protocol과 일치해야됩니다.
worker.worker1.host=localhost
worker.worker1.port=8009 #위에서 확인한 server.xml의 port와 일치해야됩니다.
위와 같이 입력하고 저장합니다.
다음 단계는 httpd.conf를 수정해야됩니다.
httpd.conf는 아파치가 설치된경로/conf/
밑에 존재합니다.
vi 아파치가설치된경로/conf/httpd.conf
명령어를 통해 에디터를 엽니다.
아래와 같이 입력해주세요. 저는 나중에 찾기 쉽도록 제일 밑에 입력하겠습니다.
#mod_jk.so 위치
LoadModule jk_module modules/mod_jk.so
#workers설정 파일 위치
JkWorkersFile conf/workers.properties
#log 위치
JkLogFile logs/mod_jk.log
#공유 메모리 파일 위치 selinux 보안때문에 run에 위치 필수
#Load balancing workers will not function properly 오류 대응, http의 권한
JkShmFile run/mod_jk.shm
#URL에 따른 요청 처리 설정
JkMount /* worker1
3. 확인
설정은 다 끝났고, 브라우저를 통해서 확인해보겠습니다.
톰캣 설치경로의 bin 디렉토리에서 ./startup.sh 실행 후, 아파치를 실행해주세요.
./startup.sh
sudo apachectl start
톰캣과 아파치 실행 후, 브라우저에서 http://localhost
로 이동했을 때, 톰캣 디렉토리의 Webapps/root/index.jsp
가 보이면 톰캣과 아파치 연동에 성공한겁니다.
참고
'Programming > server' 카테고리의 다른 글
[Linux] 로그 실시간으로 보는 명령어 - tail (0) | 2020.03.11 |
---|---|
413 Request Entity Too Large 오류 해결 방법 (2) | 2019.08.19 |
IIS + Tomcat 연동 (4) | 2019.07.19 |
Apache와 SpringBoot(Embedded Tomcat) 연동 (1) | 2019.07.15 |
- Total
- Today
- Yesterday
- lombok
- 빈팩토리
- 토비의스프링
- 쉘스크립트
- 연동
- StringBuilder
- shellscript
- final
- 스프링프레임워크
- mod_jk
- gradle
- jar 실행
- Tomcat
- 템플릿
- 빌드도구
- springboot
- IoC
- 애플리케이션컨텍스트
- 스프링
- apache
- JsonProperty
- java
- Spring
- EmbededTomcat
- stringbuffer
- JsonIgnore
- DI
- AOP
- 자바
- 413
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |