728x90
CentOS Yum Repository 서버를 구축하는 방법
CentOS Yum Repository 서버를 구축하는 것은 패키지 관리와 시스템 업데이트를 위해 중요한 작업입니다.
웹 서버 설치 (Apache HTTPD 예시)
Yum Repository를 호스팅하기 위해 웹 서버를 설치합니다. 아파치 웹 서버를 설치하는 방법은 다음과 같습니다.
repository 구축을 위한 필수 패키지 다운로드
createrepo 설치
yum install -y createrepo yum-utils
Yum Repository 디렉터리 구조 설계
cd /app/repo_root/reop
$ tree -L 5
.
└── repo
├── centos
│ ├── 7 -> 7.9.2009
│ ├── 7.9.2009
│ │ ├── extras
│ │ │ └── x86_64
│ │ ├── isos
│ │ │ └── x86_64
│ │ ├── os
│ │ │ └── x86_64
│ │ └── updates
│ │ └── x86_64
│ ├── 8 -> 8.3.2011
│ └── 8.3.2011
│ ├── isos
│ │ └── x86_64
│ └── os
│ └── x86_64
└── epel
├── 7
│ └── x86_64
│ ├── Packages
│ ├── debug
│ ├── drpms
│ └── repodata
└── 8
└── Everything
└── x86_64
Yum Repository 디렉터리 구조 생성
- CentOS 7
mkdir -p repo/centos/7.9.2009/{centosplus,extras,isos,os,updates}/x86_64
- CentOS 8
mkdir -p repo/centos/8.3.2011/{isos,os}/x86_64
- Yum Repository 생성
- Yum Repository 메타데이터를 생성합니다.
createrepo repo
패키지 업데이트 스크립트(mirror synchronization)
- centos8_mirror.sh 스크립트 편집
vim centos8_mirror.sh
#!/bin/bash
ContentDir="centos"
ReleaseVer="8"
BaseList="BaseOS AppStream extras"
#BaseList="BaseOS"
BaseArch="x86_64"
LocalDirectory=/app/repo_root/repo
for REPO in ${BaseList[@]}
do
#reposync -p /app/repo_root/repo/centos/8 --repoid=BaseOS --download-metadata --newest-only
#reposync -p /app/repo_root/repo/centos/8 --repoid=AppStream --download-metadata --newest-only
reposync -p ${LocalDirectory}/${ContentDir}/${ReleaseVer} --repoid=${REPO} --download-metadata --newest-only
done
- centos_mirror.sh 스크립트 편집
vim centos_mirror.sh
#!/bin/bash
ContentDir="centos"
ReleaseVer="7"
#BaseList="os updates extras centosplus virt"
BaseList="os updates extras"
BaseArch="x86_64"
LocalDirectory=/app/repo_root/repo/centos
RSYNC="/usr/bin/rsync -aqHz --delete"
MirrorUrl="rsync://ftp.kaist.ac.kr/CentOS"
for ver in $ReleaseVer
do
for arch in $BaseArch
do
for base in $BaseList
do
${RSYNC} ${MirrorUrl}/${ver}/${base}/${arch} ${LocalDirectory}/${ver}/${base}/
done
done
done
728x90
- epel8_mirror.sh 스크립트 편집
vim epel8_mirror.sh
#!/bin/bash
ContentDir="epel"
ReleaseVer="8"
BaseList="Everything"
BaseArch="x86_64"
LocalDirectory="/app/repo_root/repo"
RSYNC="/usr/bin/rsync -aqHz --delete"
MirrorUrl="dl.fedoraproject.org::fedora-epel"
for ver in ${ReleaseVer}
do
for arch in ${BaseArch}
do
${RSYNC} ${MirrorUrl}/${ver}/${BaseList}/${arch}/ ${LocalDirectory}/${ContentDir}/${ver}/${BaseList}/${BaseArch}
done
done
- epel_mirror.sh 스크립트 편집
vim epel_mirror.sh
#!/bin/bash
ContentDir="epel"
ReleaseVer="7"
BaseList=""
BaseArch="x86_64"
LocalDirectory="/app/repo_root/repo"
RSYNC="/usr/bin/rsync -aqHz --delete"
MirrorUrl="dl.fedoraproject.org::fedora-epel"
for ver in $ReleaseVer
do
for arch in $BaseArch
do
${RSYNC} ${MirrorUrl}/${ver}/${arch}/ ${LocalDirectory}/${ContentDir}/${ver}/${arch}
createrepo ${LocalDirectory}/${ContentDir}/${ver}/${arch}/
done
done
웹 서버 구성
- Apache 웹 서버 설정
- Yum Repository에 대한 Apache 웹 서버 설정을 추가합니다. /etc/httpd/conf.d/yumrepo.conf와 같은 파일을 생성하고 다음과 같은 내용을 추가합니다.
Alias /centos/7/updates/x86_64 /var/www/html/centos/7/updates/x86_64
<Directory /var/www/html/centos/7/updates/x86_64>
Options +Indexes
</Directory>
- Apache 웹 서버 시작 및 활성화
- 웹 서버를 시작하고 부팅 시에 자동으로 시작하도록 활성화합니다.
sudo systemctl start httpd
sudo systemctl enable httpd
클라이언트 설정
repo 파일 다운로드
### CentOS7
curl -Ssf http://pkg.sangchul.kr/dl/CentOS7-Base.repo -o /etc/yum.repos.d/CentOS-Base.repo
curl -Ssf http://pkg.sangchul.kr/dl/epel7.repo -o /etc/yum.repos.d/epel.repo
### CentOS8
curl -Ssf http://pkg.sangchul.kr/dl/CentOS8-Base.repo -o /etc/yum.repos.d/CentOS-Base.repo
curl -Ssf http://pkg.sangchul.kr/dl/epel8.repo -o /etc/yum.repos.d/epel.repo
repo 파일
- CentOS7-Base.repo
vim CentOS-Base.repo
# CentOS-Base.repo
[base]
name=CentOS-$releasever - Base
baseurl=http://pkg.sangchul.kr/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
#released updates
[updates]
name=CentOS-$releasever - Updates
baseurl=http://pkg.sangchul.kr/centos/$releasever/updates/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
#additional packages that may be useful
[extras]
name=CentOS-$releasever - Extras
baseurl=http://pkg.sangchul.kr/centos/$releasever/extras/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
#additional packages that extend functionality of existing packages
[centosplus]
name=CentOS-$releasever - Plus
baseurl=http://pkg.sangchul.kr/centos/$releasever/centosplus/$basearch/
gpgcheck=1
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
- CentOS8-Base.repo
vim CentOS-Base.repo
# CentOS-Base.repo
[BaseOS]
name=CentOS-$releasever - Base
baseurl=http://pkg.sangchul.kr/$contentdir/$releasever/BaseOS/$basearch/os/
gpgcheck=1
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial
- epel7.repo
vim epel7.repo
[epel]
name=Extra Packages for Enterprise Linux 7 - $basearch
baseurl=http://pkg.sangchul.kr/pub/epel/7/$basearch
failovermethod=priority
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7
[epel-debuginfo]
name=Extra Packages for Enterprise Linux 7 - $basearch - Debug
baseurl=http://pkg.sangchul.kr/pub/epel/7/$basearch/debug
failovermethod=priority
enabled=0
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7
[epel-source]
name=Extra Packages for Enterprise Linux 7 - $basearch - Source
baseurl=http://pkg.sangchul.kr/pub/epel/7/SRPMS
failovermethod=priority
enabled=0
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7
- epel8.repo
vim epel8.repo
[epel]
name=Extra Packages for Enterprise Linux $releasever - $basearch
baseurl=http://pkg.sangchul.kr/pub/epel/$releasever/Everything/$basearch
enabled=1
gpgcheck=1
countme=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-8
[epel-debuginfo]
name=Extra Packages for Enterprise Linux $releasever - $basearch - Debug
baseurl=http://pkg.sangchul.kr/pub/epel/$releasever/Everything/$basearch/debug
enabled=0
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-8
[epel-source]
name=Extra Packages for Enterprise Linux $releasever - $basearch - Source
baseurl=http://pkg.sangchul.kr/pub/epel/$releasever/Everything/SRPMS
enabled=0
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-8
참고 사항
1. Yum Repository 서버를 구축하기 위해서는 CentOS 또는 Red Hat Enterprise Linux (RHEL)과 같은 Linux 배포판이 필요합니다.
2. 공용 네트워크에서 사용하려면 적절한 보안 조치를 취해야 합니다.
728x90
'리눅스' 카테고리의 다른 글
Docker 이미지를 파일로 저장하고 불러오는 방법 (0) | 2023.09.04 |
---|---|
adduser 명령어 (0) | 2023.09.04 |
iftop 명령어 (0) | 2023.08.31 |
CentOS 7에서 Python 3.10을 업그레이드하는 방법 (0) | 2023.08.29 |
Docker를 사용하여 Swagger UI를 실행하고 REST API를 테스트하는 방법 (0) | 2023.08.26 |