Apache + Tomcat 연동 ( 1 : 1 )

염상민·2022년 7월 8일
0

참고 사항

이 글은 apache(=httpd)가 깔려 있다는 전제 하에 적은 글입니다.

사용한 OS 및 버전
  • CentOS7 CentOS Linux release 7.9.2009 (Core)
  • Apache 2.4
  • openjdk version 1.8.0
  • Tomcat 10.0
  • Tomcat-connectors 1.2.48

시작 전 준비

방화벽 끄기

방화벽 자동 실행 제거
방화벽 끄기
방화벽 상태 확인 - Active: inactive (dead) 확인

# systemctl disable firewalld
# systemctl stop firewalld
# systemctl status firewalld

SElinux 끄기

# vi /etc/sysconfig/selinux

SELINUX=enforing >> SELINUX=disabled로 변경

컴파일을 하기 위해 필요한 패키지 목룍

httpd-devel
gcc
gcc-c++
libtool

설치예시
# yum -y install httpd-devel gcc gcc-c++ libtool

패키지 추천

vim
net-tools

Java 설치 및 경로 지정

리눅스 내에서 검색해보기

# yum search java-1.8.0-openjdk          

자바 버전 1.8 (== 8버전) openjdk, openjdk-devel 설치

# yum -y install java-1.8.0-openjdk-src.x86_64 java-1.8.0-openjdk-devel             

경로 알아보기

find [경로][표현식]
find == 찾으라는 명령어
/ == /(root)아래 파일 찾기 == 모든 파일 찾기랑 같은 뜻
-name == 이름으로 찾기

# find / -name java

find / -name java == 이 서버의 java라고 이름 붙은 모든 파일 찾아라.

찾은 내용 중 경로/bin/~ 위치가 java 위치

/etc/profile에 경로 저장

# vi /etc/profile

들어가서 가장 밑 부분에 추가 후 저장

JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.332.b09-1.el7_9.x86_64
PATH=$JAVA_HOME/bin:$PATH

적용

# source /etc/profile

Tomcat 설치

필요한 패키지 목록
Tomcat
Tomcat-connectors

톰캣 공식 사이트 : https://tomcat.apache.org/
톰캣 10.0 다운로드 페이지 : https://tomcat.apache.org/download-10.cgi
톰캣 커넥터 다운로드 페이지 : https://tomcat.apache.org/download-connectors.cgi/

리눅스에서 컴파일 방식으로 설치 - wget

wget 안될 경우 다운로드 받으세요.

# yum -y install wget

리눅스 예시 (Tomcat 10.0 버전으로 받았습니다.)

wget 다운받을 디렉토리로 이동 ( 제 경우 /root에서 받음)

# cd /root

tomcat 10.0 버전 압축파일로 다운로드

# wget https://dlcdn.apache.org/tomcat/tomcat-10/v10.0.22/bin/apache-tomcat-10.0.22.tar.gz

tomcat-connectors 1.2.48 압축파일로 다운로드

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

압축파일 해제

해제 방법 = # tar -옵션 해제할 압축파일 명

zxvf == gzip으로 압축된 tar 아카이브를 현재 디렉토리에 풀기

# tar zxvf apache-tomcat-10.0.22.tar.gz
# tar zxvf tomcat-connectors-1.2.48-src.tar.gz

파일이동

압축해제한 파일을 /usr/local/ 으로 이동(보통 컴파일로 설치할 경우 보편적으로 여기로 이동시킨다.)
이름 변경하면서 이동 apache-tomcat-10.0.22 > tomcat

# mv apache-tomcat-10.0.22.tar.gz /usr/local/tomcat

tomcat-connectors을 /usr/local/tomcat/tomcat-connectors 이동

# mv tomcat-connectors-1.2.48-src /usr/local/tomcat/

연동하기

파일 구성

mod_jk.so 설치

httpd.conf 파일 수정
vhosts.conf 작성
mod_jk.conf 작성
workers.properties 작성
server.xml 파일 수정

연동에 필요한 mod_jk.so 설치 방법

연동에 필요한 소스파일 환경설정하기 - ./configure
컴파일 하기 - make
설치하기 - make install

Tomcat-connectors 안의 native 디렉토리 안으로 이동

apxs 찾고 경로 기억해두기

# find / -name apxs


/usr/local/apache/bin/apxs

환경설정 하기 (./configure)

native 이동 되어있는 상태에서 환경설정

#  ./configure --with-apxs=/usr/local/apache/bin/apxs

참고 : apxs=경로는 find로 찾은 apxs 경로입니다.

컴파일 하기

# make

설치하기

# make install

mod_jk.so 설치 확인 방법

# find / -name mod_jk.so

웹 모듈디렉토리에서 확인 가능 - 경로/modules/mod_jk.so 를 확인할 수 있다.

Apache + Tomcat 환경파일 설정하기

참고

해당 설정은 여러가지 방식으로 설정 가능 합니다.
다른 분들과 설정이 다를 수 있습니다.

파일 설정 구성도


부연설명
httpd.conf 파일에서 vhosts.conf, mod_jk.conf 파일을 포함시킨다. (Incldue)
vhosts.conf에서 mod_jk.so 모듈을 불러 온다.
mod_jk.conf에서 workers.properties 파일을 적용한다.

httpd.conf 수정

수정을 위해 찾기

# find / -name httpd.conf

참고 - ( 패키지 매니저로 설치 했을 시 기본 경로 | yum 혹은 apt-get )
CentOS - /etc/httpd/conf/httpd.conf
Ubuntu - /etc/apache2/apache2.conf

httpd.conf 파일 들어가기

# vi /etc/local/apache/conf/httpd.conf

해당 내용 맨 아래 작성

Include conf/vhosts.conf
Include conf/mod_jk.conf

저장 후 나가기

ESC :wq

주의 : 반드시 위에 적힌 순서에 맞게 vhosts.conf 가 mod_jk.conf 보다 윗 라인에 위치해야 합니다.

vhosts.conf 작성

httpd.conf 가 위치에 있는 곳에서 작성 (저의 경우 /usr/local/apache/conf/httpd.conf)

# vi /usr/local/apahce/conf/vhosts.conf

vhosts.conf에 적용되는 내용

LoadModule jk_module modules/mod_jk.so    # 모듈 mod_jk.so 불러오기
<VirtualHost *:80>                        # 모든 ip주소에서 요청을 기다림
ServerName localhost                      # server이름 - 웹서버 주소
JkUnmount /*.html tomcat01   # *.html 부분은 tomcat01에서 처리 안함 (apache에서 처리)
JkMount /* tomcat01 		 # 나머지 전부 tomcat01 에서 처리(workers.porperties 참고)
</VirtualHost> 

붙여넣기

LoadModule jk_module modules/mod_jk.so
<VirtualHost *:80> 
ServerName localhost
JkMount /* tomcat01 
</VirtualHost> 

mod_jk.conf 작성

httpd.conf 가 위치에 있는 곳에서 작성 (저의 경우 /usr/local/apache/conf/httpd.conf)

# vi /usr/local/apahce/conf/mod_jk.conf
<ifModule jk_module> 
JkWorkersFile conf/workers.properties 
JkLogFile logs/mod_jk.log                        # log 저장
JkLogLevel info 
JkShmFile /var/log/httpd/jk-runtime-status 
JkWatchdogInterval 30 
JkLogStampFormat "[%a %b %d %H:%M:%S %Y]"        # 날짜/시간을 스트링으로 변환
</ifModule> 

붙여넣기

<ifModule jk_module> 
JkWorkersFile conf/workers.properties 
JkLogFile logs/mod_jk.log  
JkLogLevel info 
JkShmFile /var/log/httpd/jk-runtime-status 
JkWatchdogInterval 30 
JkLogStampFormat "[%a %b %d %H:%M:%S %Y]"  
</ifModule> 

workers.properties 작성

httpd.conf 가 위치에 있는 곳에서 작성 (저의 경우 /usr/local/apache/conf/httpd.conf)

# vi /usr/local/apahce/conf/workers.properties
worker.list=tomcat01                   # tomcat worker의 이름 (vhosts.conf 참고)
worker.tomcat01.type=ajp13             # ajp13 프로토콜 사용해서 통신
worker.tomcat01.host=localhost         # tomcat의 ip 
worker.tomcat01.port=8009              # 웹서버 연결에 사용하는 port 선언

붙여넣기

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

server.xml 수정

AJP13 프로토콜을 이용하기 위해 Tomcat의 server.xml 수정합니다.
수정 내용은 톰캣 파일 중 톰캣경로/conf/server.xml
제 톰캣 경로의 경우 - /usr/local/tomcat/conf/server.xml 안에 내용 추가

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

sed를 이용해서 간단히 하면

# sed -i '103i <Connector protocol="AJP/1.3" address="0.0.0.0" port="8009" redirectPort="8443" secretRequired="false" /> ' /usr/local/tomcat/conf/server.xml
설명 - /usr/local/tomcat/conf/ 에 있는 server.xml 파일 안 103번 째 줄에 < Connector protocol="AJP/1.3" address="0.0.0.0" port="8009" redirectPort="8443" secretRequired="false" />를 추가해라

적용 완료 후 확인하기

시작 전 웹 서비스 확인하기

# netstat -nlp | grep 80

80, 8005, 8009, 8080 port가 없는 것이 정상

혹은 80 port가 있을 시
중지 > 시작 또는 재시작 명령어를 통하여 설정한 것을 적용 해준다.

# systemctl stop httpd              # 한 다음
# systemctl start httpd             # 시작 

혹은

# systemctl restart httpd           # 재시작

Tomcat 시작해보기

Tomcat 실행 스크립트가 있는 톰캣경로/bin/ 으로 이동

# cd /usr/local/tomcat/bin/

안에 있는 startup.sh 실행

# ./startup.sh

이후 netstart -nlp | grep 80 으로 확인

# netstat -nlp | grep 80

정상적으로 진행이 되었으면

확인 가능 !

다른 곳에서 확인해보기

windows 에서 접속해보기

예를 들어 구성한 서버의 IP가 125.125.125.125 라고 가정을 한다면
인터넷 창에 톰캣 고양이 화면이 보이는 여부 - 두 개 전부 보여야 한다.
해당 주소 : http://125.125.125.125/index.jsp
해당 주소 : http://125.125.125.125:8080/index.jsp

profile
엔지니어를 꿈꿔요

0개의 댓글