본문 바로가기
카테고리 없음

[Linux] Apache와 Tomcat 연동

by 떵해이 2020. 12. 20.
300x250

Apache 웹 서버 설치 & Tomcat 설치를 사전에 하셔야합니다.

링크를 참조하시면 됩니다.

 

Tomcat은 단독으로 서비스를 할 수 있습니다. 그러나 Apache와 연동하여 사용하는 경우가 많습니다.

그 이유는 아래와 같이 여러가지 이유가 있습니다.

- 효율성, 일을 나눠서 할 수 있다. (예를 들면 정적 컨테츠의 경우 Apache의 서비스 속도가 빠름)

- Apache 웹 서버의 다양한 모듈 확장

- 보안 강화

 

연동할 방법은 3가지 방법이 존재한다고 합니다.

1. mod_jk     2. mod_proxy     3.mod_prox_ajp

저는 1번 방식만 사용해보았기 때문에 1번이 제일 쉽고, 많이 사용한다고 합니다.

 

대중적으로 1번방식으로 연동을 해보도록 하겠습니다.

저는 CentOS 7에서 그래픽 GUI모드로 진행하고, root(관리자)계정으로 실행하였습니다.

 

○ Apache 와 Tomcat 연동

● mod_jk 설치

 

먼저 mod_jk를 설치하기전에 gcc, gcc-c++, httpd-devel 3가지 패키지를 설치해야 합니다.

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

 

이제 톰캣 사이트를 들어가서 tomcat connectors를 다운받아 줍니다. (구글에서 그냥 쳐서 들어가도 됨)

사이트에 들어가서 왼쪽 상단에 메뉴바 버튼을 누릅니다.

Download탭 -> Tomcat Connectors -> JK ~~~~ tar.gz 우클릭 -> 링크 주소 복사 클릭

 

 

다운받을 디렉토리 위치로 이동 후 파일을 아래 명령어로 다운로드 합니다.

# wget -c https://downloads.apache.org/tomcat/tomcat-connectors/jk/tomcat-connectors-1.2.48-src.tar.gz

 

 

# ls 파일 리스트 확인

# tar -zxvf tomcat-connectors-1.2.48-src.tar.gz 압축 풀기

 

 

# ls 파일 리스트 확인

# mv tomcat-connectors-1.2.48-src /usr/local/lib 파일 다른 디렉토리로 이동

저는 파일을 관리하기 편하게 이동시킨 것입니다. root 홈 디렉토리는 아무나 들어올 수 없기도 합니다.

# cd /usr/local/lib 이동하여 # ls 파일이 잘 옮겨졌는지 확인

 

 

# cd tomcat-connectors-1.2.48-src 디렉토리 안으로 이동

# ls 파일 리스트 확인

# cd native 네이티브 디렉토리 안으로 이동

 

 

# find / -name apxs 명령어로 apxs 경로를 찾습니다.

Apache 확장기능 설치를 도와주는 유틸리티의 경로입니다.

 

# ./configure --with-apxs=/usr/bin/apxs Makefile을 생성하기 위한 명령어 입니다.

 

 

# make && make install

make 명령어로 컴파일 완료 후 make install을 실행시킬 수 있게 다중 명령어 사용

 

 

# ll /etc/httpd/modules | grep mod_jk

/etc/httpd/modules 디렉토리 안에 mod_jk 파일이 생성되었는지 확인을 할 수 있습니다.

 

 

이제 selinux의 보안 관련 설정을 변경해주어야 합니다.

# chcon -u system_u -r object_r -t httpd_modules_t /etc/httpd/modules/mod_jk.so

 

 

 Apache 설정

 

Apache의 설정은 설정 파일인 /etc/httpd/conf/httpd.conf 파일안에서 한다.

 

# vi /etc/httpd/conf/httpd.conf

명령어로 설정 파일을 vi 편집기로 열어봅니다.

 

 

# /LoadModule 입력하여 LoadModule을 찾기를 시전합니다.

엔터 후 n버튼을 통해 다음 찾기로 넘어갈 수 있습니다.

아래의 내용을 넣으시면 됩니다. 메모장에 복사해서 붙여넣으시면 됩니다.

 

LoadModule jk_module modules/mod_jk.so          // mod_jk.so 모듈 사용

<IfModule mod_jk.c>

JkWorkersFile conf/workers.properties                 // workers 설정 파일 위치 (아래에서 만듬)

JkShmFile run/mod_jk.shm                                   // 공유 메모리 파일 위치는 반드시

JkLogFile logs/mod_jk.log                                        Selinux 보안 때문에 run에 위치 해야함

JkLogLevel info                                                         // 로그 위치 & 로그 레벨 설정

JkLogStampFormat "[%y %m %d %H:%M:%S]"      // 로그 포멧에 사용할 시간 형식 지정

JkMountFile conf/uriworkermap.properties            // JkMount 설정 파일 위치 (아래에서 만듬)

</IfModule>

내용을 다 기입하셨으면 # :wq 명령어로 저장하고 나오시면 됩니다.

 

 

차례대로 위에서 언급한대로 workers 설정 파일 먼저 만들어보도록 하겠습니다.

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

명령어로 설정한 경로에 파일을 만들어줍니다.

원래 없는 파일이기 때문에 이름도 정확하게 똑같이 만들어야 합니다.

touch로 만들어도 상관없지만 어차피 내용을 입력해야하기 때문에

vi로 파일을 만들면서 파일 내용을 입력해보도록 하겠습니다.

 

 

아래의 내용을 입력 후 # :wq 명령어로 저장하시면 됩니다.

 

worker.list=contom      // 워커 이름은 본인이 설정하셔도 됩니다. (connect tomcat이란 뜻)

worker.contom.port=8009    // 워커 이름을 가운데 입력하시면 됩니다.

worker.contom.host=localhost     // 포트 번호와 타입은 아래에 설정을 참고하여 적어야 합니다.

worker.contom.type=ajp13

worker.contom.lbfactor=1    // tomcat인스턴스 부하 분산 지수, 균등하게 분산하려고 1로 설정

 

 

위에서 설정한 포트나 타입은 tomcat의 server.xml설정에 기인합니다.

# vi [톰캣경로]/conf/server.xml

# vi /usr/share/tomcat/conf/server.xml

 

 

이제 JkMount 설정 파일을 만들어보도록 하겠습니다.

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

위에서 설정한대로 파일명을 같이해서 파일을 만들어줍니다.

 

 

아래의 내용을 기입하시고 # :wq 명령어로 저장하고 나가시면 됩니다.

<VirtualHost *:80>

ServerName localhost

JkMount /*.jsp contom    // 위에서 워커의 이름 지정한대로 사용하시면 됩니다.

JkMount /*.json contom

JkMount /*.xml contom

JkMount /*.do contom

</VirtualHost>

 

 

이제 Apache와 Tomcat Document 위치를 맞추어 주도록 합니다.

# vi /etc/httpd/conf/httpd.conf 명령어로 설정 파일을 열어줍니다.

 

 

# /DocumentRoot 검색하여 찾아서 아래의 내용을 입력합니다.

DocumentRoot "/var/www" 되어 있는 것을 바꿔주고 아래의 내용을 추가로 입력합니다.

Document위치를 tomcat으로 맞춘 뒤 그 디렉토리에 권한을 추가해주는 내용입니다.

 

DocumentRoot "[톰캣 설치 경로]/webapps/ROOT"

DocumentRoot "/usr/share/tomcat/webapps/ROOT"

<Directory "/usr/share/tomcat/webapps/ROOT">     // 디렉토리에 권한을 추가

AllowOverride None

Require all granted

</Directory>

 

※ 조금 더 아래에 보면 <Directory "/var/www">있는 부분을

[줄수]yy 명령을 통해 복사를 한뒤 p명령으로 붙여넣을 수 있습니다.

(vi 수정모드 insert가 아닌 명령모드에서 하셔야 합니다.)

 

예시 5줄 복사면 커서를 복사를 하고 싶은 첫번째줄에 놓고 5yy누른 뒤에

붙이고 싶은곳으로 커서를 옮겨서 p를 누르면 붙여넣을 수 있습니다.

 

 

# /ServerName 을 검색하여 

ServerName localhost:80 을 추가해줍니다.

 

 

마지막으로 selinux설정을 합니다.

# chcon -R -t httpd_sys_rw_content_t [톰캣 경로]/webapps/ROOT

# chcon -R --type=httpd_sys_rw_content_t [톰캣 경로]/webapps/ROOT

똑같은 명령어인데 참고하시라고 적어놨습니다.

 

# chcon -R -t httpd_sys_rw_content_t /usr/share/tomcat/webapps/ROOT

 

 

# setenforce 0

selinux설정을 반영하는 명령어입니다.

 

 

이제 연동이 잘되었는지 확인만 하면 됩니다.

브라우저에 각각 쳐서 다 잘 실행이 되는지 확인해보도록 합시다.

물론 # systemctl start httpd 아파치가 실행되어야하고,

# systemctl start tomcat 톰캣이 실행되어야 합니다.

 

아마 대부분이 실행중이실 것입니다.

# systemctl status httpd

# systemctl status tomcat 서비스의 실행 여부를 확인하는 명령어 입니다.

netstat를 이용한 포트 확인 또는 ps를 이용한 프로세스 확인도 가능합니다.

 

 

잘 실행이 되고있으면 IP를 브라우저에 넣어 확인해보겠습니다. 본인IP에 localhost넣으셔도 됩니다.

# http://[본인IP] : 이렇게 넣으면 apache페이지가 실행됩니다.

 

 

# http://[본인IP]:8080 : 이렇게 넣으면 tomcat페이지가 실행됩니다.

 

 

# http://[본인 IP]/index.jsp : 이렇게 넣어서 성공하면 연동 성공

톰캣이 포트번호 없이 아파치와 연동되어 바로 실행됩니다.

톰캣은 원래 default(기본)포트 8080으로 접속하거나 아니면 지정한 포트로 접속해야하는데

아파치와 연동되어 포트번호 없이 접속할 수 있는것을 확인할 수 있습니다.

index.jsp파일은 [톰캣 경로]/webapps/ROOT 디렉토리 안에 있습니다.

안에 다른 파일을 만들어도 실행이 가능합니다.

 

반응형

댓글