Selles postituses vaatleme rpm artefaktide ladustamist lihtsa skripti abil, mis kasutab inotify + createrepo. Artefaktide laadimine toimub webdavi kaudu, kasutades apache httpd-d. Miks apache httpd-st rÀÀgitakse postituse lÔpus?
Seega peab lahendus vastama jÀrgmistele nÔudmistele ainult RPM hoidla loomiseks:
Tasuta
Paketi kÀttesaadavus hoidlas mÔne sekundi jooksul pÀrast artefakti laadimist.
Lihtne paigaldada ja hooldada
VÔimalus tagada kÔrge kÀttesaadavus (high availability)
Miks mitte vÔi :
Ladustamine vĂ”i paljusid tĂŒĂŒpe artefakte pĂ”hjustab see, et vĂ”i saab ĂŒheks tĂ”rke punktiks.
KÔrge kÀttesaadavus (high availability) on tasuline.
tundub mulle liiga keeruline lahendus.
Artefaktid ladustatakse blobis. Ăkitsel elektrikatkestusel ei saa te blobi taastada, kui teil pole varukoopiaid. Meil oli selline viga:
ERROR [ForkJoinPool.commonPool-worker-2] *SYSTEM [com.orientechnologies.orient.core.storage](http://com.orientechnologies.orient.core.storage/).fs.OFileClassic - $ANSI{green {db=security}} Andmete lugemise viga faili 'privilege_5.pcl' 1. katse [java.io](http://java.io/).IOException: Vale aadress. Blob ei taastunud.
Allika kood
â Allikakood asub
Peamine skript vÀlja nÀeb vÀlja jÀrgmine:
#!/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 &Paigaldamine
Inotify-createrepo töötab ainult CentOS 7 vÔi uuematel. CentOS 6-l ei Ônnestunud seda tööle panna.
yum -y install yum-plugin-copr
yum copr enable antonpatsev/inotify-createrepo
yum -y install inotify-createrepo
systemctl start inotify-createrepoKonfigureerimine
Vaikimisi jÀlgib inotify-createrepo kausta /var/www/repos/rpm-repo/.
Seda kausta saab muuta failis /etc/inotify-createrepo.conf.
Kasutamine
Iga kord, kui kausta lisatakse fail /var/www/repos/rpm-repo/ inotifywait loob faili /tmp/need_create. Funktsioon run_createrepo töötab lĂ”putus tsĂŒklis ja jĂ€lgib faili /tmp/need_create. Kui fail eksisteerib, kĂ€ivitub createrepo --update.
Failis ilmub mÀrge:
/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:00VÔimalus tagada kÔrge kÀttesaadavus (high availability)
Kuna luua kĂ”rge kĂ€ttesaadavus (high availability) olemasolevast lahendusest, arvan, et vĂ”ime kasutada 2 serverit, Keepalived HA jaoks ja Lsyncd artefaktide sĂŒnkroniseerimiseks. â daemon, mis jĂ€lgib muudatusi kohalikus kaustas, kogub need ja teatud aja pĂ€rast kĂ€ivitab rsync nende sĂŒnkroniseerimiseks. Ăksikasjad ja seadistamine on kirjas postituses "".
WebDav
Faile saab ĂŒles laadida mitmel viisil: SSH, NFS, WebDav. WebDav tundub olevat kaasaegne ja lihtne variant.
WebDavi jaoks kasutame Apache httpd-d. Miks Apache httpd aastal 2020, mitte nginx?
Soovite kasutada automatiseeritud vahendeid Nginx + moodulite kogumiseks (nÀiteks Webdav).
On projekt Nginx + moodulite kogumiseks â . Kui kasutada nginx + wevdav failide laadimiseks, siis on vajalik moodul . Proovi Nginx'i koguda ja kasutada koos kohtudes saame veateate . Sama viga suleti suvel .
Tehtud Pull request ja . Kuid neid ei aktsepteeritud.
Config webdav.conf
DavLockDB /var/www/html/DavLock
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
DAV On
Options Indexes FollowSymlinks SymLinksifOwnerMatch IncludesNOEXEC
IndexOptions NameWidth=* DescriptionWidth=*
AllowOverride none
Require all grantedĂlejÀÀnud Apache httpd seadistuse teete ilmselt ise.
Nginx enne Apache httpd
Erinevalt Apachest kasutab Nginx sĂŒndmustepĂ”hist mudelit pĂ€ringute töötlemiseks, vĂ”imaldades mis tahes arvu klientide jaoks kasutada vaid ĂŒhte HTTP-serveri protsessi. Saate kasutada nginx'i ja vĂ€hendada serveri koormust.
Config nginx-front.conf. ĂlejÀÀnud nginx seadistuse teete ilmselt ise.
upstream nginx_front {
server localhost:80;
}
server {
listen 443 ssl;
server_name teie-virtuaalne-host;
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;
}
}Failide laadimine lÀbi WebDav
RPM laadimine on vÀga lihtne.
curl -T ./nginx-1.16.1-1.el7.ngx.x86_64.rpm https://teie-virtuaalne-host/rpm/Allikas: habr.com
