Sa post na ito, titingnan natin ang isang rpm artifact repository gamit ang isang simpleng inotify + createrepo script. Ang mga artifact ay ina-upload sa pamamagitan ng webdav gamit ang apache httpd. Bakit isusulat ang apache httpd sa dulo ng post.
Kaya, dapat matugunan ng solusyon ang mga sumusunod na kinakailangan para sa pag-aayos lamang ng imbakan ng RPM:
libre
Availability ng package sa repository ng ilang segundo pagkatapos mag-upload sa artifact repository.
Mataas na availability sa SonaType Nexus ay binabayaran.
Sapal Tila isang over-engineered na solusyon sa akin.
Mga artifact sa SonaType Nexus nakaimbak sa blob. Sa kaganapan ng biglaang pagkawala ng kuryente, hindi mo maibabalik ang blob kung wala kang backup. Nagkaroon kami ng error na ito: 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. Hindi na nakuhang muli ang blob.
Bilang default, sinusubaybayan ng inotify-createrepo ang isang direktoryo /var/www/repos/rpm-repo/.
Maaari mong baguhin ang direktoryo na ito sa file /etc/inotify-createrepo.conf.
Gamitin
Kapag nagdaragdag ng anumang file sa isang direktoryo /var/www/repos/rpm-repo/ lilikha ng file ang inotifywait /tmp/need_create. Ang run_createrepo function ay tumatakbo sa isang walang katapusang loop at sinusubaybayan ang file /tmp/need_create. Kung ang file ay umiiral, pagkatapos ay tumakbo createrepo --update.
Upang magkaroon ng mataas na kakayahang magamit mula sa isang umiiral na solusyon, sa tingin ko maaari kang gumamit ng 2 server, Keepalived para sa HA at Lsyncd para sa pag-synchronize ng artifact. Lsyncd - isang daemon na sinusubaybayan ang mga pagbabago sa lokal na direktoryo, pinagsasama-sama ang mga ito, at pagkatapos ng isang tiyak na oras, ang rsync ay magsisimulang i-synchronize ang mga ito. Ang mga detalye at setting ay inilarawan sa post na "Mabilis na pag-synchronize ng isang bilyong file".
WebDav
Mayroong ilang mga paraan upang mag-upload ng mga file: SSH, NFS, WebDav. Ang WebDav ay tila isang moderno at simpleng opsyon.
Para sa WebDav, gagamitin namin ang Apache httpd. Bakit Apache httpd sa 2020 at hindi nginx?
Gusto kong gumamit ng mga automated na tool para sa pagbuo ng Nginx + modules (halimbawa, Webdav).
Sa tingin ko ikaw mismo ang gagawa ng natitirang configuration ng Apache httpd.
Nginx sa harap ng Apache httpd
Hindi tulad ng Apache, ang Nginx ay gumagamit ng modelo ng pagpoproseso ng kahilingan na batay sa kaganapan, na nangangahulugang isang proseso ng HTTP server lamang ang kinakailangan para sa anumang bilang ng mga kliyente. Maaari mong gamitin ang nginx at bawasan ang pag-load ng server.
nginx-front.conf config. Sa tingin ko ikaw mismo ang gagawa ng natitirang configuration ng nginx.