웹사이트 검색

CentOS 7에서 로컬 HTTP Yum 저장소를 설정하는 방법


소프트웨어 저장소(간단히 "repo ")는 사용자가 패키지를 검색하고 컴퓨터에 설치할 수 있는 소프트웨어 패키지를 보관하고 유지 관리하는 중앙 파일 저장 위치입니다.

리포지토리는 여러 사용자가 액세스할 수 있는 인터넷과 같은 네트워크의 서버에 저장되는 경우가 많습니다. 그러나 컴퓨터에 로컬 저장소를 생성 및 구성하고 단일 사용자로 액세스하거나 LAN(로컬 영역 네트워크)의 다른 컴퓨터에 대한 액세스를 허용할 수 있습니다.

로컬 저장소 설정의 한 가지 장점은 소프트웨어 패키지를 설치하기 위해 인터넷 연결이 필요하지 않다는 것입니다.

YUM(Yellowdog Updater Modified)은 널리 사용되는 Linux 시스템 기반의 RPM(RedHat Package Manager)용 패키지 관리 도구로, Red Hat에서 소프트웨어를 쉽게 설치할 수 있습니다. /CentOS 리눅스.

이 문서에서는 CentOS 7 VPS에서 HTTP(Nginx) 웹 서버를 통해 로컬 YUM 저장소를 설정하는 방법을 설명합니다. 클라이언트 CentOS 7 시스템에서 소프트웨어 패키지를 찾고 설치하는 방법도 보여줍니다.

테스트 환경

Yum HTTP Repository Server:	CentOS 7 [192.168.0.100]
Client Machine:		CentOS 7 [192.168.0.101]

1단계: Nginx 웹 서버 설치

1. 먼저 다음과 같이 YUM 패키지 관리자를 사용하여 EPEL 저장소에서 Nginx HTTP 서버를 설치하여 시작합니다.

yum install epel-release
yum install nginx 

2. Nginx 웹 서버를 설치한 후에는 처음으로 이를 시작하고 시스템 부팅 시 자동으로 시작되도록 활성화할 수 있습니다.

 
systemctl start nginx
systemctl enable nginx
systemctl status nginx

3. 다음으로 Nginx 서비스에 대한 웹 트래픽을 허용하려면 포트 80443을 열어야 하며, 인바운드 패킷을 허용하도록 시스템 방화벽 규칙을 업데이트해야 합니다. HTTPHTTPS에서 아래 명령을 사용하세요.

firewall-cmd --zone=public --permanent --add-service=http
firewall-cmd --zone=public --permanent --add-service=https
firewall-cmd --reload

4. 이제 다음 URL을 사용하여 Nginx 서버가 실행되고 있는지 확인할 수 있습니다. 기본 Nginx 웹 페이지가 보이면 모든 것이 정상입니다.

http://SERVER_DOMAIN_NAME_OR_IP 

2단계: Yum 로컬 저장소 생성

5. 이 단계에서는 로컬 저장소를 생성, 구성 및 관리하는 데 필요한 패키지를 설치해야 합니다.

yum install createrepo  yum-utils

6. 다음으로 패키지 및 관련 정보를 저장할 필수 디렉토리(yum 저장소)를 만듭니다.

mkdir -p /var/www/html/repos/{base,centosplus,extras,updates}

7. 그런 다음 reposync 도구를 사용하여 그림과 같이 CentOS YUM 저장소를 로컬 디렉터리에 동기화합니다.

reposync -g -l -d -m --repoid=base --newest-only --download-metadata --download_path=/var/www/html/repos/
reposync -g -l -d -m --repoid=centosplus --newest-only --download-metadata --download_path=/var/www/html/repos/
reposync -g -l -d -m --repoid=extras --newest-only --download-metadata --download_path=/var/www/html/repos/
reposync -g -l -d -m --repoid=updates --newest-only --download-metadata --download_path=/var/www/html/repos/
샘플 출력
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
 * base: mirrors.fibergrid.in
 * epel: mirror.xeonbd.com
 * extras: mirrors.fibergrid.in
 * updates: mirrors.fibergrid.in
base/7/x86_64/group                                                    | 891 kB  00:00:02     
No Presto metadata available for base
(1/9911): 389-ds-base-snmp-1.3.7.5-18.el7.x86_64.rpm                   | 163 kB  00:00:02     
(2/9911): 389-ds-base-devel-1.3.7.5-18.el7.x86_64.rpm                  | 267 kB  00:00:02     
(3/9911): ElectricFence-2.2.2-39.el7.i686.rpm                          |  35 kB  00:00:00     
(4/9911): ElectricFence-2.2.2-39.el7.x86_64.rpm                        |  35 kB  00:00:00     
(5/9911): 389-ds-base-libs-1.3.7.5-18.el7.x86_64.rpm                   | 695 kB  00:00:04     
(6/9911): GConf2-devel-3.2.6-8.el7.i686.rpm                            | 110 kB  00:00:00     
(7/9911): GConf2-devel-3.2.6-8.el7.x86_64.rpm                          | 110 kB  00:00:00     
(8/9911): GConf2-3.2.6-8.el7.i686.rpm                                  | 1.0 MB  00:00:06     

위 명령에서 옵션은 다음과 같습니다.

  • -g – 다운로드 후 GPG 서명 확인에 실패한 패키지를 제거할 수 있습니다.
  • -l – yum 플러그인 지원을 활성화합니다.
  • -d – 저장소에 더 이상 존재하지 않는 로컬 패키지를 삭제할 수 있습니다.
  • -mcomps.xml 파일 다운로드를 활성화합니다.
  • --repoid – 저장소 ID를 지정합니다.
  • --newest-only – reposync에 저장소에 있는 각 패키지의 최신 버전만 가져오도록 지시합니다.
  • --download-metadata – 기본이 아닌 모든 메타데이터를 다운로드할 수 있습니다.
  • --download_path – 패키지를 다운로드할 경로를 지정합니다.

8. 다음으로 로컬 디렉터리의 내용을 확인하여 모든 패키지가 로컬에서 동기화되었는지 확인하세요.

ls -l /var/www/html/repos/base/
ls -l /var/www/html/repos/base/Packages/
ls -l /var/www/html/repos/centosplus/
ls -l /var/www/html/repos/centosplus/Packages/
ls -l /var/www/html/repos/extras/
ls -l /var/www/html/repos/extras/Packages/
ls -l /var/www/html/repos/updates/
ls -l /var/www/html/repos/updates/Packages/

9. 이제 다음 명령을 실행하여 로컬 저장소에 대한 새 저장소를 생성합니다. 여기서 -g 플래그는 지정된 를 사용하여 패키지 그룹 정보를 업데이트하는 데 사용됩니다. .xml 파일.

createrepo -g comps.xml /var/www/html/repos/base/  
createrepo -g comps.xml /var/www/html/repos/centosplus/	
createrepo -g comps.xml /var/www/html/repos/extras/  
createrepo -g comps.xml /var/www/html/repos/updates/  

10. 웹 브라우저를 통해 저장소와 패키지를 볼 수 있도록 하려면 그림과 같이 저장소의 루트를 가리키는 Nginx 서버 블록을 만듭니다.

vim /etc/nginx/conf.d/repos.conf 

repos.conf 파일에 다음 구성을 추가합니다.

server {
        listen   80;
        server_name  repos.test.lab;	#change  test.lab to your real domain 
        root   /var/www/html/repos;
        location / {
                index  index.php index.html index.htm;
                autoindex on;	#enable listing of directory index
        }
}

파일을 저장하고 닫습니다.

11. 그런 다음 Nginx 서버를 다시 시작하고 다음 URL을 사용하여 웹 브라우저에서 저장소를 확인하세요.

http://repos.test.lab

3단계: 크론 작업을 생성하여 리포지토리 동기화 및 생성

12. 다음으로 로컬 저장소를 공식 CentOS 저장소와 자동으로 동기화하여 업데이트와 보안 패치를 가져오는 크론 작업을 추가합니다.

vim /etc/cron.daily/update-localrepos

스크립트에 다음 명령을 추가합니다.

#!/bin/bash
##specify all local repositories in a single variable
LOCAL_REPOS=”base centosplus extras updates”
##a loop to update repos one at a time 
for REPO in ${LOCAL_REPOS}; do
reposync -g -l -d -m --repoid=$REPO --newest-only --download-metadata --download_path=/var/www/html/repos/
createrepo -g comps.xml /var/www/html/repos/$REPO/  
done

스크립트를 저장하고 닫은 후 적절한 권한을 설정하세요.

chmod 755 /etc/cron.daily/update-localrepos

4단계: 클라이언트 시스템에 로컬 Yum 저장소 설정

13. 이제 CentOS 클라이언트 시스템에서 로컬 저장소를 YUM 구성에 추가하세요.

vim /etc/yum.repos.d/local-repos.repo

아래 구성을 복사하여 local-repos.repo 파일에 붙여넣습니다(필요한 경우 변경).

[local-base]
name=CentOS Base
baseurl=http://repos.test.lab/base/
gpgcheck=0
enabled=1

[local-centosplus]
name=CentOS CentOSPlus
baseurl=http://repos.test.lab/centosplus/
gpgcheck=0
enabled=1

[local-extras]
name=CentOS Extras
baseurl=http://repos.test.lab/extras/
gpgcheck=0
enabled=1

[local-updates]
name=CentOS Updates
baseurl=http://repos.test.lab/updates/
gpgcheck=0
enabled=1

파일을 저장하고 로컬 YUM 미러 사용을 시작하세요.

14. 그런 다음 다음 명령을 실행하여 클라이언트 시스템의 사용 가능한 YUM 저장소 목록에서 로컬 저장소를 확인하세요.

 yum repolist
OR
yum repolist all

그게 다야! 이 기사에서는 CentOS 7에서 로컬 YUM 저장소를 설정하는 방법을 설명했습니다. 이 가이드가 도움이 되었기를 바랍니다. 질문이 있거나 공유하고 싶은 다른 의견이 있으면 아래 의견 양식을 사용하세요.