در این پست، ما به مخزن آرتیفکت rpm با استفاده از یک اسکریپت ساده inotify + createrepo نگاه می کنیم. مصنوعات از طریق webdav با استفاده از apache httpd آپلود می شوند. چرا apache httpd در انتهای پست نوشته خواهد شد.
بنابراین، راه حل باید الزامات زیر را برای سازماندهی تنها ذخیره سازی RPM برآورده کند:
رایگان
در دسترس بودن بسته در مخزن چند ثانیه پس از آپلود در مخزن مصنوع.
خمیر کاغذ به نظر من یک راه حل بیش از حد مهندسی شده است.
مصنوعات در SonaType Nexus ذخیره شده در لکه در صورت قطع ناگهانی برق، اگر نسخه پشتیبان نداشته باشید، نمی توانید حباب را بازیابی کنید. ما این خطا را داشتیم: 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-createrepo یک دایرکتوری را نظارت می کند /var/www/repos/rpm-repo/.
می توانید این دایرکتوری را در فایل تغییر دهید /etc/inotify-createrepo.conf.
استفاده
هنگام افزودن هر فایلی به دایرکتوری /var/www/repos/rpm-repo/ inotifywait یک فایل ایجاد می کند /tmp/need_create. تابع run_createrepo در یک حلقه بی نهایت اجرا می شود و فایل را نظارت می کند /tmp/need_create. اگر فایل وجود دارد، اجرا کنید createrepo --update.
برای ایجاد دسترسی بالا از یک راه حل موجود، فکر می کنم می توانید از 2 سرور Keepalived برای HA و Lsyncd برای همگام سازی مصنوع استفاده کنید. Lsyncd - دیمونی که تغییرات دایرکتوری محلی را رصد می کند، آنها را جمع می کند و پس از مدتی مشخص، rsync شروع به همگام سازی آنها می کند. جزئیات و تنظیمات در پست توضیح داده شده است "همگام سازی سریع یک میلیارد فایل".
وب داو
چندین راه برای آپلود فایل ها وجود دارد: SSH، NFS، WebDav. WebDav به نظر یک گزینه مدرن و ساده است.
برای WebDav از آپاچی httpd استفاده خواهیم کرد. چرا آپاچی در سال 2020 httpd کرد و نه nginx؟
من می خواهم از ابزارهای خودکار برای ساخت ماژول های Nginx + استفاده کنم (مثلاً Webdav).
فکر می کنم بقیه تنظیمات httpd آپاچی را خودتان انجام دهید.
Nginx در مقابل آپاچی httpd
برخلاف Apache، Nginx از یک مدل پردازش درخواست مبتنی بر رویداد استفاده میکند، به این معنی که تنها یک فرآیند سرور HTTP برای هر تعداد مشتری مورد نیاز است. می توانید از nginx استفاده کنید و بار سرور را کاهش دهید.
پیکربندی nginx-front.conf. فکر می کنم بقیه تنظیمات nginx را خودتان انجام دهید.