Այս գրառման մեջ մենք կդիտարկենք rpm artifact-ի պահոցը՝ օգտագործելով պարզ inotify + createrepo script: Արտեֆակտները վերբեռնվում են webdav-ի միջոցով՝ օգտագործելով apache httpd: Ինչու apache httpd-ը գրվելու է գրառման վերջում:
Այսպիսով, լուծումը պետք է համապատասխանի հետևյալ պահանջներին միայն RPM պահեստավորում կազմակերպելու համար.
ազատ
Փաթեթի առկայությունը պահոցում արտեֆակտի պահոց վերբեռնվելուց մի քանի վայրկյան անց:
Արտեֆակտներ SonaType Nexus պահվում են բլոբի մեջ: Եթե հանկարծակի հոսանքազրկվի, դուք չեք կարողանա վերականգնել բլբը, եթե չունեք կրկնօրինակում: Մենք ունեինք այս սխալը. 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. Բլոբը երբեք չի վերականգնվել:
Լռելյայնորեն, inotify-createrepo-ն վերահսկում է գրացուցակը /var/www/repos/rpm-repo/.
Դուք կարող եք փոխել այս գրացուցակը ֆայլում /etc/inotify-createrepo.conf.
Օգտագործում
Ցանկացած ֆայլ գրացուցակում ավելացնելիս /var/www/repos/rpm-repo/ inotifywait-ը կստեղծի ֆայլը /tmp/need_create. Run_createrepo ֆունկցիան աշխատում է անսահման հանգույցով և վերահսկում է ֆայլը /tmp/need_create. Եթե ֆայլը գոյություն ունի, այն աշխատում է createrepo --update.
Գոյություն ունեցող լուծումից բարձր հասանելիություն ստեղծելու համար, կարծում եմ, կարող եք օգտագործել 2 սերվեր՝ Keepalived HA-ի համար և Lsyncd՝ արտեֆակտների համաժամացման համար: Lsyncd - Դեյմոն, որը վերահսկում է տեղական գրացուցակի փոփոխությունները, համախմբում դրանք և որոշակի ժամանակ անց rsync-ը սկսում է համաժամացնել դրանք: Մանրամասները և կարգավորումները նկարագրված են գրառման մեջ"Միլիարդ ֆայլերի արագ համաժամացում".
webdav
Ֆայլերը վերբեռնելու մի քանի եղանակ կա՝ SSH, NFS, WebDav: WebDav-ը կարծես ժամանակակից և պարզ տարբերակ է:
WebDav-ի համար մենք կօգտագործենք Apache httpd. Ինչու Apache httpd-ը 2020 թվականին և ոչ թե nginx-ը:
Ես կցանկանայի օգտագործել ավտոմատացված գործիքներ Nginx + մոդուլներ կառուցելու համար (օրինակ, Webdav):
Կարծում եմ, որ դուք կարող եք անել մնացած Apache httpd կարգավորումը ինքներդ:
Nginx Apache-ից առաջ httpd
Ի տարբերություն Apache-ի, Nginx-ը օգտագործում է իրադարձության վրա հիմնված հարցումների մշակման մոդել, որը պահանջում է միայն մեկ HTTP սերվերի գործընթաց ցանկացած թվով հաճախորդների համար: Դուք կարող եք օգտագործել nginx և նվազեցնել սերվերի բեռը:
Config nginx-front.conf. Կարծում եմ, որ մնացած nginx կոնֆիգուրացիան դուք ինքներդ կկատարեք: