Eenvoudige rpm-bewaarplek met behulp van Inotify en webdav
In hierdie pos sal ons kyk na die rpm-artefakberging met behulp van 'n eenvoudige skrif met inotify + createrepo. Die oplaai van artefakte word uitgevoer via webdav met behulp van apache httpd. Hoekom apache httpd sal aan die einde van die pos geskryf word.
Die oplossing moet dus aan die volgende vereistes voldoen om slegs RPM-berging te organiseer:
gratis
Beskikbaarheid van die pakket in die bewaarplek 'n paar sekondes nadat dit na die artefakbewaarplek opgelaai is.
Artefakte in SonaType Nexus word in blob gestoor. As daar 'n skielike kragonderbreking is, sal jy nie die blob kan herstel as jy nie 'n rugsteun het nie. Ons het hierdie fout gehad: 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 is nooit herstel nie.
By verstek monitor inotify-createrepo die gids /var/www/repos/rpm-repo/.
Jy kan hierdie gids in die lêer verander /etc/inotify-createrepo.conf.
Gebruik
Wanneer enige lêer by 'n gids gevoeg word /var/www/repos/rpm-repo/ inotifywait sal die lêer skep /tmp/need_create. Die run_createrepo-funksie loop in 'n eindelose lus en monitor die lêer /tmp/need_create. As die lêer bestaan, loop dit createrepo --update.
Om hoë beskikbaarheid van 'n bestaande oplossing te maak, dink ek jy kan 2 bedieners gebruik, Keepalived vir HA en Lsyncd vir sinchronisering van artefakte. Lsyncd - 'n daemoon wat veranderinge in 'n plaaslike gids monitor, dit saamvoeg, en na 'n sekere tyd begin rsync dit sinchroniseer. Besonderhede en opstelling word beskryf in die pos "Vinnige sinchronisasie van 'n miljard lêers".
WebDav
U kan lêers op verskeie maniere oplaai: SSH, NFS, WebDav. WebDav blyk 'n moderne en eenvoudige opsie te wees.
Vir WebDav sal ons Apache httpd gebruik. Waarom Apache httpd in 2020 en nie nginx nie?
Ek wil graag outomatiese gereedskap gebruik om Nginx + modules te bou (byvoorbeeld Webdav).
Ek dink jy kan die res van die Apache httpd-opstelling self doen.
Nginx voor Apache httpd
Anders as Apache, gebruik Nginx 'n gebeurtenis-gebaseerde versoekverwerkingsmodel, wat slegs een HTTP-bedienerproses vir enige aantal kliënte vereis. U kan nginx gebruik en die las op die bediener verminder.
Stel nginx-front.conf op. Ek dink jy kan die res van die nginx-opstelling self doen.