#use wml::debian::template title="Konfiguracja serwera push" #use wml::debian::translation-check translation="1.12" maintainer=""

Konfigurowanie serwera technologii push składa się z dwóch podstawowych kroków: skonfigurowania dostępu przez rsync (dla normalnego tworzenia serwera lustrzanego, typu ,,pull'') oraz skonfigurowania mechanizmu ,,spustowego'' ssh (aby umożliwić inicjowanie tworzenia serwera lustrzanego metodą push).

(Aby uzyskać więcej informacji na temat serwerów technologii push przeczytaj wyjaśnienie tworzenia serwerów lustrzanych metodą push.)

Konfiguracja rsync

Zainstaluj rsync 2.1.1 lub nowszy. Jeśli Twój serwer używa systemu Debian, po prostu zainstaluj najnowszą wersję pakietu rsync.

Utwórz plik rsyncd.conf i wpisz do niego taką (lub zbliżoną) zawartość:

uid = nobody
gid = nogroup
max connections = 25
syslog facility = daemon
socket options = SO_KEEPALIVE

[debian]
  path = /org/ftp.debian.org/ftp
  comment = Debian FTP Archive (~24 GB)
  auth users = authorized_account1,authorized_account2,authorized_accountN
  read only = true
  secrets file = /etc/rsyncd/debian.secrets
[debian-web]
  path = /org/www.debian.org/debian.org
  comment = Debian Web Site (~400 MB)
  auth users = authorized_account1,authorized_account2,authorized_accountN
  read only = true
  secrets file = /etc/rsyncd/debian.secrets

Dodaj wpis dla każdego serwera, z którym się łączysz metodą push w pliku /etc/rsyncd/debian.secrets:

authorized_account1:a_password
authorized_account2:another_password
authorized_accountN:password

W tej chwili dałeś serwerom podrzędnym dostęp do swojego komputera.

Prawdopodobnie będziesz chciał uruchamiać demona rsync z inetd. Aby to osiągnać, musisz dodać usługę rsync do pliku /etc/services (jeśli jeszcze jej tam nie ma) w następujący sposób:

rsync           873/tcp
Aby uaktywnić demona przez inetd, dodaj następujący wpis do pliku /etc/inetd.conf:
rsync      stream      tcp         nowait      root /usr/bin/rsync rsyncd --daemon
(Pamiętaj, aby wysłać sygnał HUP do inetd, aby poinformować go, żeby odczytał ponownie swój plik konfiguracyjny po jego modyfikacji.)

Konfiguracja mechanizmu ,,spustowego'' ssh

Utwórz nowy klucz ssh dla konta, którego używasz do tworzenia obrazu lustrzanego Debiana. Upewnij się, że nie nadpiszesz swojego poprzedniego klucza ssh poprzez dodanie opcji -f, na przykład:

ssh-keygen -f ~/.ssh/identity.mysite

Upewnij się, że nowy klucz publiczny (~/.ssh/identity.mysite.pub) zawiera na początku taki wpis:

no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty,command="~/websync &"

(zamień "websync" na "ftpsync", albo "ftpsync-non-US", albo na jakąkolwiek inną komendę, której używasz do tworzenia kopii lustrzanej)

Musisz stworzyć skrypt, który będzie się kontaktował z serwerami podrzędnymi. Stwórz plik o nazwie signal i następującej zawartości:

#!/bin/sh

# Ten skrypt jest wywoływany, aby poinformować zdalny komputer, że
# nadszedł czas na zsynchronizowanie archiwum.

echo Signalling $1
ssh -o"BatchMode yes" -o"user $2" "$1" -i $HOME/.ssh/identity.mysite sleep 1

Powyższy skrypt zaloguje się na zdalnym komputerze używając specjalnego klucza ssh, który stworzyłeś powyżej. Sam skrypt nie robi niczego użytecznego na zdalnym komputerze, polecenie ~/websync (albo ~/ftpsync, albo ~/ftpsync-non-US) zostanie uruchomione przez klucz.

Aby zawiadomić serwery lustrzane, musisz dodać linię ./signal <site> <username> albo na końcu skryptu websync, albo, jeśli będzie to dla Ciebie bardziej wygodne, w nowym skrypcie, a potem wywołać ten skrypt z websync.

Ten nowy skrypt, runmirrors, powinien zawierać taką treść:

#!/bin/sh

# Ten skrypt jest wywoływany przez websync, aby powiadomić podrzędne
# serwery lustrzane.

./signal some.other.site archvsync
./signal and.another.site othersiteaccount

Zatem, jak tylko Twój serwer zakończy proces synchronizacji z serwerem nadrzędnym, rozpocznie się proces przesyłania danych metodą push do serwerów podrzędnych.

Jeśli będziesz miał z tym jakiekolwiek problemy, skontaktuj się z nami.