docker로 apache, tomcat 연결

merci·2024년 5월 20일


유지보수중 폐쇄망에 아파치를 설치해야 하는 일이 생겼는데
도커를 활용해서 폐쇄망 환경을 구성하여 연습을 해보려한다

docker 컨테이너 실행

먼저 도커 엔진을 실행하고 리눅스 이미지를 받는다

이미지는 centos 리눅스 7버전을 이용한다

docker pull centos:7

다운 받은 이미지로 컨테이너를 생성
--privileged/sbin/init을 주어야 http서버 실행 시 권한 오류가 발생하지 않는다

docker run --privileged -d --name centos7 -p 80:80 centos:7 /sbin/init

생성한 컨테이너를 bash쉘로 실행

docker exec -it centos7 /bin/bash

필수 패키지 다운로드

폐쇄망에 설치할 패키지들은 별도의 디렉토리에 다운받은 후 리눅스에 마운트해서 설치할 예정이다

yum을 이용해서 패키지를 설치하지 않고 다운로드만 받는다

yum install --downloadonly --downloaddir=/usr/rpms/ [패키지]

로컬 레포지토리 설정을 위해서는 아래 패키지가 필요하다

deltarpm
python-deltarpm
createrepo

아래 명령어를 입력

yum install --downloadonly --downloaddir=/usr/rpms/ deltarpm python-deltarpm createrepo

아파치를 설치하기 위해서는 아래의 패키지들이 필요하므로 미리 받아둔다

httpd
httpd-devel
gcc
gcc-c++
make
firewalld (필요하다면)
yum install --downloadonly --downloaddir=/usr/rpms/ httpd httpd-devel gcc gcc-c++ make

local repository 생성

별도의 rpms 디렉토리에 다운받았을 경우 docker에서는 Files탭에서 마운트가 가능하다

패키지를 직접 다운받았거나 마운트한 뒤 yum의 레포지토리를 로컬로 변경한다

yum 레포지토리를 관리하는 디렉토리에 설정파일을 생성한다

cd /etc/yum.repos.d/
vi /etc/yum.repos.d/local.repo

local.repo에 아래의 내용을 넣고 저장한다

[localrepo]
name=localrepo
baseurl=file:///usr/rpms
enabled=1
gpgcheck=0

이제 로컬 레포지토리 설정을 위해 패키지를 설치한다

cd /usr/rpms
rpm -ivh deltarpm-3.6-3.el7.x86_64.rpm
rpm -ivh python-deltarpm-3.6-3.el7.x86_64.rpm
rpm -ivh createrepo-0.9.9-28.el7.noarch.rpm

패키지를 설치한뒤 createrepo 명령어로 특정 디렉토리를 로컬 레포지토리로 지정한다

createrepo /usr/rpms

이후 캐시를 지운다

sudo yum clean all
sudo yum makecache

이제 yum 명령어를 통해서 패키지를 설치하면 /usr/rpms 디렉토리의 패키지를 찾는다

아파치 설치

로컬에 받은 의존성과 httpd 패키지를 설치한다

yum --disablerepo="*" --enablerepo="localrepo" install -y gcc gcc-c++ httpd

아파치를 실행한다

systemctl start httpd

localhost:80 주소로 들어가면 아래의 화면이 보인다

자바 설치

톰캣 설치를 위해 자바를 설치한다
-L 옵션으로 리다이렉트를 따라가도록 하고, -o 옵션으로 이름을 지정해준다

curl -L -o OpenJDK11U-jdk_x64_linux_hotspot_11.0.23_9.tar.gz https://github.com/adoptium/temurin11-binaries/releases/download/jdk-11.0.23+9/OpenJDK11U-jdk_x64_linux_hotspot_11.0.23_9.tar.gz

압출을 푼 뒤 /usr/local 디렉토리로 옮긴다

tar xvzf OpenJDK11U-jdk_x64_linux_hotspot_11.0.23_9.tar.gz
mv jdk-11.0.23+9/ /usr/local

bin디렉토리를 환경변수로 설정한다

vi ~/.bashrc

하단에 아래 2줄을 넣고 저장

export JAVA_HOME=/usr/local/jdk-11.0.23+9
export PATH=$JAVA_HOME/bin:$PATH

설정을 업데이트

source ~/.bashrc

자바 환경변수 확인

$ java -version

openjdk version "11.0.23" 2024-04-16
OpenJDK Runtime Environment Temurin-11.0.23+9 (build 11.0.23+9)
OpenJDK 64-Bit Server VM Temurin-11.0.23+9 (build 11.0.23+9, mixed mode)

톰캣 설치

톰캣은 tar파일을 curl 명령어로 다운받는다

curl -O https://archive.apache.org/dist/tomcat/tomcat-9/v9.0.88/bin/apache-tomcat-9.0.88.tar.gz

tar로 받은 톰캣 파일을 푼다

tar -zxvf apache-tomcat-9*.tar.gz

디렉토리 내부의 bin 디렉토레에서 아래 명령어로 톰캣을 켜고 끈다

sh startup.sh
sh shutdown.sh

mod_jk 설치

mod_jk는 아파치의 확장 기능으로써 아파치와 톰캣을 연결하는 기능을 한다
mod_jk를 사용하기 위한 의존 패키지를 설치한다

yum --disablerepo="*" --enablerepo="localrepo" install -y httpd-devel make

mod_jk를 tar로 다운받고 압축을 푼다

curl -O http://mirror.apache-kr.org/tomcat/tomcat-connectors/jk/tomcat-connectors-1.2.49-src.tar.gz

tar xvfz tomcat-connectors-1.2.49-src.tar.gz

해당 경로로 이동 후 컴파일 명령어 입력한다

cd tomcat-connectors-1.2.49-src/native
./configure --with-apxs=/usr/bin/apxs
$ make && make install

See any operating system documentation about shared libraries for
more information, such as the ld(1) and ld.so(8) manual pages.
----------------------------------------------------------------------
chmod 755 /usr/lib64/httpd/modules/mod_jk.so

Please be sure to arrange /etc/httpd/conf/httpd.conf...

mod_jk 설정

httpd 패키지에서 추가 설정파일을 생성한다

cd /etc/httpd/conf.modules.d/
vi mod_jk.conf
LoadModule jk_module modules/mod_jk.so

JkWorkersFile    conf/workers.properties
JkShmFile        logs/mod_jk.shm
JkLogFile        logs/mod_jk.log
JkLogLevel       info
JkLogStampFormat "[%a %b %d %H:%M:%S %Y] "
JkRequestLogFormat "%w %V %T"
JkMount /* worker1

mod_jk에서 사용할 설정 프로퍼티를 생성한다

cd /etc/httpd/conf/
vi workers.properties
worker.list=worker1

worker.worker1.port=8009
worker.worker1.host=localhost
worker.worker1.type=ajp13
worker.worker1.lbfactor=1

이후 아파치를 다시 실행한다.

systemctl restart httpd

아래 명령어로 아파치 재시작시 문법 오류가 발생했는지 체크할 수 있다

apachectl configtest

톰캣 설정

mod_jk는 AJP 프로토콜을 이용해서 8009포트와 통신을 하므로 톰캣에서도 해당 설정을 추가한다

cd [톰캣설치경로]/conf
vi server.xml

아래 설정을 찾아서 주석해제 후 수정한다

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

모든 ip 허용하려면 address 설정 제거 or 0.0.0.0 설정
특정 ip 허용하려면 address="10.216.246.5" 와 같이 설정한다

이제 톰캣을 다시 실행한다

cd [톰캣설치경로]/bin
sh shutdown.sh
sh startup.sh

선택) 만약 리눅스 유저에 권한이 없다면 톰캣실행권한을 부여한다

sudo chmod +x [톰캣설치경로]

localhost:80 에 접속하면 아파치와 톰캣이 연결되어 톰캣메인 화면을 볼 수 있다

profile
작은것부터

0개의 댓글