Eenvoudige rpm-repository met behulp van Inotify en webdav
In dit bericht kijken we naar een rpm-artefact-repository met behulp van een eenvoudig inotify + createrepo-script. Artefacten worden geüpload via webdav met behulp van apache httpd. Waarom apache httpd tegen het einde van het bericht zal worden geschreven.
De oplossing moet dus aan de volgende vereisten voldoen om alleen RPM-opslag te organiseren:
Gratis
Beschikbaarheid van het pakket in de repository enkele seconden na het uploaden naar de artefactrepository.
Artefacten binnen SonaType Nexus opgeslagen in blob. Als de stroom plotseling uitvalt, kunt u de blob niet herstellen als u geen back-up hebt. We hadden deze fout: 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 is nooit teruggevonden.
Standaard bewaakt inotify-createrepo een map /var/www/repos/rpm-repo/.
U kunt deze map in het bestand wijzigen /etc/inotify-createrepo.conf.
Gebruiken
Bij het toevoegen van een bestand aan een map /var/www/repos/rpm-repo/ inotifywait zal een bestand aanmaken /tmp/need_create. De functie run_createrepo wordt uitgevoerd in een oneindige lus en bewaakt het bestand /tmp/need_create. Als het bestand bestaat, voer dan uit createrepo --update.
Om hoge beschikbaarheid te halen uit een bestaande oplossing, denk ik dat je 2 servers kunt gebruiken, Keepalived voor HA en Lsyncd voor synchronisatie van artefacten. Lsync - een daemon die wijzigingen in de lokale map bewaakt, ze aggregeert en na een bepaalde tijd begint rsync ze te synchroniseren. Details en instellingen worden beschreven in de post "Snelle synchronisatie van een miljard bestanden".
WebDav
Er zijn verschillende manieren om bestanden te uploaden: SSH, NFS, WebDav. WebDav lijkt een moderne en eenvoudige optie te zijn.
Voor WebDav gebruiken we Apache httpd. Waarom Apache httpd in 2020 en nginx niet?
Ik zou graag geautomatiseerde tools willen gebruiken voor het bouwen van Nginx + -modules (bijvoorbeeld Webdav).
Ik denk dat je de rest van de Apache httpd-configuratie zelf zult doen.
Nginx voor Apache httpd
In tegenstelling tot Apache gebruikt Nginx een op gebeurtenissen gebaseerd aanvraagverwerkingsmodel, wat betekent dat slechts één HTTP-serverproces vereist is voor een willekeurig aantal clients. U kunt nginx gebruiken en de serverbelasting verminderen.
nginx-front.conf-configuratie. Ik denk dat je de rest van de nginx-configuratie zelf zult doen.