Vienkārša rpm repozitorijs, izmantojot Inotify un webdav
Šajā ziņojumā mēs apskatīsim rpm artefaktu krātuvi, izmantojot vienkāršu inotify + Createrepo skriptu. Artefakti tiek augšupielādēti, izmantojot Webdav, izmantojot apache httpd. Kāpēc apache httpd, tiks rakstīts ziņas beigās.
Tātad risinājumam jāatbilst šādām prasībām, lai organizētu tikai RPM krātuvi:
Bezmaksas
Pakotnes pieejamība repozitorijā dažas sekundes pēc augšupielādes artefaktu krātuvē.
Artefakti iekšā SonaType Nexus glabājas lāse. Pēkšņa strāvas padeves pārtraukuma gadījumā jūs nevarēsit atjaunot lāsumu, ja jums nav dublējuma. Mums bija šāda kļūda: 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. Blobs nekad netika atgūts.
Pēc noklusējuma inotify-createrepo uzrauga direktoriju /var/www/repos/rpm-repo/.
Jūs varat mainīt šo direktoriju failā /etc/inotify-createrepo.conf.
Izmantot
Pievienojot direktorijam jebkuru failu /var/www/repos/rpm-repo/ inotifywait izveidos failu /tmp/need_create. Funkcija run_createrepo darbojas bezgalīgā ciklā un uzrauga failu /tmp/need_create. Ja fails pastāv, palaidiet createrepo --update.
Lai nodrošinātu augstu pieejamību no esoša risinājuma, es domāju, ka varat izmantot 2 serverus, Keepalived for HA un Lsyncd artefaktu sinhronizēšanai. Lsyncd - dēmons, kas uzrauga izmaiņas lokālajā direktorijā, apkopo tās un pēc noteikta laika rsync sāk tās sinhronizēt. Sīkāka informācija un iestatījumi ir aprakstīti ziņojumā "Ātra miljarda failu sinhronizācija".
WebDav
Ir vairāki veidi, kā augšupielādēt failus: SSH, NFS, WebDav. WebDav šķiet moderna un vienkārša iespēja.
WebDav izmantosim Apache httpd. Kāpēc Apache httpd 2020. gadā, nevis nginx?
Es vēlētos izmantot automatizētus rīkus Nginx + moduļu veidošanai (piemēram, Webdav).
Es domāju, ka jūs pats veiksit pārējo Apache httpd konfigurāciju.
Nginx pirms Apache httpd
Atšķirībā no Apache, Nginx izmanto uz notikumiem balstītu pieprasījumu apstrādes modeli, kas nozīmē, ka jebkuram klientu skaitam ir nepieciešams tikai viens HTTP servera process. Varat izmantot nginx un samazināt servera slodzi.
nginx-front.conf konfigurācija. Es domāju, ka jūs pats veiksit pārējo nginx konfigurāciju.