Дар ин паём, мо ба анбори артефакти rpm бо истифода аз скрипти оддии inotify + createrepo назар мекунем. Артефактҳо тавассути webdav бо истифода аз apache httpd бор карда мешаванд. Чаро 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
Қобилияти фароҳам овардани дастрасии баланд
Барои дастрасии баланд аз ҳалли мавҷуда, ман фикр мекунам, ки шумо метавонед 2 серверро истифода баред, Keepalived for HA ва Lsyncd барои ҳамоҳангсозии артефакт.
вебдав
Якчанд роҳҳои боркунии файлҳо мавҷуданд: SSH, NFS, WebDav. Чунин ба назар мерасад, ки WebDav як варианти муосир ва оддӣ аст.
Барои WebDav, мо Apache httpd-ро истифода хоҳем бурд. Чаро Apache httpd дар соли 2020, на nginx?
Ман мехоҳам асбобҳои автоматиро барои сохтани модулҳои Nginx + истифода барам (масалан, Webdav).
Лоиҳа барои сохтани модулҳои 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