Kaydka rpm fudud iyadoo la isticmaalayo Inotify iyo webdav

Maqaalkan, waxaanu ku eegi doonaa kaydka artifact rpm anagoo adeegsanayna qoraal fudud oo inotify + createrepo ah. Farshaxanka waxaa lagu soo shubaa webdav iyadoo la isticmaalayo apache httpd. Waa maxay sababta apache httpd loo qori doonaa dhamaadka boostada.

Markaa, xalku waa inuu buuxiyaa shuruudaha soo socda si loo abaabulo kaydinta RPM oo keliya:

  • Bilaash

  • Helitaanka xirmada ee kaydka dhawr ilbiriqsi ka dib marka la soo geliyo kaydka artifact

  • Si fudud loo rakibo oo loo dayactiro

  • Awoodda samaynta helitaan sare

    Maxaa diidaya SonaType Nexus ama Laalaabka:

  • Kaydinta gudaha SonaType Nexus ama Laalaabka noocyo badan oo farshaxan ah ayaa keenaya xaqiiqda SonaType Nexus ama Laalaabka noqday hal qodob oo guuldarraystay.

  • Helitaanka sare ee gudaha SonaType Nexus waa la bixiyaa.

  • Laalaabka Waxay ila tahay xal aad loo farsameeyay.

  • Farshaxanada ku jira SonaType Nexus ku kaydsan blob. Haddii ay dhacdo koronto degdeg ah, ma awoodid inaad dib u soo celiso boobka haddii aadan haysan kayd. Waxaan qabnay qaladkan: 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 waligeed lama soo kaban.

Lambarka isha

β†’ Koodhka isha ayaa ku yaal halkan

Qoraalka ugu muhiimsan wuxuu u eg yahay sidan:

#!/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 &

Ku rakibida

inotify-createrepo kaliya waxay ku shaqeysaa CentOS 7 ama ka sareeya. Way kari wayday inay ku shaqeyso CentOS 6.

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

Habaynta

Sida caadiga ah inotify-createrepo waxay kormeertaa hagaha /var/www/repos/rpm-repo/.

Waxaad ku bedeli kartaa hagahan faylka /etc/inotify-createrepo.conf.

Isticmaal

Marka lagu daro fayl kasta hagaha /var/www/repos/rpm-repo/ inotifywait wuxuu abuuri doonaa fayl /tmp/need_create. Shaqada run_createrepo waxay ku socotaa wareeg aan xad lahayn waxayna la socotaa faylka /tmp/need_create. Haddii faylku jiro, ka dibna orod createrepo --update.

Gelitaan ayaa ka muuqan doona faylka:

/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

Awoodda samaynta helitaan sare

Si aad u hesho helitaan sare oo ka baxsan xalka jira, waxaan u maleynayaa inaad isticmaali karto 2 server, Keepalive for HA iyo Lsyncd ee isku xirka artifact. Lsyncd - Daemon-ka isha ku haysa isbeddellada ku dhaca tusaha deegaanka, isu-geyntooda, iyo wakhti go'an ka dib, rsync wuxuu bilaabayaa inuu la mideeyo. Faahfaahinta iyo dejinta ayaa lagu sharaxay boostada"Isku-dubarid degdeg ah oo bilyan faylal ah".

webdav

Waxaa jira dhowr siyaabood oo loo geliyo faylasha: SSH, NFS, WebDav. WebDav waxay u muuqataa inay tahay ikhtiyaar casri ah oo fudud.

WebDav, waxaan u isticmaali doonaa Apache httpd. Waa maxay sababta Apache httpd ee 2020 oo aan nginx ahayn?

Waxaan jeclaan lahaa inaan u isticmaalo aaladaha otomaatiga ah ee lagu dhisayo Nginx + modules (tusaale, Webdav).

Waxaa jira mashruuc lagu dhisayo Nginx + modules - nginx-dhise. Haddii aad isticmaasho nginx + wevdav si aad u geliso faylasha, markaa waxaad u baahan tahay module nginx-dav-ext-module. Markaad isku dayeyso inaad ku dhisto oo aad isticmaasho Nginx nginx-dav-ext-module iyadoo gacan ka heleysa nginx-dhise waxaan heli doonaa qalad Waxaa adeegsada http_dav_module beddelkii nginx-dav-ext-module. Isla cayayaankaas ayaa la xiray xagaaga nginx: [soo baxay] dardaaran aan la garanayn dav_methods.

Waxaan sameeyay codsi jiid Ku dar jeeg git_url ku-xidhan, dib-u-habayn - leh-{}_module ΠΈ haddii moduleka == "http_dav_module" ku lifaaqan --leh. Laakin lama aqbalin.

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>

Waxaan u maleynayaa inaad adigu samayn doonto inta ka hartay Apache httpd.

Nginx oo ku taal Apache httpd

Si ka duwan Apache, Nginx waxay isticmaashaa qaabka codsiga ku salaysan dhacdada, taas oo macnaheedu yahay in hal nidaam oo HTTP ah oo kaliya looga baahan yahay tiro kasta oo macaamiisha ah. Waxaad isticmaali kartaa nginx oo aad yareyn kartaa culeyska server-ka.

nginx-front.conf config. Waxaan u maleynayaa inaad adigu samayn doonto inta ka hartay qaabeynta nginx.

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;
    }
}

Ku soo dejinta faylasha iyada oo loo marayo WebDav

Soo dejinta rpm waa mid aad u fudud.

curl -T ./nginx-1.16.1-1.el7.ngx.x86_64.rpm https://ваш-Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΉ-хост/rpm/

Source: www.habr.com

Add a comment