Inotify เช…เชจเซ‡ webdav เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เชธเชฐเชณ rpm เชฐเซ€เชชเซ‹เชเซ€เชŸเชฐเซ€

เช† เชชเซ‹เชธเซเชŸเชฎเชพเช‚, เช…เชฎเซ‡ เชเช• เชธเชฐเชณ inotify + createrepo เชธเซเช•เซเชฐเชฟเชชเซเชŸเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ rpm เช†เชฐเซเชŸเชฟเชซเซ‡เช•เซเชŸ เชฐเซ€เชชเซ‹เชเซ€เชŸเชฐเซ€ เชœเซ‹เชˆเชถเซเช‚. apache httpd เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เชตเซ‡เชฌเชกเซ‡เชต เชฆเซเชตเชพเชฐเชพ เช•เชฒเชพเช•เซƒเชคเชฟเช“ เช…เชชเชฒเซ‹เชก เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡. เชถเชพ เชฎเชพเชŸเซ‡ apache httpd เชชเซ‹เชธเซเชŸเชจเชพ เช…เช‚เชคเชฎเชพเช‚ เชฒเช–เชตเชพเชฎเชพเช‚ เช†เชตเชถเซ‡.

เชคเซ‡เชฅเซ€, เชธเซ‹เชฒเซเชฏเซเชถเชจ เชฎเชพเชคเซเชฐ RPM เชธเซเชŸเซ‹เชฐเซ‡เชœ เช—เซ‹เช เชตเชตเชพ เชฎเชพเชŸเซ‡ เชจเซ€เชšเซ‡เชจเซ€ เช†เชตเชถเซเชฏเช•เชคเชพเช“เชจเซ‡ เชชเซ‚เชฐเซเชฃ เช•เชฐเซ‡ เช›เซ‡:

  • เชฎเชซเชค

  • เช†เชฐเซเชŸเชฟเชซเซ‡เช•เซเชŸ เชฐเชฟเชชเซ‹เชเซ€เชŸเชฐเซ€เชฎเชพเช‚ เช…เชชเชฒเซ‹เชก เช•เชฐเซเชฏเชพ เชชเช›เซ€ เชฅเซ‹เชกเซ€เช• เชธเซ‡เช•เชจเซเชกเซ‹เชฎเชพเช‚ เชฐเชฟเชชเซ‹เชเซ€เชŸเชฐเซ€เชฎเชพเช‚ เชชเซ‡เช•เซ‡เชœเชจเซ€ เช‰เชชเชฒเชฌเซเชงเชคเชพ.

  • เชธเซเชฅเชพเชชเชฟเชค เช•เชฐเชตเชพ เช…เชจเซ‡ เชœเชพเชณเชตเชตเชพ เชฎเชพเชŸเซ‡ เชธเชฐเชณ

  • เช‰เชšเซเชš เช‰เชชเชฒเชฌเซเชงเชคเชพ เชฌเชจเชพเชตเชตเชพเชจเซ€ เช•เซเชทเชฎเชคเชพ

    เช•เซ‡เชฎ เชจเชนเชฟ SonaType Nexus เช…เชฅเชตเชพ เชชเชฒเซเชช:

  • เชฎเชพเช‚ เชธเช‚เช—เซเชฐเชน SonaType Nexus เช…เชฅเชตเชพ เชชเชฒเซเชช เช˜เชฃเชพ เชชเซเชฐเช•เชพเชฐเชจเซ€ เช•เชฒเชพเช•เซƒเชคเชฟเช“ เช เชนเช•เซ€เช•เชค เชคเชฐเชซ เชฆเซ‹เชฐเซ€ เชœเชพเชฏ เช›เซ‡ SonaType Nexus เช…เชฅเชตเชพ เชชเชฒเซเชช เชจเชฟเชทเซเชซเชณเชคเชพเชจเซ‹ เชเช• เชฌเชฟเช‚เชฆเซ เชฌเชจเซ‹.

  • เชฎเชพเช‚ เช‰เชšเซเชš เช‰เชชเชฒเชฌเซเชงเชคเชพ SonaType Nexus เชšเซ‚เช•เชตเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡.

  • เชชเชฒเซเชช เชฎเชพเชฐเชพ เชฎเชพเชŸเซ‡ เช“เชตเชฐ-เชเชจเซเชœเชฟเชจเชฟเชฏเชฐเซเชก เชธเซ‹เชฒเซเชฏเซเชถเชจ เชœเซ‡เชตเซเช‚ เชฒเชพเช—เซ‡ เช›เซ‡.

  • เชฎเชพเช‚ เช•เชฒเชพเช•เซƒเชคเชฟเช“ 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. เชฌเซเชฒเซ‹เชฌ เช•เซเชฏเชพเชฐเซ‡เชฏ เชชเซเชจเชƒเชชเซเชฐเชพเชชเซเชค เชฅเชฏเซ‹ เชจ เชนเชคเซ‹.

เชธเซเชฐเซ‹เชค

โ†’ เชธเซเชคเซเชฐเซ‹เชค เช•เซ‹เชก เชธเซเชฅเชฟเชค เชฅเชฏเซ‡เชฒ เช›เซ‡ เช…เชนเซ€เช‚

เชฎเซเช–เซเชฏ เชธเซเช•เซเชฐเชฟเชชเซเชŸ เช†เชจเชพ เชœเซ‡เชตเซ‹ เชฆเซ‡เช–เชพเชฏ เช›เซ‡:

#!/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 เชธเชฐเซเชตเชฐเซเชธเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€ เชถเช•เซ‹ เช›เซ‹, HA เชฎเชพเชŸเซ‡ Keepalived เช…เชจเซ‡ เช†เชฐเซเชŸเชฟเชซเซ‡เช•เซเชŸ เชธเชฟเช‚เช•เซเชฐเซ‹เชจเชพเช‡เชเซ‡เชถเชจ เชฎเชพเชŸเซ‡ Lsyncd. Lsyncd - เชเช• เชกเชฟเชฎเชจ เช•เซ‡ เชœเซ‡ เชธเซเชฅเชพเชจเชฟเช• เชกเชฟเชฐเซ‡เช•เซเชŸเชฐเซ€เชฎเชพเช‚ เชซเซ‡เชฐเชซเชพเชฐเซ‹เชจเซเช‚ เชจเชฟเชฐเซ€เช•เซเชทเชฃ เช•เชฐเซ‡ เช›เซ‡, เชคเซ‡เชฎเชจเซ‡ เชเช•เซ€เช•เซƒเชค เช•เชฐเซ‡ เช›เซ‡, เช…เชจเซ‡ เชšเซ‹เช•เซเช•เชธ เชธเชฎเชฏ เชชเช›เซ€, rsync เชคเซ‡เชฎเชจเซ‡ เชธเซเชฎเซ‡เชณ เช•เชฐเชตเชพเชจเซเช‚ เชถเชฐเซ‚ เช•เชฐเซ‡ เช›เซ‡. เชตเชฟเช—เชคเซ‹ เช…เชจเซ‡ เชธเซ‡เชŸเชฟเช‚เช—เซเชธ เชชเซ‹เชธเซเชŸเชฎเชพเช‚ เชตเชฐเซเชฃเชตเซ‡เชฒ เช›เซ‡ "เชเช• เช…เชฌเชœ เชซเชพเช‡เชฒเซ‹เชจเซเช‚ เชเชกเชชเซ€ เชธเชฟเช‚เช•เซเชฐเชจเชพเช‡เชเซ‡เชถเชจ".

เชตเซ‡เชฌเชกเซ‡เชต

เชซเชพเช‡เชฒเซ‹ เช…เชชเชฒเซ‹เชก เช•เชฐเชตเชพเชจเซ€ เช˜เชฃเซ€ เชฐเซ€เชคเซ‹ เช›เซ‡: SSH, NFS, WebDav. WebDav เช†เชงเซเชจเชฟเช• เช…เชจเซ‡ เชธเชฐเชณ เชตเชฟเช•เชฒเซเชช เชฒเชพเช—เซ‡ เช›เซ‡.

WebDav เชฎเชพเชŸเซ‡, เช…เชฎเซ‡ Apache httpd เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชถเซเช‚. เชถเชพ เชฎเชพเชŸเซ‡ 2020 เชฎเชพเช‚ เช…เชชเชพเชšเซ‡ httpd เช…เชจเซ‡ nginx เชจเชนเซ€เช‚?

เชนเซเช‚ Nginx + เชฎเซ‹เชกเซเชฏเซเชฒเซเชธ (เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡, Webdav) เชฌเชจเชพเชตเชตเชพ เชฎเชพเชŸเซ‡ เชธเซเชตเชšเชพเชฒเชฟเชค เชธเชพเชงเชจเซ‹เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเชพ เชฎเชพเช‚เช—เซ เช›เซเช‚.

Nginx + เชฎเซ‹เชกเซเชฏเซเชฒเซ‹ เชฌเชจเชพเชตเชตเชพ เชฎเชพเชŸเซ‡ เชเช• เชชเซเชฐเซ‹เชœเซ‡เช•เซเชŸ เช›เซ‡ - nginx-เชฌเชฟเชฒเซเชกเชฐ. เชœเซ‹ เชคเชฎเซ‡ เชซเชพเช‡เชฒเซ‹ เช…เชชเชฒเซ‹เชก เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ nginx + wevdav เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ‹ เช›เซ‹, เชคเซ‹ เชคเชฎเชพเชฐเซ‡ เชฎเซ‹เชกเซเชฏเซเชฒเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡ nginx-dav-ext-module. เชธเชพเชฅเซ‡ Nginx เชฌเชจเชพเชตเชตเชพ เช…เชจเซ‡ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเชพเชจเซ‹ เชชเซเชฐเชฏเชพเชธ เช•เชฐเชคเซ€ เชตเช–เชคเซ‡ nginx-dav-ext-module เชฎเชฆเชฆ เชธเชพเชฅเซ‡ nginx-เชฌเชฟเชฒเซเชกเชฐ เช…เชฎเชจเซ‡ เชเช• เชญเซ‚เชฒ เชฎเชณเชถเซ‡ nginx-dav-ext-module เชจเซ‡ เชฌเชฆเชฒเซ‡ http_dav_module เชฆเซเชตเชพเชฐเชพ เชตเชชเชฐเชพเชฏเซ‡เชฒ. เช‰เชจเชพเชณเชพเชฎเชพเช‚ เช† เชœ เชญเซ‚เชฒ เชฌเช‚เชง เชฅเชˆ เช—เชˆ เชนเชคเซ€ nginx: [emerg] เช…เชœเซเชžเชพเชค เชจเชฟเชฐเซเชฆเซ‡เชถเช• dav_methods.

เชฎเซ‡เช‚ เช–เซ‡เช‚เชšเชตเชพเชจเซ€ เชตเชฟเชจเช‚เชคเซ€ เช•เชฐเซ€ เชเชฎเซเชฌเซ‡เชกเซ‡เชก, เชฐเชฟเชซเซ‡เช•เซเชŸเซ‡เชก --with-{}_module เชฎเชพเชŸเซ‡ เชšเซ‡เช• git_url เช‰เชฎเซ‡เชฐเซ‹ ะธ เชœเซ‹ เชฎเซ‹เชกเซเชฏเซเชฒ == "http_dav_module" เชœเซ‹เชกเซ‹ --เชธเชพเชฅเซ‡. เชชเชฐเช‚เชคเซ เชคเซ‡เช“ เชธเซเชตเซ€เช•เชพเชฐเชพเชฏเชพ เชจ เชนเชคเชพ.

เชฐเซ‚เชชเชฐเซ‡เช–เชพ 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 เชฐเซ‚เชชเชฐเซ‡เช–เชพเช‚เช•เชจ เชœเชพเชคเซ‡ เช•เชฐเชถเซ‹.

เช…เชชเชพเชšเซ‡ httpd เชจเซ€ เชธเชพเชฎเซ‡ Nginx

เช…เชชเชพเชšเซ‡เชฅเซ€ เชตเชฟเชชเชฐเซ€เชค, 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;
    }
}

เชตเซ‡เชฌเชกเซ‡เชต เชฆเซเชตเชพเชฐเชพ เชซเชพเช‡เชฒเซ‹ เชกเชพเช‰เชจเชฒเซ‹เชก เช•เชฐเซ€ เชฐเชนเซเชฏเชพเช‚ เช›เซ€เช

เช†เชฐเชชเซ€เชเชฎ เชกเชพเช‰เชจเชฒเซ‹เชก เช•เชฐเชตเซเช‚ เช–เซ‚เชฌ เชœ เชธเชฐเชณ เช›เซ‡.

curl -T ./nginx-1.16.1-1.el7.ngx.x86_64.rpm https://ะฒะฐัˆ-ะฒะธั€ั‚ัƒะฐะปัŒะฝั‹ะน-ั…ะพัั‚/rpm/

เชธเซ‹เชฐเซเชธ: www.habr.com

เชเช• เชŸเชฟเชชเซเชชเชฃเซ€ เช‰เชฎเซ‡เชฐเซ‹