Дар ин паём, мо ба анбори артефакти rpm бо истифода аз скрипти оддии inotify + createrepo назар мекунем. Артефактҳо тавассути webdav бо истифода аз apache httpd бор карда мешаванд. Чаро apache httpd дар охири пост навишта мешавад.
Ҳамин тавр, ҳалли бояд ба талаботи зерин барои ташкили нигоҳдории RPM танҳо ҷавобгӯ бошад:
Озод
Мавҷудияти баста дар репозиторий чанд сония пас аз боргузорӣ ба анбори артефакт.
Насб кардан ва нигоҳдорӣ осон аст
Қобилияти фароҳам овардани дастрасии баланд
Барои чӣ не ё :
Нигоҳдорӣ дар ё бисьёр навъхои осор ба он оварда мерасонад, ки ё ба як нуктаи нокомй табдил ёбад.
Мавҷудияти баланд дар пардохта мешавад.
Ба ман як ҳалли аз ҳад зиёди муҳандисӣ ба назар мерасад.
Артефактҳо дар дар 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Қобилияти фароҳам овардани дастрасии баланд
Барои дастрасии баланд аз ҳалли мавҷуда, ман фикр мекунам, ки шумо метавонед 2 серверро истифода баред, Keepalived for HA ва Lsyncd барои ҳамоҳангсозии артефакт. - демоне, ки тағиротро дар директорияи маҳаллӣ назорат мекунад, онҳоро ҷамъ мекунад ва пас аз вақти муайян, rsync ба ҳамоҳангсозии онҳо оғоз мекунад. Тафсилот ва танзимот дар мақола тавсиф шудаанд "".
вебдав
Якчанд роҳҳои боркунии файлҳо мавҷуданд: SSH, NFS, WebDav. Чунин ба назар мерасад, ки WebDav як варианти муосир ва оддӣ аст.
Барои WebDav, мо Apache httpd-ро истифода хоҳем бурд. Чаро Apache httpd дар соли 2020, на nginx?
Ман мехоҳам асбобҳои автоматиро барои сохтани модулҳои Nginx + истифода барам (масалан, Webdav).
Лоиҳа барои сохтани модулҳои Nginx + вуҷуд дорад - . Агар шумо барои боркунии файлҳо nginx + wevdav истифода баред, пас ба шумо модул лозим аст . Ҳангоми кӯшиши сохтан ва истифода бурдани Nginx бо бо кӯмаки мо хато мегирем . Хамон хатой тобистон хам баста шуд .
Ман дархост кардам и . Аммо онҳоро қабул накарданд.
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-ро худатон иҷро мекунед.
Nginx дар назди Apache 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
Зеркашии rpm хеле осон аст.
curl -T ./nginx-1.16.1-1.el7.ngx.x86_64.rpm https://ваш-виртуальный-хост/rpm/Манбаъ: will.com
