في هذا المنشور ، سنلقي نظرة على مستودع القطع الأثرية rpm باستخدام برنامج نصي بسيط inotify + craduateepo. يتم تحميل القطع الأثرية عبر webdav باستخدام apache httpd. لماذا سيتم كتابة apache httpd في نهاية المنشور.
لذلك ، يجب أن يفي الحل بالمتطلبات التالية لتنظيم تخزين RPM فقط:
حر
توفر الحزمة في المستودع بعد ثوانٍ قليلة من تحميلها إلى مستودع القطع الأثرية.
القطع الأثرية في سونا تايب نيكزس مخزنة في النقطة. في حالة انقطاع التيار الكهربائي المفاجئ ، لن تتمكن من استعادة النقطة إذا لم يكن لديك نسخة احتياطية. كان لدينا هذا الخطأ: 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 أبدًا.
بشكل افتراضي يراقب inotify-craduateepo الدليل /var/www/repos/rpm-repo/.
يمكنك تغيير هذا الدليل في الملف /etc/inotify-createrepo.conf.
استخدام
عند إضافة أي ملف إلى دليل /var/www/repos/rpm-repo/ سيقوم inotifywait بإنشاء ملف /tmp/need_create. تعمل وظيفة run_cicturesepo في حلقة لا نهائية وتراقب الملف /tmp/need_create. إذا كان الملف موجودًا ، فقم بتشغيل createrepo --update.
لتوفير إمكانية عالية من أحد الحلول الحالية ، أعتقد أنه يمكنك استخدام خادمين ، Keepalived لـ HA و Lsyncd لمزامنة الأداة. سينكد - برنامج خفي يراقب التغييرات في الدليل المحلي ، ويجمعها ، وبعد فترة زمنية معينة ، يبدأ rsync في مزامنتها. التفاصيل والإعدادات موصوفة في المنشور "مزامنة سريعة لمليار ملف".
WEBDAV
هناك عدة طرق لتحميل الملفات: SSH و NFS و WebDav. يبدو أن WebDav خيار حديث وبسيط.
بالنسبة إلى WebDav ، سنستخدم Apache httpd. لماذا Apache httpd في 2020 وليس nginx؟
أرغب في استخدام الأدوات الآلية لبناء وحدات Nginx + (على سبيل المثال ، Webdav).
على عكس Apache ، يستخدم Nginx نموذج معالجة الطلب المستند إلى الحدث ، مما يعني أن عملية خادم HTTP واحدة فقط مطلوبة لأي عدد من العملاء. يمكنك استخدام nginx وتقليل حمل الخادم.
تكوين nginx-front.conf. أعتقد أنك ستفعل بقية إعدادات nginx بنفسك.