ProHoster > Blog > uprava > Jednostavno rpm spremište koje koristi Inotify i webdav
Jednostavno rpm spremište koje koristi Inotify i webdav
U ovom ćemo postu pogledati pohranu artefakata rpm pomoću jednostavne skripte s inotify + createrepo. Učitavanje artefakata provodi se putem webdava koristeći apache httpd. Zašto apache httpd bit će napisano pred kraj posta.
Dakle, rješenje mora ispunjavati sljedeće zahtjeve za organiziranje samo RPM pohrane:
Besplatno
Dostupnost paketa u repozitoriju nekoliko sekundi nakon učitavanja u repozitorij artefakata.
Artefakti u SonaType Nexus pohranjeni su u blob. Ako dođe do iznenadnog nestanka struje, nećete moći vratiti blob ako nemate sigurnosnu 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 obnovljen.
Prema zadanim postavkama, inotify-createrepo nadzire direktorij /var/www/repos/rpm-repo/.
Možete promijeniti ovaj direktorij u datoteci /etc/inotify-createrepo.conf.
Koristiti
Prilikom dodavanja bilo koje datoteke u direktorij /var/www/repos/rpm-repo/ inotifywait će stvoriti datoteku /tmp/need_create. Funkcija run_createrepo radi u beskonačnoj petlji i nadzire datoteku /tmp/need_create. Ako datoteka postoji, pokreće se createrepo --update.
Da biste napravili visoku dostupnost postojećeg rješenja, mislim da možete koristiti 2 poslužitelja, Keepalived za HA i Lsyncd za sinkronizaciju artefakata. Lsyncd - demon koji prati promjene u lokalnom imeniku, agregira ih, a nakon određenog vremena rsync ih počinje sinkronizirati. Detalji i postavljanje opisani su u postu "Brza sinkronizacija milijarde datoteka".
WebDAV
Datoteke možete učitati na nekoliko načina: SSH, NFS, WebDav. Čini se da je WebDav moderna i jednostavna opcija.
Za WebDav koristit ćemo 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 ostatak Apache httpd podešavanja možete napraviti sami.
Nginx prije Apache httpd
Za razliku od Apachea, Nginx koristi model obrade zahtjeva temeljen na događajima, koji zahtijeva samo jedan proces HTTP poslužitelja za bilo koji broj klijenata. Možete koristiti nginx i smanjiti opterećenje poslužitelja.
Konfiguracija nginx-front.conf. Mislim da ostatak postavki nginxa možete napraviti sami.