Zoeken op website

Hoe u een lokale HTTP Yum-repository instelt op CentOS 7


Een softwarerepository (“repo” in het kort) is een centrale opslaglocatie voor bestanden om softwarepakketten te bewaren en te onderhouden, van waaruit gebruikers pakketten kunnen ophalen en op hun computers kunnen installeren.

Repository's worden vaak opgeslagen op servers op een netwerk, bijvoorbeeld een internet, waartoe meerdere gebruikers toegang hebben. U kunt echter een lokale opslagplaats op uw computer maken en configureren en deze als een enkele gebruiker openen of toegang verlenen tot andere machines op uw LAN (Local Area Network).

Een voordeel van het opzetten van een lokale repository is dat u geen internetverbinding nodig heeft om softwarepakketten te installeren.

YUM (Yellowdog Updater Modified) is een veelgebruikte pakketbeheertool voor RPM (RedHat Package Manager) gebaseerd op Linux-systemen, waardoor software-installatie eenvoudig wordt op Red Hat /CentOSLinux.

In dit artikel leggen we uit hoe je een lokale YUM repository opzet via een HTTP (Nginx) webserver op CentOS 7 VPS en laat u ook zien hoe u softwarepakketten kunt vinden en installeren op client-CentOS 7-machines.

Onze testomgeving

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

Stap 1: Installeer Nginx-webserver

1. Begin eerst met het installeren van de Nginx HTTP-server vanuit de EPEL-repository met behulp van de YUM-pakketbeheerder, als volgt.

yum install epel-release
yum install nginx 

2. Zodra u de Nginx-webserver heeft geïnstalleerd, kunt u deze voor de eerste keer starten en inschakelen dat deze automatisch start bij het opstarten van het systeem.

 
systemctl start nginx
systemctl enable nginx
systemctl status nginx

3. Vervolgens moet u poort 80 en 443 openen om webverkeer naar de Nginx-service toe te staan, en de systeemfirewallregels bijwerken om inkomende pakketten toe te staan op HTTP en HTTPS met behulp van de onderstaande opdrachten.

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

4. Nu kunt u bevestigen dat uw Nginx-server actief is, met behulp van de volgende URL; als je de standaard Nginx-webpagina ziet, is alles in orde.

http://SERVER_DOMAIN_NAME_OR_IP 

Stap 2: Maak een Yum lokale repository

5. In deze stap moet u de vereiste pakketten installeren voor het maken, configureren en beheren van uw lokale opslagplaats.

yum install createrepo  yum-utils

6. Maak vervolgens de benodigde mappen (yum-repository's) waarin pakketten en alle gerelateerde informatie worden opgeslagen.

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

7. Gebruik vervolgens de tool reposync om CentOS YUM-opslagplaatsen te synchroniseren met de lokale mappen, zoals weergegeven.

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/
Voorbeelduitvoer
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     

In de bovenstaande opdrachten is de optie:

  • -g – maakt het verwijderen van pakketten mogelijk die na het downloaden de GPG-handtekeningcontrole niet doorstaan.
  • -l – schakelt ondersteuning voor yum-plug-ins in.
  • -d – maakt het verwijderen van lokale pakketten mogelijk die niet langer aanwezig zijn in de repository.
  • -m – maakt het downloaden van comps.xml-bestanden mogelijk.
  • --repoid – specificeert de repository-ID.
  • --newest-only – vertel reposync om alleen de nieuwste versie van elk pakket in de repo's op te halen.
  • --download-metadata – maakt het downloaden van alle niet-standaard metadata mogelijk.
  • --download_path – specificeert het pad om pakketten te downloaden.

8. Controleer vervolgens de inhoud van uw lokale mappen om er zeker van te zijn dat alle pakketten lokaal zijn gesynchroniseerd.

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. Maak nu een nieuwe repodata voor de lokale opslagplaatsen door de volgende opdrachten uit te voeren, waarbij de vlag -g wordt gebruikt om de pakketgroepinformatie bij te werken met behulp van de opgegeven .xml-bestand.

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. Om het bekijken van opslagplaatsen en pakketten daarin mogelijk te maken, maakt u via een webbrowser een Nginx-serverblok dat verwijst naar de hoofdmap van uw opslagplaatsen, zoals weergegeven.

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

Voeg de volgende configuratie toe aan het bestand 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
        }
}

Sla het bestand op en sluit het.

11. Start vervolgens uw Nginx-server opnieuw op en bekijk de opslagplaatsen vanuit een webbrowser met behulp van de volgende URL.

http://repos.test.lab

Stap 3: Maak een cronjob om te synchroniseren en opslagplaatsen te maken

12. Voeg vervolgens een cronjob toe die uw lokale opslagplaatsen automatisch synchroniseert met de officiële CentOS-opslagplaatsen om de updates en beveiligingspatches te bemachtigen.

vim /etc/cron.daily/update-localrepos

Voeg deze opdrachten toe aan het script.

#!/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

Sla het script op, sluit het en stel de juiste machtigingen in.

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

Stap 4: Installeer een lokale Yum-repository op clientmachines

13. Voeg nu op uw CentOS-clientmachines uw lokale opslagplaatsen toe aan de YUM-configuratie.

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

Kopieer en plak de onderstaande configuratie in het bestand local-repos.repo (breng indien nodig wijzigingen aan).

[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

Sla het bestand op en begin uw lokale YUM-mirrors te gebruiken.

14. Voer vervolgens de volgende opdracht uit om uw lokale repo's te bekijken in de lijst met beschikbare YUM-repo's op de clientcomputers.

 yum repolist
OR
yum repolist all

Dat is alles! In dit artikel hebben we uitgelegd hoe je een lokale YUM-repository op CentOS 7 opzet. We hopen dat je deze handleiding nuttig vond. Als u vragen heeft of andere gedachten wilt delen, gebruikt u het onderstaande opmerkingenformulier.