Repository rpm basajan nganggo Inotify sareng webdav

Dina tulisan ieu urang bakal ningali panyimpen artefak rpm nganggo skrip saderhana sareng inotify + createrepo. Unggah artefak dilaksanakeun via webdav nganggo Apache httpd. Naha Apache httpd bakal ditulis nuju tungtung pos.

Janten, solusina kedah nyumponan syarat-syarat ieu pikeun ngatur ngan ukur neundeun RPM:

  • Gratis

  • Kasadiaan pakét dina gudang sababaraha detik sanggeus unggah ka gudang artefak.

  • Gampang masang sareng ngajaga

  • Kamampuhan pikeun nyieun kasadiaan tinggi

    Naha henteu SonaType Nexus atawa bubur:

  • Panyimpenan di SonaType Nexus atawa bubur loba jenis artefak ngabalukarkeun kanyataan yén SonaType Nexus atawa bubur janten titik tunggal kagagalan.

  • kasadiaan tinggi di SonaType Nexus geus dibayar.

  • bubur Sigana mah hiji solusi over-direkayasa keur kuring.

  • Artefak di SonaType Nexus disimpen dina gumpalan. Upami pareum listrik ngadadak, anjeun moal tiasa mulangkeun gumpalan upami anjeun teu gaduh cadangan. Kami ngagaduhan kasalahan ieu: 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 henteu kantos pulih.

Kode sumber

→ Kode sumber aya di dieu

Skrip utama sapertos kieu:

#!/bin/bash

source /etc/inotify-createrepo.conf
LOGFILE=/var/log/inotify-createrepo.log

function monitoring() {
    inotifywait -e close_write,delete -msrq --exclude ".repodata|.olddata|repodata" "${REPO}" | while read events 
    do
      echo $events >> $LOGFILE
      touch /tmp/need_create
    done
}

function run_createrepo() {
  while true; do
    if [ -f /tmp/need_create ];
    then
      rm -f /tmp/need_create
      echo "start createrepo $(date --rfc-3339=seconds)"
      /usr/bin/createrepo --update "${REPO}"
      echo "finish createrepo $(date --rfc-3339=seconds)"
    fi
    sleep 1
  done
}

echo "Start filesystem monitoring: Directory is $REPO, monitor logfile is $LOGFILE"
monitoring >> $LOGFILE &
run_createrepo >> $LOGFILE &

setting

Inotify-createrepo ngan ukur tiasa dianggo dina CentOS 7 atanapi langkung luhur. Teu tiasa dianggo dina CentOS 6.

yum -y install yum-plugin-copr
yum copr enable antonpatsev/inotify-createrepo
yum -y install inotify-createrepo
systemctl start inotify-createrepo

Konfigurasi

Sacara standar inotify-createrepo ngawas diréktori a /var/www/repos/rpm-repo/.

Anjeun tiasa ngarobih diréktori ieu dina file /etc/inotify-createrepo.conf.

pamakean

Nalika nambihan file naon waé kana diréktori /var/www/repos/rpm-repo/ inotifywait bakal nyiptakeun file /tmp/need_create. Fungsi run_createrepo dijalankeun dina loop anu henteu terbatas sareng ngawas file /tmp/need_create. Upami filena aya, teras jalankeun createrepo --update.

Éntri bakal muncul dina file:

/var/www/repos/rpm-repo/ CREATE nginx-1.16.1-1.el7.ngx.x86_64.rpm
start createrepo 2020-03-02 09:46:21+03:00
Spawning worker 0 with 1 pkgs
Spawning worker 1 with 0 pkgs
Spawning worker 2 with 0 pkgs
Spawning worker 3 with 0 pkgs
Workers Finished
Saving Primary metadata
Saving file lists metadata
Saving other metadata
Generating sqlite DBs
Sqlite DBs complete
finish createrepo 2020-03-02 09:46:22+03:00

Kamampuhan pikeun nyieun kasadiaan tinggi

Pikeun nyieun kasadiaan tinggi kaluar tina solusi aya, Jigana anjeun bisa make 2 server, Keepalived pikeun HA na Lsyncd pikeun sinkronisasi artefak. Lsyncd - daemon nu ngawas parobahan dina diréktori lokal, aggregates aranjeunna, sarta sanggeus waktu nu tangtu, rsync mimiti nyingkronkeun aranjeunna. Rincian sareng setelan dijelaskeun dina tulisan "Sinkronisasi gancang samilyar file".

webdav

Aya sababaraha cara pikeun unggah file: SSH, NFS, WebDav. WebDav sigana mangrupikeun pilihan modéren sareng saderhana.

Pikeun WebDav, urang bakal ngagunakeun Apache httpd. Naha Apache httpd di 2020 sareng sanés nginx?

Abdi hoyong nganggo alat otomatis pikeun ngawangun modul Nginx + (contona, Webdav).

Aya proyék pikeun ngawangun modul Nginx + - nginx-pembina. Upami anjeun nganggo nginx + wevdav pikeun unggah file, maka anjeun peryogi modul nginx-dav-ext-modul. Nalika nyobian ngawangun sareng nganggo Nginx sareng nginx-dav-ext-modul kalayan bantosan nginx-pembina urang bakal meunang kasalahan Dipaké ku http_dav_module tinimbang nginx-dav-ext-modul. Bug anu sami ditutup dina usum panas nginx: [emerg] diréktif kanyahoan dav_methods.

Kuring nyieun pamundut Tarik Tambahkeun cék git_url pikeun diselapkeun, diréfaktor deui --with-{}_module и lamun modul == "http_dav_module" append --with. Tapi maranéhna teu ditarima.

config webdav.conf

DavLockDB /var/www/html/DavLock
<VirtualHost localhost:80>
    ServerAdmin webmaster@localhost
    DocumentRoot /var/www/html
    ErrorLog /var/log/httpd/error.log
    CustomLog /var/log/httpd/access.log combined

    Alias /rpm /var/www/repos/rpm-repo
    <Directory /var/www/repos/rpm-repo>
        DAV On
        Options Indexes FollowSymlinks SymLinksifOwnerMatch IncludesNOEXEC
        IndexOptions NameWidth=* DescriptionWidth=*
        AllowOverride none
        Require all granted
    </Directory>
</VirtualHost>

Jigana anjeun bakal ngalakukeun sesa konfigurasi Apache httpd sorangan.

Nginx di hareup Apache httpd

Beda sareng Apache, Nginx nganggo modél pamrosésan pamundut dumasar-kajadian, anu hartosna ngan ukur hiji prosés server HTTP anu diperyogikeun pikeun sajumlah klien. Anjeun tiasa nganggo nginx sareng ngirangan beban server.

nginx-front.conf config. Jigana anjeun bakal ngalakukeun sesa konfigurasi nginx sorangan.

upstream nginx_front {
    server localhost:80;
}

server {
    listen 443 ssl;
    server_name ваш-виртуальных-хост;
    access_log /var/log/nginx/nginx-front-access.log main;
    error_log /var/log/nginx/nginx-front.conf-error.log warn;

    location / {
        proxy_pass http://nginx_front;
    }
}

Ngundeur file via WebDav

Ngundeur rpm gampang pisan.

curl -T ./nginx-1.16.1-1.el7.ngx.x86_64.rpm https://ваш-виртуальный-хост/rpm/

sumber: www.habr.com

Tambahkeun komentar