Ibi ipamọ rpm ti o rọrun ni lilo Inotify ati webdav

Ninu ifiweranṣẹ yii a yoo wo ibi ipamọ artifact rpm nipa lilo iwe afọwọkọ ti o rọrun pẹlu inotify + createrepo. Ikojọpọ awọn ohun-ọṣọ ni a ṣe nipasẹ webdav nipa lilo apache httpd. Kini idi ti apache httpd yoo kọ si opin ifiweranṣẹ naa.

Nitorinaa, ojutu naa gbọdọ pade awọn ibeere wọnyi fun siseto ibi ipamọ RPM nikan:

  • Ọfẹ

  • Wiwa ti package ni ibi ipamọ ni iṣẹju diẹ lẹhin gbigbe si ibi ipamọ ohun-ọnà.

  • Rọrun lati fi sori ẹrọ ati ṣetọju

  • Agbara lati ṣe wiwa giga

    Ki lo de SonaType Nesusi tabi Pulp:

  • Ibi ipamọ ninu SonaType Nesusi tabi Pulp ọpọlọpọ awọn orisi ti onisebaye nyorisi si ni otitọ wipe SonaType Nesusi tabi Pulp di aaye kan ti ikuna.

  • Ga wiwa ni SonaType Nesusi ti wa ni san.

  • Pulp Dabi si mi bi ohun overcomplicated ojutu.

  • Artifacts in SonaType Nesusi ti wa ni ipamọ ni blob. Ti ina ba wa lojiji, iwọ kii yoo ni anfani lati mu blob pada ti o ko ba ni afẹyinti. A ni aṣiṣe yii: 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 ko tun mu pada.

Orisun

→ koodu orisun wa nibi

Iwe afọwọkọ akọkọ dabi eyi:

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

eto

Inotify-createrepo ṣiṣẹ nikan lori CentOS 7 tabi ga julọ. Ko le gba lati ṣiṣẹ lori CentOS 6.

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

Iṣeto ni

Nipa aiyipada, inotify-createrepo ṣe abojuto itọsọna naa /var/www/repos/rpm-repo/.

O le yi itọsọna yii pada ninu faili naa /etc/inotify-createrepo.conf.

Lo

Nigba fifi eyikeyi faili kun si liana kan /var/www/repos/rpm-repo/ inotifywait yoo ṣẹda faili naa /tmp/need_create. Iṣẹ run_createrepo nṣiṣẹ ni lupu ailopin ati ṣe abojuto faili naa /tmp/need_create. Ti faili ba wa, o nṣiṣẹ createrepo --update.

Akọsilẹ yoo han ninu faili:

/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

Agbara lati ṣe wiwa giga

Lati ṣe wiwa giga lati inu ojutu ti o wa tẹlẹ, Mo ro pe o le lo awọn olupin 2, Keepalived for HA ati Lsyncd fun mimuuṣiṣẹpọ awọn ohun-ọṣọ. Lsyncd - daemon kan ti o ṣe abojuto awọn ayipada ninu itọsọna agbegbe kan, ṣajọpọ wọn, ati lẹhin akoko kan rsync bẹrẹ lati muuṣiṣẹpọ wọn. Awọn alaye ati iṣeto ni a ṣe apejuwe ninu ifiweranṣẹ naa "Amuṣiṣẹpọ yarayara ti awọn faili bilionu kan".

wedav

O le gbejade awọn faili ni awọn ọna pupọ: SSH, NFS, WebDav. WebDav dabi pe o jẹ aṣayan igbalode ati rọrun.

Fun WebDav a yoo lo Apache httpd. Kini idi ti Apache httpd ni ọdun 2020 kii ṣe nginx?

Emi yoo fẹ lati lo awọn irinṣẹ adaṣe fun kikọ awọn modulu Nginx + (fun apẹẹrẹ, Webdav).

Ise agbese kan wa lati kọ awọn modulu Nginx + - nginx-akọle. Ti o ba lo nginx + wevdav lati gbe awọn faili, o nilo module kan nginx-dav-ext-modul. Nigbati o ba n gbiyanju lati kọ ati lo Nginx pẹlu nginx-dav-ext-modul pẹlu iranlọwọ nginx-akọle a yoo gba aṣiṣe Ti a lo nipasẹ http_dav_module dipo nginx-dav-ext-module. Kokoro kanna ti wa ni pipade ni igba ooru nginx: [yoju] aimọ šẹ dav_methods.

Mo ti ṣe ibeere Fa Ṣafikun ayẹwo git_url fun ifibọ, ti a ṣe atunṣe —pẹlu-{}_module и ti o ba ti module == "http_dav_module" append --pẹlu. Ṣugbọn wọn ko gba.

atunto 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>

Mo ro pe o le ṣe awọn iyokù Apache httpd setup funrararẹ.

Nginx ṣaaju Apache httpd

Ko dabi Apache, Nginx nlo awoṣe ṣiṣe ibeere ti o da lori iṣẹlẹ, eyiti o tumọ si pe ilana olupin HTTP kan ṣoṣo ni o nilo fun nọmba awọn alabara eyikeyi. O le lo nginx ati dinku fifuye olupin.

Tunto nginx-front.conf. Mo ro pe o le ṣe iyoku ti nginx setup funrararẹ.

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

Gbigba awọn faili nipasẹ WebDav

Ikojọpọ rpm rọrun pupọ.

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

orisun: www.habr.com

Fi ọrọìwòye kun