Kho lưu trữ rpm đơn giản sử dụng Inotify và webdav
Trong bài đăng này, chúng ta sẽ xem xét kho lưu trữ tạo tác rpm bằng cách sử dụng tập lệnh inotify + createrepo đơn giản. Các vật phẩm được tải lên qua webdav bằng apache httpd. Tại sao apache httpd sẽ được viết ở cuối bài.
Vì vậy, giải pháp phải đáp ứng các yêu cầu sau để chỉ tổ chức lưu trữ RPM:
Miễn phí
Tính khả dụng của gói trong kho lưu trữ vài giây sau khi tải lên kho lưu trữ hiện vật.
Pulp Có vẻ như một giải pháp được thiết kế quá mức đối với tôi.
hiện vật trong SonaType Nexus được lưu trữ trong blob. Trong trường hợp mất điện đột ngột, bạn sẽ không thể khôi phục blob nếu không có bản sao lưu. Chúng tôi gặp lỗi này: 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 không bao giờ được phục hồi.
Theo mặc định, inotify-createrepo giám sát một thư mục /var/www/repos/rpm-repo/.
Bạn có thể thay đổi thư mục này trong tệp /etc/inotify-createrepo.conf.
Sử dụng
Khi thêm bất kỳ tệp nào vào một thư mục /var/www/repos/rpm-repo/ inotifywait sẽ tạo một tệp /tmp/need_create. Hàm run_createrepo chạy trong một vòng lặp vô hạn và theo dõi tệp /tmp/need_create. Nếu tệp tồn tại, sau đó chạy createrepo --update.
Để tạo tính sẵn sàng cao cho một giải pháp hiện có, tôi nghĩ bạn có thể sử dụng 2 máy chủ, Keepalived cho HA và Lsyncd để đồng bộ hóa tạo tác. Lsyncd - một trình nền theo dõi các thay đổi trong thư mục cục bộ, tổng hợp chúng và sau một thời gian nhất định, rsync bắt đầu đồng bộ hóa chúng. Chi tiết và cài đặt được mô tả trong bài đăng "Đồng bộ hóa nhanh một tỷ tệp".
WebDav
Có một số cách để tải tệp lên: SSH, NFS, WebDav. WebDav dường như là một lựa chọn hiện đại và đơn giản.
Đối với WebDav, chúng tôi sẽ sử dụng Apache httpd. Tại sao Apache httpd vào năm 2020 mà không phải nginx?
Tôi muốn sử dụng các công cụ tự động để xây dựng các mô-đun Nginx + (ví dụ: Webdav).
Tôi nghĩ bạn sẽ tự mình thực hiện phần còn lại của cấu hình Apache httpd.
Nginx trước Apache httpd
Không giống như Apache, Nginx sử dụng mô hình xử lý yêu cầu dựa trên sự kiện, có nghĩa là chỉ cần một quy trình máy chủ HTTP cho bất kỳ số lượng máy khách nào. Bạn có thể sử dụng nginx và giảm tải máy chủ.
cấu hình nginx-front.conf. Tôi nghĩ bạn sẽ tự mình thực hiện phần còn lại của cấu hình nginx.