En aquesta publicació, veurem un dipòsit d'artefactes rpm mitjançant un senzill script inotify + createrepo. Els artefactes es carreguen mitjançant webdav mitjançant apache httpd. Per què apache httpd s'escriurà al final de la publicació.
Per tant, la solució ha de complir els requisits següents per organitzar només l'emmagatzematge RPM:
Gratuït
Disponibilitat del paquet al repositori uns segons després de pujar-lo al repositori d'artefactes.
Polpa Em sembla una solució exagerada d'enginyeria.
Artefactes a SonaType Nexus emmagatzemat en blob. En cas d'un tall sobtat d'energia, no podreu restaurar el blob si no teniu una còpia de seguretat. Hem tingut aquest error: 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 mai es va recuperar.
Per defecte, inotify-createrepo supervisa un directori /var/www/repos/rpm-repo/.
Podeu canviar aquest directori al fitxer /etc/inotify-createrepo.conf.
Utilitzar
Quan s'afegeix qualsevol fitxer a un directori /var/www/repos/rpm-repo/ inotifywait crearà un fitxer /tmp/need_create. La funció run_createrepo s'executa en un bucle infinit i supervisa el fitxer /tmp/need_create. Si el fitxer existeix, executeu-lo createrepo --update.
Per fer una alta disponibilitat d'una solució existent, crec que podeu utilitzar 2 servidors, Keepalived per a HA i Lsyncd per a la sincronització d'artefactes. Lsyncd - un dimoni que supervisa els canvis al directori local, els agrega i, després d'un temps determinat, rsync comença a sincronitzar-los. Els detalls i la configuració es descriuen a la publicació "Sincronització ràpida de mil milions de fitxers".
webdav
Hi ha diverses maneres de pujar fitxers: SSH, NFS, WebDav. WebDav sembla ser una opció moderna i senzilla.
Per a WebDav, utilitzarem Apache httpd. Per què Apache httpd el 2020 i no nginx?
M'agradaria utilitzar eines automatitzades per crear mòduls Nginx + (per exemple, Webdav).
Crec que fareu la resta de la configuració d'Apache httpd vosaltres mateixos.
Nginx davant d'Apache httpd
A diferència d'Apache, Nginx utilitza un model de processament de sol·licituds basat en esdeveniments, el que significa que només cal un procés de servidor HTTP per a qualsevol nombre de clients. Podeu utilitzar nginx i reduir la càrrega del servidor.
nginx-front.conf config. Crec que fareu la resta de la configuració de nginx vosaltres mateixos.