En ĉi tiu afiŝo ni rigardos la rpm-artefaktan stokadon uzante simplan skripton kun inotify + createrepo. Alŝuto de artefaktoj estas farita per webdav uzante apache httpd. Kial apache httpd estos skribita al la fino de la afiŝo.
Do, la solvo devas plenumi la sekvajn postulojn por organizi nur RPM-stokadon:
Senpaga
Havebleco de la pakaĵo en la deponejo kelkajn sekundojn post alŝutado al la artefakto-deponejo.
Artefaktoj en SonaType Nexus estas konservitaj en blob. Se estas subita elektropaneo, vi ne povos restarigi la blob se vi ne havas sekurkopion. Ni havis ĉi tiun eraron: 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 neniam estis reestigita.
Defaŭlte, inotify-createrepo kontrolas la dosierujon /var/www/repos/rpm-repo/.
Vi povas ŝanĝi ĉi tiun dosierujon en la dosiero /etc/inotify-createrepo.conf.
Uzo
Aldonante ajnan dosieron al dosierujo /var/www/repos/rpm-repo/ inotifywait kreos la dosieron /tmp/need_create. La funkcio run_createrepo funkcias en senfina buklo kaj kontrolas la dosieron /tmp/need_create. Se la dosiero ekzistas, ĝi ruliĝas createrepo --update.
Por fari altan haveblecon el ekzistanta solvo, mi pensas, ke vi povas uzi 2 servilojn, Keepalived por HA kaj Lsyncd por sinkronigi artefaktojn. Lsyncd - demono kiu kontrolas ŝanĝojn en loka dosierujo, agregas ilin, kaj post certa tempo rsync komencas sinkronigi ilin. Detaloj kaj aranĝo estas priskribitaj en la afiŝo "Rapida sinkronigo de miliardo da dosieroj".
WebDav
Vi povas alŝuti dosierojn en pluraj manieroj: SSH, NFS, WebDav. WebDav ŝajnas esti moderna kaj simpla opcio.
Por WebDav ni uzos Apache httpd. Kial Apache httpd en 2020 kaj ne nginx?
Mi ŝatus uzi aŭtomatajn ilojn por konstrui Nginx +-modulojn (ekzemple Webdav).
Mi pensas, ke vi mem povas fari la reston de la Apache httpd-agordo.
Nginx antaŭ Apache httpd
Male al Apache, Nginx uzas modelon pri pettraktado bazita en evento, kiu postulas nur unu HTTP-servilan procezon por iu ajn nombro da klientoj. Vi povas uzi nginx kaj redukti la ŝarĝon sur la servilo.
Agordo nginx-front.conf. Mi pensas, ke vi povas fari la reston de la agordo de nginx mem.