Inotify နှင့် webdav ကို အသုံးပြု၍ ရိုးရှင်းသော rpm သိုလှောင်မှု

ဤပို့စ်တွင်၊ ရိုးရိုး inotify + createrepo script ကို အသုံးပြု၍ rpm artifact repository ကို ကြည့်ပါမည်။ Artifacts များကို apache httpd ကို အသုံးပြု၍ webdav မှတဆင့် အပ်လုဒ်လုပ်ပါသည်။ ဘာကြောင့် apache httpd ကို ပို့စ်ရဲ့အဆုံးမှာ ရေးရပါလိမ့်။

ထို့ကြောင့်၊ ဖြေရှင်းချက်သည် RPM သိုလှောင်မှုတစ်ခုတည်းကို စီစဉ်ရန်အတွက် အောက်ပါလိုအပ်ချက်များနှင့် ကိုက်ညီရမည်-

  • အခမဲ့

  • ရှေးဟောင်းပစ္စည်းသိုလှောင်ခန်းသို့ အပ်လုဒ်တင်ပြီးနောက် စက္ကန့်အနည်းငယ်အကြာတွင် သိုလှောင်မှုတွင် ပက်ကေ့ခ်ျ၏ရရှိနိုင်မှု။

  • တပ်ဆင်ရန်နှင့်ထိန်းသိမ်းရန်လွယ်ကူသည်။

  • မြင့်မားသောရရှိနိုင်မှုဖြစ်စေရန်စွမ်းရည်

    ဘာလို့မဖြစ်ရမလဲ SonaType Nexus သို့မဟုတ် ပျော့ဖတ်:

  • သိုလှောင်မှု SonaType Nexus သို့မဟုတ် ပျော့ဖတ် အမျိုးအစားများစွာရှိသော ရှေးဟောင်းပစ္စည်းများသည် ထိုအချက်ကို ဦးတည်သည်။ SonaType Nexus သို့မဟုတ် ပျော့ဖတ် ရှုံးနိမ့်မှု၏ တစ်ခုတည်းသော အမှတ်ဖြစ်လာသည်။

  • မြင့်မားသောရရှိနိုင်မှု SonaType Nexus ပေးဆောင်သည်။

  • ပျော့ဖတ် ကျွန်တော့်အတွက် အင်ဂျင်နီယာ လွန်ကဲတဲ့ ဖြေရှင်းချက်တစ်ခုလို ဖြစ်နေတယ်။

  • ရေးပေးသည်။ SonaType Nexus blob တွင်သိမ်းဆည်းထားသည်။ ရုတ်တရတ် ဓာတ်အားပြတ်တောက်သည့်ကိစ္စတွင်၊ သင့်တွင် အရန်သိမ်းဆည်းမှုမရှိပါက blob ကို ပြန်လည်ရယူနိုင်မည်မဟုတ်ပါ။ ကျွန်ုပ်တို့တွင် ဤအမှားရှိပါသည်- 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 သည် ဘယ်သောအခါမှ ပြန်လည်ကောင်းမွန်ခြင်းမရှိပါ။

အရင်းအမြစ်

→ အရင်းအမြစ်ကုဒ်တည်ရှိသည်။ ဒီမှာ

ပင်မဇာတ်ညွှန်းသည် ဤကဲ့သို့ဖြစ်သည်-

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

ustanovka

inotify-createrepo သည် CentOS 7 နှင့်အထက်တွင်သာအလုပ်လုပ်သည်။ ၎င်းကို CentOS 6 တွင် အလုပ်မလုပ်နိုင်ခဲ့ပါ။

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

ဖွဲ့စည်းမှု

မူရင်းအားဖြင့် inotify-createrepo သည် လမ်းညွှန်တစ်ခုအား စောင့်ကြည့်သည်။ /var/www/repos/rpm-repo/.

သင်သည် ဤဖိုင်လမ်းညွှန်ကို ပြောင်းလဲနိုင်သည်။ /etc/inotify-createrepo.conf.

၏အသုံးပြုမှု

မည်သည့်ဖိုင်ကိုမဆို directory တစ်ခုသို့ထည့်သောအခါ /var/www/repos/rpm-repo/ inotifywait ဖိုင်တစ်ခုဖန်တီးလိမ့်မည်။ /tmp/need_create. run_createrepo လုပ်ဆောင်ချက်သည် အဆုံးမရှိ အဝိုင်းအတွင်း အလုပ်လုပ်ပြီး ဖိုင်ကို စောင့်ကြည့်သည်။ /tmp/need_create. ဖိုင်ရှိရင် run လိုက်ပါ။ createrepo --update.

ဖိုင်ထဲတွင် ထည့်သွင်းမှုတစ်ခု ပေါ်လာပါမည်-

/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

မြင့်မားသောရရှိနိုင်မှုဖြစ်စေရန်စွမ်းရည်

ရှိပြီးသားဖြေရှင်းချက်တစ်ခုမှ မြင့်မားစွာရရှိနိုင်စေရန်အတွက်၊ ရှေးဟောင်းပစ္စည်းထပ်တူပြုခြင်းအတွက် Keepalived for HA နှင့် Lsyncd ဆာဗာ 2 ခုကို သင်အသုံးပြုနိုင်သည်ဟု ကျွန်တော်ထင်ပါတယ်။ Lsyncd - local directory တွင်ပြောင်းလဲမှုများကိုစောင့်ကြည့်သော daemon သည်၎င်းတို့ကိုစုပေါင်းပြီးအချို့သောအချိန်ပြီးနောက်၊ rsync သည်၎င်းတို့ကိုတစ်ပြိုင်တည်းချိန်ကိုက်ရန်စတင်သည်။ အသေးစိတ်နှင့် ဆက်တင်များကို ပို့စ်တွင် ဖော်ပြထားပါသည်။ဖိုင်တစ်ဘီလီယံကို မြန်ဆန်စွာ ထပ်တူပြုခြင်း။".

webdav

ဖိုင်များကို အပ်လုဒ်လုပ်ရန် နည်းလမ်းများစွာ ရှိသည်- SSH၊ NFS၊ WebDav။ WebDav သည် ခေတ်မီပြီး ရိုးရှင်းသော ရွေးချယ်မှုတစ်ခု ဖြစ်ပုံရသည်။

WebDav အတွက်၊ ကျွန်ုပ်တို့သည် Apache httpd ကို အသုံးပြုပါမည်။ 2020 တွင် Apache httpd သည် အဘယ်ကြောင့် nginx မဟုတ်သနည်း။

Nginx + modules (ဥပမာ၊ Webdav) တည်ဆောက်ရန်အတွက် အလိုအလျောက်ကိရိယာများကို အသုံးပြုလိုပါသည်။

Nginx + modules များတည်ဆောက်ရန်အတွက် ပရောဂျက်တစ်ခု ရှိပါသည်။ nginx-တည်ဆောက်သူ. ဖိုင်များတင်ရန် nginx + wevdav ကိုအသုံးပြုပါက၊ မော်ဂျူးတစ်ခု လိုအပ်ပါသည်။ nginx-dav-ext-module. တည်ဆောက်ပြီး Nginx ကိုအသုံးပြုရန်ကြိုးစားနေချိန်တွင် nginx-dav-ext-module အားဖြင့် nginx-တည်ဆောက်သူ အမှားတစ်ခုရလိမ့်မည်။ nginx-dav-ext-module အစား http_dav_module မှ အသုံးပြုသည်။. အလားတူ ပိုးကောင်များကို နွေရာသီတွင် ပိတ်ခဲ့သည်။ nginx- [emerg] အမည်မသိ ညွှန်ကြားချက် dav_methods.

ဆွဲထုတ်ဖို့ တောင်းဆိုခဲ့တယ်။ ထည့်သွင်းထားသော၊ ပြန်လည်ပြင်ဆင်ထားသော --with-{}_module အတွက် စစ်ဆေးထားသော git_url ကိုထည့်ပါ။ и module == "http_dav_module" နောက်ဆက်တွဲ --with. ဒါပေမယ့် လက်မခံခဲ့ကြပါဘူး။

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>

ကျန်တဲ့ Apache httpd configuration ကို သင်ကိုယ်တိုင်လုပ်မယ်လို့ထင်ပါတယ်။

Apache httpd ရှေ့ရှိ Nginx

Apache နှင့်မတူဘဲ၊ Nginx သည် ဖြစ်ရပ်အခြေခံတောင်းဆိုမှုလုပ်ဆောင်ခြင်းပုံစံကိုအသုံးပြုသည်၊ ဆိုလိုသည်မှာ client အရေအတွက်အတွက် HTTP ဆာဗာလုပ်ငန်းစဉ်တစ်ခုသာလိုအပ်သည်။ သင်သည် nginx ကိုသုံးနိုင်ပြီး server load ကိုလျှော့ချနိုင်သည်။

nginx-front.conf config ။ ကျန်တဲ့ nginx configuration ကို ကိုယ်တိုင်လုပ်မယ်လို့ ထင်ပါတယ်။

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

WebDav မှတစ်ဆင့် ဖိုင်များကို ဒေါင်းလုဒ်လုပ်ခြင်း။

rpm ကိုဒေါင်းလုဒ်လုပ်ရန်အလွန်လွယ်ကူသည်။

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

source: www.habr.com

မှတ်ချက် Add