Stòr rpm sìmplidh a’ cleachdadh Inotify agus webdav

Anns an dreuchd seo bheir sinn sùil air stòradh artifact rpm a’ cleachdadh sgriobt sìmplidh le inotify + createrepo. Bithear a’ luchdachadh suas artifacts tro webdav a’ cleachdadh apache httpd. Carson a thèid apache httpd a sgrìobhadh faisg air deireadh na dreuchd.

Mar sin, feumaidh am fuasgladh coinneachadh ris na riatanasan a leanas airson stòradh RPM a-mhàin a chuir air dòigh:

  • An-asgaidh

  • Ri fhaighinn air a’ phacaid anns an ionad-tasgaidh beagan dhiog às deidh a luchdachadh suas gu stòr artifact.

  • Furasta a stàladh agus a chumail suas

  • Comas ruigsinneachd àrd a dhèanamh

    Carson nach biodh Seòrsa Sona Nexus no Cùp:

  • Stòradh a-steach Seòrsa Sona Nexus no Cùp tha iomadh seòrsa artifacts a’ leantainn gu sin Seòrsa Sona Nexus no Cùp gu bhith na aon phuing fàiligeadh.

  • Cothrom àrd ann an Seòrsa Sona Nexus air a phàigheadh.

  • Cùp Tha e coltach riumsa mar fhuasgladh ro iom-fhillte.

  • Artifacts ann an Seòrsa Sona Nexus air an stòradh ann am blob. Ma thig briseadh cumhachd gu h-obann, cha bhith e comasach dhut am blob a thoirt air ais mura h-eil cùl-taic agad. Bha am mearachd seo againn: 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. Cha deach Blob a-riamh ath-nuadhachadh.

Còd tùs

→ Tha an còd stòr suidhichte an seo

Tha am prìomh sgriobt a’ coimhead mar seo:

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

suidheachadh

Chan eil Inotify-createrepo ag obair ach air CentOS 7 no nas àirde. Cha b’ urrainn dhuinn toirt air obrachadh air CentOS 6.

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

Rèiteachadh

Gu gnàthach, bidh inotify-createrepo a’ cumail sùil air an eòlaire /var/www/repos/rpm-repo/.

'S urrainn dhut an eòlaire seo atharrachadh san fhaidhle /etc/inotify-createrepo.conf.

Cleachd

Nuair a chuireas tu faidhle sam bith ri eòlaire /var/www/repos/rpm-repo/ cruthaichidh inotifywait am faidhle /tmp/need_create. Bidh an gnìomh run_createrepo a’ ruith ann an lùb gun chrìoch agus a’ cumail sùil air an fhaidhle /tmp/need_create. Ma tha am faidhle ann, ruithidh e createrepo --update.

Nochdaidh inntrig san fhaidhle:

/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

Comas ruigsinneachd àrd a dhèanamh

Gus ruigsinneachd àrd a dhèanamh a-mach à fuasgladh a tha ann mar-thà, tha mi a’ smaoineachadh gun urrainn dhut 2 fhrithealaiche a chleachdadh, Keepalived airson HA agus Lsyncd airson artifacts a shioncronachadh. Lsyncd - daemon a bhios a’ cumail sùil air atharrachaidhean ann an eòlaire ionadail, gan cruinneachadh, agus às deidh ùine shònraichte bidh rsync a’ tòiseachadh gan sioncronadh. Tha mion-fhiosrachadh agus suidheachadh air am mìneachadh sa phost "Sioncronadh luath de billean faidhle".

lìnDav

Faodaidh tu faidhlichean a luchdachadh suas ann an grunn dhòighean: SSH, NFS, WebDav. Tha e coltach gu bheil WebDav na roghainn ùr-nodha agus sìmplidh.

Airson WebDav cleachdaidh sinn Apache httpd. Carson apache httpd ann an 2020 agus chan e nginx?

Bu mhath leam innealan fèin-ghluasadach a chleachdadh airson modalan Nginx + a thogail (mar eisimpleir, Webdav).

Tha pròiseact ann airson modalan Nginx + a thogail - Nginx-neach-togail. Ma chleachdas tu nginx + wevdav gus faidhlichean a luchdachadh suas, feumaidh tu modal nginx-dav-ext-modal. Nuair a bhios tu a’ feuchainn ri Nginx a thogail agus a chleachdadh le nginx-dav-ext-modal le cuideachadh Nginx-neach-togail gheibh sinn mearachd Air a chleachdadh le http_dav_module an àite nginx-dav-ext-module. Chaidh an aon bhiast a dhùnadh as t-samhradh nginx: [a’ nochdadh] stiùireadh neo-aithnichte dav_methods.

Rinn mi iarrtas Pull Cuir seic git_url ris airson freumhaichte, ath-leasaichte —with-{}_module и ma tha modal == "http_dav_module" an cois --with. Ach cha deach gabhail riutha.

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>

Tha mi a’ smaoineachadh gun urrainn dhut an còrr de shuidheachadh Apache httpd a dhèanamh thu fhèin.

Nginx ro Apache httpd

Eu-coltach ri Apache, bidh Nginx a ’cleachdadh modal giollachd iarrtas stèidhichte air tachartas, a dh’ fheumas dìreach aon phròiseas frithealaiche HTTP airson àireamh sam bith de luchd-dèiligidh. Faodaidh tu nginx a chleachdadh agus an luchd air an fhrithealaiche a lughdachadh.

Config nginx-front.conf. Tha mi a’ smaoineachadh gun urrainn dhut an còrr den t-suidheachadh nginx a dhèanamh thu fhèin.

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

Faidhlichean a luchdachadh suas tro WebDav

Tha luchdachadh rpm gu math sìmplidh.

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

Source: www.habr.com

Cuir beachd ann