Jednostavno rpm spremište koristeći Inotify i webdav
U ovom postu ćemo pogledati rpm spremište artefakata koristeći jednostavnu inotify + createrepo skriptu. Artefakti se postavljaju putem webdava koristeći apache httpd. Zašto će apache httpd biti napisan na kraju posta.
Dakle, rješenje mora ispuniti sljedeće zahtjeve za organiziranje samo RPM skladištenja:
Besplatno
Dostupnost paketa u spremištu nekoliko sekundi nakon učitavanja u spremište artefakata.
pulpa Meni se čini kao preterano projektovano rešenje.
Artefakti u SonaType Nexus pohranjeno u blob. U slučaju iznenadnog nestanka struje, nećete moći vratiti blob ako nemate rezervnu kopiju. Imali smo ovu grešku: 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 nikada nije pronađen.
Po defaultu inotify-createrepo nadgleda direktorij /var/www/repos/rpm-repo/.
Možete promijeniti ovaj direktorij u datoteci /etc/inotify-createrepo.conf.
Koristite
Prilikom dodavanja bilo koje datoteke u direktorij /var/www/repos/rpm-repo/ inotifywait će kreirati fajl /tmp/need_create. Funkcija run_createrepo radi u beskonačnoj petlji i nadgleda datoteku /tmp/need_create. Ako datoteka postoji, pokrenite createrepo --update.
Da biste napravili visoku dostupnost od postojećeg rješenja, mislim da možete koristiti 2 servera, Keepalived za HA i Lsyncd za sinkronizaciju artefakata. Lsyncd - demon koji prati promjene u lokalnom direktoriju, agregira ih i nakon određenog vremena, rsync ih počinje sinkronizirati. Detalji i postavke su opisani u postu"Brza sinhronizacija milijardu fajlova".
webdav
Postoji nekoliko načina za učitavanje datoteka: SSH, NFS, WebDav. Čini se da je WebDav moderna i jednostavna opcija.
Za WebDav ćemo koristiti Apache httpd. Zašto Apache httpd u 2020, a ne nginx?
Želio bih koristiti automatizirane alate za izgradnju Nginx + modula (na primjer, Webdav).
Mislim da ćete sami uraditi ostatak Apache httpd konfiguracije.
Nginx ispred Apache httpd
Za razliku od Apachea, Nginx koristi model obrade zahtjeva zasnovan na događajima, što znači da je potreban samo jedan HTTP serverski proces za bilo koji broj klijenata. Možete koristiti nginx i smanjiti opterećenje servera.
nginx-front.conf konfiguracija. Mislim da ćete ostatak nginx konfiguracije uraditi sami.