GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Erstellen Sie ein Nginx-basiertes YUM/DNF-Repository auf Red Hat Enterprise Linux 8

Software-Repositorys werden normalerweise über das Internet verwendet und können von mehreren Benutzern weltweit aufgerufen werden. Sie können jedoch Ihr eigenes lokales Repository auf Ihrem lokalen Server erstellen und es als Einzelbenutzer verwenden oder den Zugriff auf andere Computer in Ihrem LAN über einen Webserver oder FTP erlauben.

Der Vorteil der Erstellung eines lokalen Repositorys besteht darin, dass Sie keine Internetverbindung benötigen, um Softwarepakete oder Updates zu installieren. Ein weiterer Vorteil ist natürlich die Downloadgeschwindigkeit. Da die Pakete über ein lokales Netzwerk heruntergeladen werden, werden die Updates schnell ausgeführt.

Yellowdog Updater, Modified (YUM) oder Dandified YUM (DNF) sind Softwarepaketmanager, die RPM-basierte Linux-Distributionen verwalten. Mit YUM oder DNF können Sie Computergruppen installieren und aktualisieren, ohne jedes RPM manuell aktualisieren zu müssen.

In diesem Artikel erkläre ich, wie Sie ein lokales webbasiertes YUM/DNF-Repository auf Red Hat Enterprise Linux (RHEL) 8 mithilfe der Installations-DVD oder ISO-Datei einrichten. Ich werde Ihnen auch zeigen, wie Sie mithilfe des Nginx-HTTP-Servers und der Apache-Webserver Softwarepakete auf Client-RHEL-8-Rechnern finden und installieren. Anweisungen für Apache finden Sie unter Erstellen Sie Ihr eigenes Apache-basiertes YUM/DNF-Repository unter Red Hat Enterprise Linux 8 und für FTP-Anweisungen siehe Erstellen Sie Ihr eigenes FTP-basiertes YUM/DNF-Repository unter Red Hat Enterprise Linux 8.

[Möchten Sie Red Hat Enterprise Linux ausprobieren? Jetzt kostenlos herunterladen.]

Voraussetzungen

Sie müssen zwei Red Hat Enterprise Linux 8-Systeme einrichten:einen lokalen Repo-Server und einen Client-Rechner, der das lokale Repository vom lokalen Server verwendet. Das Ergebnis sieht in etwa so aus:

  • Lokaler Repository-Server:RHEL 8 [10.0.0.10]

  • Lokaler Clientcomputer:RHEL 8 [10.0.0.11]

  • RHEL 8-Installations-DVD

  • Nginx-HTTP-Server

Erstellen Sie Ihr Repository

Das Erstellen Ihres Repositorys umfasst eine Reihe von Schritten. Ich führe Sie durch sie.

Schritt 1:Mounten Sie das Red Hat Enterprise Linux 8-Medium

Mounten Sie zunächst das lokale Medium (DVD, USB-Stick usw.), das Red Hat Enterprise Linux 8 enthält. Verwenden Sie die Installations-DVD:

$ sudo mount /dev/cdrom /mnt 
mount: /mnt: WARNING: device write-protected, mounted read-only.

Oder mounten Sie das ISO-Image:

$ sudo mount -o loop rhel-8.0-x86_64-dvd.iso /mnt

Schritt 2:Erstellen Sie ein lokales YUM-Repository aus den bereitgestellten Medien

Verschieben Sie die vorhandenen Repo-Dateien, die sich in /etc/yum.repos.d befinden :

$ sudo mv /etc/yum.repos.d/*.repo /tmp/

Ab diesem Zeitpunkt ist es besser, wenn Sie als Root-Nutzer fortfahren. Wechseln Sie mit su zum Superuser Befehl.

Als nächstes erstellen Sie ein Verzeichnis für das Repo:

# mkdir /local_repo

Verwenden Sie dieses Verzeichnis mit Nginx oder Apache, um Dateien über das LAN bereitzustellen.

Erstellen Sie die Konfigurationsdatei des neuen lokalen Repositorys, local-dvdrom.repo , unter /etc/yum.repos.d Verzeichnis:

# touch /etc/yum.repos.d/local-dvdrom.repo
# chmod  u+rw,g+r,o+r  /etc/yum.repos.d/local-dvdrom.repo

Schritt 3:Medieninhalte in das lokale Verzeichnis kopieren

Kopieren Sie die ISO-Dateien lokal unter /local_repo Verzeichnis:

# cd /mnt
# tar cvf - . | (cd /local_repo/; tar xvf -)

Warten Sie, bis die Dateien kopiert wurden, und überprüfen Sie dann, ob die Dateien kopiert wurden, indem Sie Folgendes verwenden:

# ls -l /local_repo/
total 56
dr-xr-xr-x. 4 root root    38 Apr  4  2019 AppStream
dr-xr-xr-x. 4 root root    38 Apr  4  2019 BaseOS
dr-xr-xr-x. 3 root root    18 Apr  4  2019 EFI
-r--r--r--. 1 root root  8266 Mar  1  2019 EULA
-r--r--r--. 1 root root  1455 Apr  4  2019 extra_files.json
-r--r--r--. 1 root root 18092 Mar  1  2019 GPL
dr-xr-xr-x. 3 root root    76 Apr  4  2019 images
dr-xr-xr-x. 2 root root   256 Apr  4  2019 isolinux
-r--r--r--. 1 root root   103 Apr  4  2019 media.repo
-r--r--r--. 1 root root  1669 Mar  1  2019 RPM-GPG-KEY-redhat-beta
-r--r--r--. 1 root root  5134 Mar  1  2019 RPM-GPG-KEY-redhat-release
-r--r--r--. 1 root root  1796 Apr  4  2019 TRANS.TBL

Schritt 4:Konfigurieren Sie das lokale YUM/DNF-Repository

Bearbeiten Sie die zuvor erstellte Repository-Konfigurationsdatei:

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

Fügen Sie diese Konfiguration ein:

[LocalRepo_BaseOS]
name=LocalRepo_BaseOS
metadata_expire=-1
enabled=1
gpgcheck=1
baseurl=file:///local_repo/BaseOS/
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release

[LocalRepo_AppStream]
name=LocalRepo_AppStream
metadata_expire=-1
enabled=1
gpgcheck=1
baseurl=file:///local_repo/AppStream/
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release

Installieren Sie die erforderlichen Pakete zum Erstellen, Konfigurieren und Verwalten des lokalen Repositorys:

# yum repolist
Updating Subscription Management repositories.
Unable to read consumer identity
This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.
LocalRepo_AppStream                              94 MB/s | 5.3 MB     00:00    
LocalRepo_BaseOS                                 97 MB/s | 2.2 MB     00:00    
repo id                              repo name                            status
LocalRepo_AppStream                  LocalRepo_AppStream                  4,672
LocalRepo_BaseOS                     LocalRepo_BaseOS                     1,658


# yum install createrepo  yum-utils
Updating Subscription Management repositories.
Unable to read consumer identity
This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.
Last metadata expiration check: 0:02:33 ago on Sat 05 Oct 2019 09:52:46 PM UTC.
Package dnf-utils-4.0.2.2-3.el8.noarch is already installed.
Dependencies resolved.
================================================================================
 Package              Arch      Version            Repository              Size
================================================================================
Installing:
 createrepo_c         x86_64    0.11.0-1.el8       LocalRepo_AppStream     76 k
Installing dependencies:
 createrepo_c-libs    x86_64    0.11.0-1.el8       LocalRepo_AppStream    101 k
 drpm                 x86_64    0.3.0-14.el8       LocalRepo_AppStream     71 k

Transaction Summary
================================================================================
Install  3 Packages

Total size: 249 k
Installed size: 556 k
Is this ok [y/N]: y
Downloading Packages:
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
  Preparing        :                                                        1/1 
  Installing       : drpm-0.3.0-14.el8.x86_64                               1/3 
  Installing       : createrepo_c-libs-0.11.0-1.el8.x86_64                  2/3 
  Installing       : createrepo_c-0.11.0-1.el8.x86_64                       3/3 
  Running scriptlet: createrepo_c-0.11.0-1.el8.x86_64                       3/3 
  Verifying        : createrepo_c-0.11.0-1.el8.x86_64                       1/3 
  Verifying        : createrepo_c-libs-0.11.0-1.el8.x86_64                  2/3 
  Verifying        : drpm-0.3.0-14.el8.x86_64                               3/3 
Installed products updated.

Installed:
  createrepo_c-0.11.0-1.el8.x86_64     createrepo_c-libs-0.11.0-1.el8.x86_64    
  drpm-0.3.0-14.el8.x86_64            

Complete!

Führen Sie schließlich createrepo aus Befehl:

# createrepo /local_repo/
Directory walk started
Directory walk done - 6647 packages
Temporary output repo path: /local_repo/.repodata/
Preparing sqlite DBs
Pool started (with 5 workers)
Pool finished

Schritt 5:Testen und verifizieren Sie Ihr lokales Repository

In diesem Schritt bereinigen Sie die temporären Repository-Dateien und überprüfen, ob das lokale Repository aktiviert ist:

# yum clean all
Updating Subscription Management repositories.
Unable to read consumer identity
This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.
12 files removed

# yum repolist
Updating Subscription Management repositories.
Unable to read consumer identity
This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.
LocalRepo_AppStream                             120 MB/s | 5.3 MB     00:00    
LocalRepo_BaseOS                                103 MB/s | 2.2 MB     00:00    
repo id                              repo name                            status
LocalRepo_AppStream                  LocalRepo_AppStream                  4,672
LocalRepo_BaseOS                     LocalRepo_BaseOS                     1,658

Überprüfen Sie, ob das lokale Repository erstellt wurde:

# ls /local_repo/repodata/
26617821a5263fb13c7a49cc5e2d0b979b926eb17b9b4ed0b7df624e04c272f2-other.sqlite.bz2
5626e6dd41648dc6395def6889f4cc0e7f1006bb7d7eca748c9abd4c67fa5b9b-other.xml.gz
6290a72e46a90f98896c14f7664440de10c798d158ce0afe5f15a9f3896b7824-primary.xml.gz
a5c265589796231ed91b8b25a0473d05915bf62496495a004d321d042b26360c-filelists.sqlite.bz2
c8b51f43bdaa4f14cd5b083851cef1068e9284fa6557eb4552ba2ae22e7f72d5-primary.sqlite.bz2
ed21f77d28e263df02739a4bd55eb7247ffd0531c871bfe677d4b205dbffd5e8-filelists.xml.gz
repomd.xml

Sie können sehen, dass das lokale Repository Dateien generiert hat, also ist an dieser Stelle alles in Ordnung.

Wenn Sie die obige Befehlsausgabe sorgfältig lesen, erhalten Sie die Warnmeldung:This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register . Wenn Sie diese Meldung beim Ausführen von dnf unterdrücken oder verhindern möchten oder yum bearbeiten Sie dann die Datei /etc/yum/pluginconf.d/subscription-manager.conf :

# vim /etc/yum/pluginconf.d/subscription-manager.conf

und ändern Sie den Parameter enabled=1 zu enabled=0 :

[main]
enabled=0

Richten Sie Ihren Nginx-HTTP-Server ein

Wie ich bereits erwähnt habe, behandelt dieser Artikel die Einrichtung Ihres eigenen Repositorys mithilfe des Nginx-HTTP-Servers. Ich führe Sie durch die Installation und Konfiguration von Nginx, um Ihr Repository zu bedienen.

Nginx installieren

So installieren Sie den Nginx-HTTP-Server mit YUM:

# yum install nginx
Last metadata expiration check: 0:19:18 ago on Sun 06 Oct 2019 09:51:22 AM UTC.
Dependencies resolved.
=======================================================================================
 Package          Arch   Version                             Repository           Size
=======================================================================================
Installing:
 nginx            x86_64 1:1.14.1-8.module+el8+2505+fe936cef LocalRepo_AppStream 569 k
Installing dependencies:
 gd               x86_64 2.2.5-6.el8                         LocalRepo_AppStream 144 k
 jbigkit-libs     x86_64 2.1-14.el8                          LocalRepo_AppStream  55 k
 libX11           x86_64 1.6.7-1.el8                         LocalRepo_AppStream 612 k
 libX11-common    noarch 1.6.7-1.el8                         LocalRepo_AppStream 157 k
 libXau           x86_64 1.0.8-13.el8                        LocalRepo_AppStream  36 k
 libXpm           x86_64 3.5.12-7.el8                        LocalRepo_AppStream  58 k
 libjpeg-turbo    x86_64 1.5.3-7.el8                         LocalRepo_AppStream 155 k
 libtiff          x86_64 4.0.9-13.el8                        LocalRepo_AppStream 188 k
 libwebp          x86_64 1.0.0-1.el8                         LocalRepo_AppStream 273 k
 libxcb           x86_64 1.13-5.el8                          LocalRepo_AppStream 230 k
 nginx-all-modules
                  noarch 1:1.14.1-8.module+el8+2505+fe936cef LocalRepo_AppStream  23 k
 nginx-filesystem noarch 1:1.14.1-8.module+el8+2505+fe936cef LocalRepo_AppStream  24 k
 nginx-mod-http-image-filter
                  x86_64 1:1.14.1-8.module+el8+2505+fe936cef LocalRepo_AppStream  34 k
 nginx-mod-http-perl
                  x86_64 1:1.14.1-8.module+el8+2505+fe936cef LocalRepo_AppStream  45 k
 nginx-mod-http-xslt-filter
                  x86_64 1:1.14.1-8.module+el8+2505+fe936cef LocalRepo_AppStream  33 k
 nginx-mod-mail   x86_64 1:1.14.1-8.module+el8+2505+fe936cef LocalRepo_AppStream  64 k
 nginx-mod-stream x86_64 1:1.14.1-8.module+el8+2505+fe936cef LocalRepo_AppStream  85 k
 dejavu-fonts-common
                  noarch 2.35-6.el8                          LocalRepo_BaseOS     74 k
 dejavu-sans-fonts
                  noarch 2.35-6.el8                          LocalRepo_BaseOS    1.5 M
 fontconfig       x86_64 2.13.1-3.el8                        LocalRepo_BaseOS    275 k
 fontpackages-filesystem
                  noarch 1.44-22.el8                         LocalRepo_BaseOS     16 k
 libxslt          x86_64 1.1.32-3.el8                        LocalRepo_BaseOS    249 k
Enabling module streams:
 nginx                   1.14                                                         

Transaction Summary
=======================================================================================
Install  23 Packages

Total size: 4.8 M
Installed size: 15 M
Is this ok [y/N]: y

Konfiguriere Nginx für den automatischen Start beim Booten

Sobald Nginx installiert ist, starten und aktivieren Sie den Dienst so, dass er beim Booten automatisch startet, und überprüfen Sie seinen Status mit den folgenden Befehlen:

# systemctl start nginx

# systemctl enable nginx
Created symlink /etc/systemd/system/multi-user.target.wants/nginx.service → /usr/lib/systemd/system/nginx.service.

# systemctl status nginx
● nginx.service - The nginx HTTP and reverse proxy server
   Loaded: loaded (/usr/lib/systemd/system/nginx.service; enabled; vendor preset: disa>
   Active: active (running) since Sun 2019-10-06 10:15:47 UTC; 22s ago
 Main PID: 3596 (nginx)
    Tasks: 3 (limit: 11528)
   Memory: 7.6M
   CGroup: /system.slice/nginx.service
           ├─3596 nginx: master process /usr/sbin/nginx
           ├─3597 nginx: worker process
           └─3598 nginx: worker process

Oct 06 10:15:47 server systemd[1]: Starting The nginx HTTP and reverse proxy server...
Oct 06 10:15:47 server nginx[3593]: nginx: the configuration file /etc/nginx/nginx.con>
Oct 06 10:15:47 server nginx[3593]: nginx: configuration file /etc/nginx/nginx.conf te>
Oct 06 10:15:47 server systemd[1]: Started The nginx HTTP and reverse proxy server.

Firewall konfigurieren

Als Nächstes müssen Sie die Firewall so konfigurieren, dass Nginx erreicht werden kann:

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

Stellen Sie sicher, dass Nginx betriebsbereit ist

Sie können jetzt überprüfen, ob Ihr Nginx-Server betriebsbereit ist, indem Sie zu localhost gehen URL in Ihrem Webbrowser. Die Standard-Nginx-Webseite http://localhost/ sollte angezeigt werden.

Nginx konfigurieren

Um Nginx zu konfigurieren, öffnen Sie die Konfigurationsdatei:

# vim /etc/nginx/nginx.conf

Suchen Sie nun den server Abschnitt der Datei und ändern Sie ihn so, dass er so aussieht:

    server {
	listen       80 default_server;
        listen       [::]:80 default_server;
        server_name  _;
        root         /local_repo/;

        # Load configuration files for the default server block.
        include /etc/nginx/default.d/*.conf;

        location / {
                allow all;
                sendfile on;
                sendfile_max_chunk 1m;
                autoindex on;
                autoindex_exact_size off;
                autoindex_format html;
                autoindex_localtime on;
        }
	  error_page 404 /404.html;
            location = /40x.html {
        }

	  error_page 500 502 503 504 /50x.html;
            location = /50x.html {
        }
    }

Testen und bereinigen

Starten Sie jetzt den Nginx-Dienst erneut und testen Sie seinen Status:

# systemctl restart nginx

# systemctl status nginx

● nginx.service - The nginx HTTP and reverse proxy server
   Loaded: loaded (/usr/lib/systemd/system/nginx.service; enabled; vendor preset: disa>
   Active: active (running) since Sun 2019-10-06 10:15:47 UTC; 3 hours 51 min ago
Process: 24032 ExecStartPre=/usr/bin/rm -f /run/nginx.pid (code=exited, status=0/SUCCESS)
Process: 24033 ExecStartPre=/usr/sbin/nginx -t (code=exited, status=0/SUCCESS)
Process: 24034 ExecStart=/usr/sbin/nginx (code=exited, status=0/SUCCESS)
 Main PID: 24035 (nginx)
   Status: "Started, listening on: port 80"
    Tasks: 3 (limit: 2438)
   Memory: 3.9M
   CGroup: /system.slice/nginx.service
           ├─24035 nginx: master process /usr/sbin/nginx
           ├─24036 nginx: worker process
           └─24037 nginx: worker process

Oct 06 10:15:47 server systemd[1]: Starting The nginx HTTP and reverse proxy server...
Oct 06 10:15:47 server nginx[24033]: nginx: [warn] could not build optimal types_hash, you should increase either types_hash_max_si>
Oct 06 10:15:47 server nginx[24033]: nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
Oct 06 10:15:47 server nginx[24033]: nginx: configuration file /etc/nginx/nginx.conf test is successful
Oct 06 10:15:47 server nginx[24033]: nginx[24034]: nginx: [warn] could not build optimal types_hash, you should increase either types_hash_max_si
Oct 06 10:15:47 server systemd[1]: Started The nginx HTTP and reverse proxy server.

Alles ist gut.

Berechtigungen ändern und SELinux festlegen

Fahren Sie mit der Sicherheitskonfiguration fort, indem Sie die Berechtigungen für local_repo ändern Verzeichnis und Konfigurieren von SELinux. So ändern Sie die Berechtigungen:

# setfacl -R -m u:apache:rwx /local_repo/

Überprüfen Sie dann, ob SELinux Folgendes erzwingt:

# getenforce
Enforcing

Wenn es Enforcing ist , geben Sie Folgendes ein:

# chcon -Rt httpd_sys_content_t /local_repo/

Wenn SELinux nicht auf Enforcing eingestellt ist, werden die Dateien nicht aus dem Repo bereitgestellt.

# setenforce enforcing

Und machen Sie die Änderung dauerhaft, indem Sie die Datei /etc/sysconfig/selinux bearbeiten und den folgenden Wert festlegen:

SELINUX=enforcing

Richten Sie den Client ein

Konfigurieren Sie nun das Repository des Red Hat Enterprise Linux 8-Clientcomputers.

Repository hinzufügen

Fügen Sie auf dem Client-Rechner die lokalen Repos vom Server zur YUM-Konfiguration des Clients hinzu:

$ sudo vim /etc/yum.repos.d/local-rhel8.repo 

Fügen Sie dann die folgende Konfiguration ein (achten Sie darauf, die Server-IP-Adresse entsprechend Ihrer Einrichtung zu ändern):

[LocalServerRepo]
name=LocalServerRepo
enabled=1
gpgcheck=0
baseurl=[http://](http://10.0.0.10/)[**10.0.0.10**](http://10.0.0.10/)[/](http://10.0.0.10/)

Repo testen

Testen Sie das LocalServerRepo durch Installieren eines Pakets. Zum Beispiel:

$ yum repolist
Not root, Subscription Management repositories not updated
LocalServerRepo                                 112 MB/s | 7.2 MB     00:00    
Last metadata expiration check: 0:00:02 ago on Sun 06 Oct 2019 01:04:21 PM UTC.
repo id                              repo name                            status
LocalServerRepo                      LocalServerRepo                      6,647

$ sudo yum install nano
Updating Subscription Management repositories.
Unable to read consumer identity
This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.
LocalServerRepo                                 103 MB/s | 7.2 MB     00:00    
Last metadata expiration check: 0:00:02 ago on Sun 06 Oct 2019 01:07:33 PM UTC.
Dependencies resolved.
================================================================================
 Package      Arch           Version              Repository               Size
================================================================================
Installing:
 nano         x86_64         2.9.8-1.el8          LocalServerRepo         580 k

Transaction Summary
================================================================================
Install  1 Package

Total download size: 580 k
Installed size: 2.2 M
Is this ok [y/N]: y
Downloading Packages:
nano-2.9.8-1.el8.x86_64.rpm                      19 MB/s | 580 kB     00:00    
--------------------------------------------------------------------------------
Total                                            17 MB/s | 580 kB     00:00     
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
  Preparing        :                                                        1/1 
  Installing       : nano-2.9.8-1.el8.x86_64                                1/1 
  Running scriptlet: nano-2.9.8-1.el8.x86_64                                1/1 
  Verifying        : nano-2.9.8-1.el8.x86_64                                1/1 
Installed products updated.

Installed:
  nano-2.9.8-1.el8.x86_64                                                       

Complete!

Das ist großartig! Alles funktioniert wie erwartet. Sie haben jetzt ein Nginx-basiertes lokales YUM/DNF-Repository in Red Hat Enterprise Linux 8, indem Sie die Installations-DVD oder ISO-Datei verwenden.


Linux
  1. So erstellen Sie ein lokales Red Hat-Repository

  2. Registrieren Sie Red Hat Enterprise Linux und hängen Sie ein Abonnement mit Ansible an

  3. Konfigurieren einer IPv6-Adresse in Red Hat Enterprise Linux 7 und 8

  4. Erstellen eines benutzerdefinierten Red Hat Enterprise Linux 7-Images für Microsoft Azure

  5. Dinge, die bei der Ausführung von Red Hat Enterprise Linux auf Azure zu beachten sind

Red Hat Linux-Download

RHEL 6 – Schritt-für-Schritt-Installationsanleitung für Red Hat Enterprise Linux Server

Red Hat Enterprise Linux (RHEL) 8 Installationsschritte mit Screenshots

So installieren Sie Red Hat Enterprise Linux 8 (RHEL 8)

So schließen Sie ein bestimmtes Repository für das Yum-Update in CentOS / Red Hat aus

So erstellen Sie ein lokales Yum-Repository für MySQL Enterprise-Pakete