ProHoster > Блог > басқарма > Inotify және webdav көмегімен қарапайым rpm репозиторийі
Inotify және webdav көмегімен қарапайым rpm репозиторийі
Бұл постта біз қарапайым inotify + createrepo сценарийін қолданатын rpm артефакті репозиторийін қарастырамыз. Артефактілер apache httpd арқылы webdav арқылы жүктеледі. Неліктен 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. Blob ешқашан қалпына келмеді.
Әдепкі бойынша 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.
Қолданыстағы шешімнің жоғары қолжетімділігін қамтамасыз ету үшін HA үшін Keepalived және артефакті синхрондау үшін Lsyncd 2 серверді пайдалануға болады деп ойлаймын. Lsyncd - жергілікті каталогтағы өзгерістерді бақылайтын, оларды біріктіретін демон және белгілі бір уақыттан кейін rsync оларды синхрондауды бастайды. Мәліметтер мен параметрлер постта сипатталған "Миллиард файлды жылдам синхрондау".
webdav
Файлдарды жүктеп салудың бірнеше жолы бар: SSH, NFS, WebDav. WebDav заманауи және қарапайым нұсқа сияқты.
WebDav үшін біз Apache httpd пайдаланамыз. Неліктен nginx емес, 2020 жылы Apache httpd?
Мен Nginx + модульдерін құру үшін автоматтандырылған құралдарды пайдаланғым келеді (мысалы, Webdav).
Менің ойымша, сіз Apache httpd конфигурациясының қалған бөлігін өзіңіз жасайсыз.
Nginx Apache алдында httpd
Apache-ден айырмашылығы, Nginx оқиғаға негізделген сұрауды өңдеу үлгісін пайдаланады, яғни кез келген клиенттер саны үшін тек бір HTTP сервер процесі қажет. Сіз nginx пайдалана аласыз және сервер жүктемесін азайта аласыз.
nginx-front.conf конфигурациясы. Nginx конфигурациясының қалған бөлігін өзіңіз жасайсыз деп ойлаймын.