Энэ нийтлэлд бид inotify + createrepo бүхий энгийн скрипт ашиглан rpm олдворын хадгалалтыг үзэх болно. Олдворуудыг apache httpd ашиглан webdav ашиглан байршуулдаг. Яагаад apache httpd гэж нийтлэлийн төгсгөлд бичих болно.
Тиймээс шийдэл нь зөвхөн RPM хадгалалтыг зохион байгуулахад дараахь шаардлагыг хангасан байх ёстой.
-
Үнэгүй
-
Олдворын санд байршуулснаас хойш хэдхэн секундын дараа уг багцыг хадгалах боломжтой.
-
Суурилуулах, засвар үйлчилгээ хийхэд хялбар
-
Өндөр хүртээмжтэй болгох чадвар
Яагаад үгүй гэж
SonaType Nexus буюуЦеллюлоз : -
Хадгалалт дотор
SonaType Nexus буюуЦеллюлоз олон төрлийн олдворууд үүнд хүргэдэгSonaType Nexus буюуЦеллюлоз бүтэлгүйтлийн нэг цэг болно. -
Өндөр хүртээмжтэй
SonaType Nexus төлдөг. -
Целлюлоз Надад хэтэрхий төвөгтэй шийдэл шиг санагдаж байна. -
Олдворууд
SonaType Nexus 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 &
тохиргоо
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.
Ашиглах
Ямар нэгэн файлыг директорт нэмэх үед /var/www/repos/rpm-repo/
inotifywait файлыг үүсгэх болно /tmp/need_create
. run_createrepo функц нь төгсгөлгүй давталтаар ажиллаж, файлыг хянадаг /tmp/need_create
. Хэрэв файл байгаа бол энэ нь ажиллана 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
Өндөр хүртээмжтэй болгох чадвар
Одоо байгаа шийдлээс өндөр хүртээмжтэй болгохын тулд та HA-д зориулсан Keepalived болон олдворуудыг синхрончлохдоо Lsyncd гэсэн 2 сервер ашиглаж болно гэж би бодож байна.
WebDav
Та SSH, NFS, WebDav гэсэн хэд хэдэн аргаар файлуудыг байршуулж болно. WebDav нь орчин үеийн, энгийн сонголт юм шиг санагддаг.
WebDav-ийн хувьд бид Apache httpd-г ашиглах болно. Яагаад nginx биш 2020 онд Apache httpd вэ?
Би Nginx + модулиудыг (жишээ нь, Webdav) бүтээхэд автоматжуулсан хэрэгслийг ашиглахыг хүсч байна.
Nginx + модулиудыг бүтээх төсөл байна -
Би татах хүсэлт гаргасан
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 тохиргооны үлдсэн хэсгийг өөрөө хийж чадна гэж бодож байна.
Apache-ийн өмнөх Nginx httpd
Apache-ээс ялгаатай нь Nginx нь үйл явдалд суурилсан хүсэлт боловсруулах загварыг ашигладаг бөгөөд энэ нь олон тооны үйлчлүүлэгчид зөвхөн нэг HTTP серверийн процесс шаарддаг. Та nginx ашиглаж сервер дээрх ачааллыг бууруулж болно.
nginx-front.conf-г тохируулна уу. Та nginx-ийн бусад тохиргоог өөрөө хийж болно гэж бодож байна.
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-ээр файл байршуулж байна
Эрг / мин ачаалах нь маш энгийн.
curl -T ./nginx-1.16.1-1.el7.ngx.x86_64.rpm https://ваш-виртуальный-хост/rpm/
Эх сурвалж: www.habr.com