Repositori rpm sederhana menggunakan Inotify dan webdav
Dalam posting ini, kita akan melihat repositori artefak rpm menggunakan skrip inotify + createrepo sederhana. Artefak diunggah melalui webdav menggunakan apache httpd. Mengapa apache httpd akan ditulis menjelang akhir posting.
Jadi, solusinya harus memenuhi persyaratan berikut untuk mengatur penyimpanan RPM saja:
Gratis
Ketersediaan paket di repositori beberapa detik setelah diunggah ke repositori artefak.
Bubur Sepertinya solusi yang terlalu direkayasa untuk saya.
Artefak di SonaType Nexus disimpan dalam gumpalan. Jika listrik padam secara tiba-tiba, Anda tidak akan dapat memulihkan blob jika tidak memiliki cadangan. Kami mengalami kesalahan ini: 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 tidak pernah ditemukan.
Secara default inotify-createrepo memantau direktori /var/www/repos/rpm-repo/.
Anda dapat mengubah direktori ini di file /etc/inotify-createrepo.conf.
Menggunakan
Saat menambahkan file apa pun ke direktori /var/www/repos/rpm-repo/ inotifywait akan membuat file /tmp/need_create. Fungsi run_createrepo berjalan dalam loop tak terbatas dan memantau file /tmp/need_create. Jika file tersebut ada, maka jalankan createrepo --update.
Untuk membuat ketersediaan tinggi dari solusi yang ada, saya rasa Anda dapat menggunakan 2 server, Keepalived untuk HA dan Lsyncd untuk sinkronisasi artefak. Sinkronisasi - daemon yang memantau perubahan di direktori lokal, menggabungkannya, dan setelah waktu tertentu, rsync mulai menyinkronkannya. Detail dan pengaturan dijelaskan di pos "Sinkronisasi cepat dari satu miliar file".
WebDav
Ada beberapa cara untuk mengunggah file: SSH, NFS, WebDav. WebDav tampaknya menjadi pilihan modern dan sederhana.
Untuk WebDav, kami akan menggunakan Apache httpd. Mengapa Apache httpd pada tahun 2020 dan bukan nginx?
Saya ingin menggunakan alat otomatis untuk membuat modul Nginx + (misalnya, Webdav).
Saya pikir Anda akan melakukan sendiri konfigurasi Apache httpd lainnya.
Nginx di depan Apache httpd
Tidak seperti Apache, Nginx menggunakan model pemrosesan permintaan berbasis peristiwa, yang berarti hanya satu proses server HTTP yang diperlukan untuk sejumlah klien. Anda dapat menggunakan nginx dan mengurangi beban server.
konfigurasi nginx-front.conf. Saya pikir Anda akan melakukan sendiri konfigurasi nginx lainnya.