In diesem Beitrag betrachten wir ein RPM-Artefakt-Repository mithilfe eines einfachen Inotify + Createrepo-Skripts. Artefakte werden über Webdav mit Apache httpd hochgeladen. Warum Apache httpd wird gegen Ende des Beitrags geschrieben.
Daher muss die Lösung die folgenden Anforderungen erfüllen, um nur RPM-Speicher zu organisieren:
Kostenlos
Verfügbarkeit des Pakets im Repository wenige Sekunden nach dem Hochladen in das Artefakt-Repository.
Fruchtfleisch Scheint mir eine überentwickelte Lösung zu sein.
Artefakte ein SonaType Nexus im Blob gespeichert. Im Falle eines plötzlichen Stromausfalls können Sie den Blob nicht wiederherstellen, wenn Sie nicht über ein Backup verfügen. Wir hatten diesen Fehler: ERROR [ForkJoinPool.commonPool-worker-2] *SYSTEM [com.orientechnologies.orient.core.storage](http://com.orientechnologies.orient.core.storage/).fs.OFileClassic - $ANSI{green {db=security}} Error during data read for file 'privilege_5.pcl' 1-th attempt [java.io](http://java.io/).IOException: Bad address. Blob wurde nie wiederhergestellt.
Standardmäßig überwacht inotify-createrepo ein Verzeichnis /var/www/repos/rpm-repo/.
Sie können dieses Verzeichnis in der Datei ändern /etc/inotify-createrepo.conf.
Verwenden
Beim Hinzufügen einer Datei zu einem Verzeichnis /var/www/repos/rpm-repo/ inotifywait erstellt eine Datei /tmp/need_create. Die Funktion run_createrepo läuft in einer Endlosschleife und überwacht die Datei /tmp/need_create. Wenn die Datei vorhanden ist, führen Sie sie aus createrepo --update.
Um aus einer vorhandenen Lösung eine hohe Verfügbarkeit zu machen, können Sie meiner Meinung nach zwei Server verwenden: Keepalived für HA und Lsyncd für die Artefaktsynchronisierung. Lsyncd – ein Daemon, der Änderungen im lokalen Verzeichnis überwacht, sie aggregiert und nach einer bestimmten Zeit mit der Synchronisierung durch rsync beginnt. Details und Einstellungen sind im Beitrag beschrieben „Schnelle Synchronisierung von einer Milliarde Dateien".
WebDav
Es gibt verschiedene Möglichkeiten, Dateien hochzuladen: SSH, NFS, WebDav. WebDav scheint eine moderne und einfache Option zu sein.
Für WebDav verwenden wir Apache httpd. Warum Apache httpd im Jahr 2020 und nicht Nginx?
Ich möchte automatisierte Tools zum Erstellen von Nginx+-Modulen verwenden (z. B. Webdav).
Ich denke, dass Sie den Rest der Apache-httpd-Konfiguration selbst durchführen werden.
Nginx vor Apache httpd
Im Gegensatz zu Apache verwendet Nginx ein ereignisbasiertes Anforderungsverarbeitungsmodell, was bedeutet, dass für beliebig viele Clients nur ein HTTP-Serverprozess erforderlich ist. Sie können Nginx verwenden und die Serverlast reduzieren.
nginx-front.conf-Konfiguration. Ich denke, Sie werden den Rest der Nginx-Konfiguration selbst vornehmen.