
유지보수중 폐쇄망에 아파치를 설치해야 하는 일이 생겼는데
도커를 활용해서 폐쇄망 환경을 구성하여 연습을 해보려한다
먼저 도커 엔진을 실행하고 리눅스 이미지를 받는다

이미지는 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
별도의 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를 사용하기 위한 의존 패키지를 설치한다
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...
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 에 접속하면 아파치와 톰캣이 연결되어 톰캣메인 화면을 볼 수 있다
