În această postare, ne vom uita la un depozit de artefacte rpm folosind un simplu script inotify + createrepo. Artefactele sunt încărcate prin webdav folosind apache httpd. De ce apache httpd va fi scris spre sfârșitul postării.
Deci, soluția trebuie să îndeplinească următoarele cerințe pentru organizarea doar a stocării RPM:
Gratuit
Disponibilitatea pachetului în depozit la câteva secunde după încărcare în depozitul de artefacte.
Artefacte în SonaType Nexus stocat în blob. În cazul unei întreruperi bruște de curent, nu veți putea restabili blob-ul dacă nu aveți o copie de rezervă. Am avut aceasta eroare: 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 nu a fost niciodată recuperat.
În mod implicit, inotify-createrepo monitorizează un director /var/www/repos/rpm-repo/.
Puteți schimba acest director în fișier /etc/inotify-createrepo.conf.
Folosi
Când adăugați orice fișier într-un director /var/www/repos/rpm-repo/ inotifywait va crea un fișier /tmp/need_create. Funcția run_createrepo rulează într-o buclă infinită și monitorizează fișierul /tmp/need_create. Dacă fișierul există, atunci rulați createrepo --update.
Pentru a face o disponibilitate ridicată dintr-o soluție existentă, cred că puteți folosi 2 servere, Keepalived pentru HA și Lsyncd pentru sincronizarea artefactelor. Lsyncd - un demon care monitorizează modificările din directorul local, le agregează și, după un anumit timp, rsync începe să le sincronizeze. Detaliile și setările sunt descrise în postarea „Sincronizare rapidă a unui miliard de fișiere".
WebDav
Există mai multe moduri de a încărca fișiere: SSH, NFS, WebDav. WebDav pare a fi o opțiune modernă și simplă.
Pentru WebDav, vom folosi Apache httpd. De ce Apache httpd în 2020 și nu nginx?
Aș dori să folosesc instrumente automate pentru construirea modulelor Nginx + (de exemplu, Webdav).
Cred că veți face singur restul configurației Apache httpd.
Nginx în fața Apache httpd
Spre deosebire de Apache, Nginx folosește un model de procesare a cererilor bazat pe evenimente, ceea ce înseamnă că este necesar un singur proces de server HTTP pentru orice număr de clienți. Puteți utiliza nginx și puteți reduce încărcarea serverului.
nginx-front.conf config. Cred că veți face singur restul configurației nginx.