Ushbu postda biz oddiy inotify + createrepo skriptidan foydalangan holda rpm artefakt omborini ko'rib chiqamiz. Artifaktlar apache httpd yordamida webdav orqali yuklanadi. Nima uchun apache httpd post oxirida yoziladi.
Shunday qilib, yechim faqat RPM saqlashni tashkil qilish uchun quyidagi talablarga javob berishi kerak:
Ozod
Artefakt omboriga yuklanganidan bir necha soniya o'tgach, paketning omborda mavjudligi.
Xamiri Menga haddan tashqari ishlab chiqilgan yechim kabi ko'rinadi.
Artefaktlar SonaType Nexus blobda saqlanadi. To'satdan elektr uzilib qolgan taqdirda, sizda zaxirangiz bo'lmasa, blobni qayta tiklay olmaysiz. Bizda shunday xato bor edi: 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 hech qachon tiklanmadi.
Odatiy bo'lib inotify-createrepo katalogni kuzatib boradi /var/www/repos/rpm-repo/.
Ushbu katalogni faylda o'zgartirishingiz mumkin /etc/inotify-createrepo.conf.
foydalanish
Har qanday faylni katalogga qo'shganda /var/www/repos/rpm-repo/ inotifywait fayl yaratadi /tmp/need_create. run_createrepo funksiyasi cheksiz tsiklda ishlaydi va faylni nazorat qiladi /tmp/need_create. Agar fayl mavjud bo'lsa, ishga tushiring createrepo --update.
Mavjud yechimdan yuqori darajada foydalanish uchun siz ikkita serverdan foydalanishingiz mumkin, deb o'ylayman, HA uchun Keepalived va artefakt sinxronizatsiyasi uchun Lsyncd. Lsyncd - mahalliy katalogdagi o'zgarishlarni kuzatuvchi, ularni jamlaydigan va ma'lum vaqtdan so'ng rsync ularni sinxronlashni boshlaydigan demon. Tafsilotlar va sozlamalar postda tasvirlangan "Bir milliard faylni tez sinxronlashtirish".
webdav
Fayllarni yuklashning bir necha usullari mavjud: SSH, NFS, WebDav. WebDav zamonaviy va oddiy variant kabi ko'rinadi.
WebDav uchun biz Apache httpd dan foydalanamiz. Nega nginx emas, balki 2020 yilda Apache httpd?
Nginx + modullarini yaratish uchun avtomatlashtirilgan vositalardan foydalanmoqchiman (masalan, Webdav).
O'ylaymanki, siz Apache httpd konfiguratsiyasining qolgan qismini o'zingiz qilasiz.
Nginx Apache oldida httpd
Apache'dan farqli o'laroq, Nginx voqealarga asoslangan so'rovlarni qayta ishlash modelidan foydalanadi, ya'ni har qanday miqdordagi mijozlar uchun faqat bitta HTTP server jarayoni talab qilinadi. Siz nginx dan foydalanishingiz va server yukini kamaytirishingiz mumkin.
nginx-front.conf konfiguratsiyasi. O'ylaymanki, siz nginx konfiguratsiyasining qolgan qismini o'zingiz qilasiz.