목록열기

Epel (Extra Packages for Enterprise Linux) 저장소 Local 서버 (HTTPD이용) 구축 방법
seen posted at 2018/01/17 16:24  

RPM, Repository, 폐쇄망, EPEL

EPEL(Extra Packages for Enterprise Linux) Repository를 Local로 구축하는 방법

 

외부 인터넷망과 폐쇄된 내부 환경에서 yum repository를 구성해야할 경우가 발생하는데

이를 구성하는 방법에 대해 적어보고자 한다.

 

1. 최초 설치 후 ISO 이미지로 Local Repository 구성

최초 DVD로 CentOS 7.3이 설치되었다고 가정.

외부망에서 ISO 파일의 CentOS ISO 이미지를 내부로 가져왔으면 이를 yum repository로 구성하여야 한다.

 

ISO 파일을 마운트 하는 방법

mount -o loop CentOS-7-x86_64-Everything-1708.iso /mnt/cdrom

 

어차피 폐쇄망에서 인터넷도 안 되니 걍 CentOS-Base.repo의 내용을 모두 지우고 설정

 

/etc/yum.repos.d/CentOS-Base.repo 수정

 

 

[base]

 

name=local iso repository

baseurl = file:///mnt/cdrom

enabled = 1

 

아래 명령어로 yum repository clean 후 wget 패키지 있는지 확인

yum clean all

yum list | grep wget

 

여기까지 ISO를 마운트한 A 서버 내에서는 yum을 자유롭게 이용하여 설치가 가능하다.

 

 

2. HTTPD 이용한 내부망 yum repository 구축

 

A, B, C 서버가 있다고 가정하고 A 서버에 ISO 이미지를 이용하여 Local repository를 구축했다고 하자.

폐쇄망의 다른 B,C 서버들로도 똑같이 ISO 복사해야하는가?

 

귀찮으니까 이제 다른 B,C 서버에서도 yum 을 이용할 수 있게 만들려면 

A 서버에 httpd(18.01.17 기준 아파치 2.6)를 설치해주면 된다.

 

yum install httpd

 

설치가 되면 80포트 방화벽에 정책 등록

 

firewall-cmd --permanent --zone=public --add-port=80/tcp

firewall-cmd --reload

 

이제 /mnt/cdrom의 Packages 디렉토리를 httpd의 html 아래 repo 디렉토리로 통채로 복사한다.

 

mkdir /var/www/html/repo

cp -r /mnt/cdrom/Packages /var/www/html/repo

 

이제 rpm들이 복사된 /var/www/html/repo 디렉토리로 이동하여 Packages 디렉토리가 있는 것을 확인해보고 repository를 구성한다.

 

cd /var/www/html/repo 

createrepo .

 

그러면 Packages 디렉토리 말고 repodata 디렉토리가 생긴 것이 보인다.

 

다른 B, C 서버의 repo 설정을 A 서버로 지정하여 설정해주면 된다.

 

 

/etc/yum.repos.d/CentOS-Base.repo 수정

 


[base]

name=local iso repository

baseurl = http://A서버IP/repo

enabled = 1

gpgcheck=0


잘 되는지 확인해본다. 

 

 

yum clean all

 

yum list | grep wget

이제 기본적인 리눅스 패키지들을 설치가 가능하다.

3. EPEL repository 구축


그러나 docker와 같은 추가 rpm 라이브러리를 설치해야하는 경우가 발생하므로 EPEL 패키지도 구성한다.

 

폐쇄망이 아닌 외부의 공개망 CentOS 서버에서 아래와 같이 EPEL 패키지를 모두 다운로드한다.


reposync --repoid=epel --download_path=[설치할 패스]

reposync --repoid=epel --download_path=/data/repo


/data/repo에 있는 것을 모두 압축 후(18.01.17 기준 약 13GB 정도) 내부망으로 이동시킨다. 

이제 압축 풀면 epel 디렉토리가 나오는 것이 확인된다.


어차피 httpd 아래에서 구축할 것이므로 html 디렉토리로 이동시킨다.


mv epel /var/www/html/ 

cd /var/www/html 

 

ls 명령어를 해보면 Packages 디렉토리만 있는 것을 확인 가능하다.

이제 repository를 구축해준다.

 

createrepo .

 

이제 yum repository 설정을 추가 해준다.

 

 

 

/etc/yum.repos.d/CentOS-Base.repo 수정

 


[base]

name=local iso repository

baseurl = http://A서버IP/repo

enabled = 1

gpgcheck=0

 

[epel] 

name=epel repository

baseurl = http://A서버IP/epel

enabled = 1

gpgcheck=0


이제 docker 패키지가 조회되는지 확인해본다.

yum clean all
yum list | grep docker

나머지 B,C 서버들도 위와 같이 수정해주고 이제 자유롭게 yum 이용하면 끝.

 

4. docker repository 구축

 

EPEL repository 구축하는 것과 거의 비슷하다. docker 홈페이지 가면 docker-ce repository를 추가 방법이 나온다.

 

yum-config-manager --add-repo  https://download.docker.com/linux/centos/docker-ce.repo

 

위 명령어로 외부망 CentOS에서 추가하고 yum repolist 명령어를 통해 repository가 추가된 것을 확인 가능하다.

 

yum repolist

 

repo id를 보면 base 밑에 docker-ce-stable 이 추가된 것을 확인 가능하다.

reposync --repoid=docker-ce-stable --download_path=[다운로드할 패스]

이제 해당 패키지들을 압축하여서 내부망으로 보내면 된다.

이제 EPEL에서 했던 것처럼 추가하여 createrepo를 해주면 된다.

독서백편의자현(讀書百遍義自見)
sh2orc
책이나 글을 백 번 읽으면 그 뜻이 저절로 이해된다.
Copyright alright reserved seen@korea.ac.kr