Настройка push-сервера состоит из двух основных задач: настройка rsync
доступа (для нормального, тянущего
зеркалирования) и настройка триггерного механизма ssh
(для проталкивания
тянущего зеркалирования).
(Подробности о том, что такое push-сервер, читайте в разъяснениях push-зеркалирования.)
Установите rsync версии 2.1.1 или выше. Если ваш сайт работает на
Debian, просто установите последний пакет
rsync.
Создайте файл rsyncd.conf и внесите в него что-то подобное этому:
uid = nobody gid = nogroup max connections = 25 socket options = SO_KEEPALIVE [debian] path = /srv/debian/mirror comment = The Debian Archive (~250 GB) auth users = authorized_account1,authorized_account2,authorized_accountN read only = true secrets file = /etc/rsyncd/debian.secrets
Добавьте запись для каждого сайта, который вы проталкиваете, в файл
/etc/rsyncd/debian.secrets:
авторизованная_учётная_запись1:пароль авторизованная_учётная_запись2:другой_пароль авторизованная_учётная_записьN:Nный_пароль
Теперь вы даёте нижележащим зеркалам доступ к архиву на вашей машине.
Возможно, вы захотите, чтобы демон rsync запускался из inetd. Чтобы сделать это,
вы должны добавить сервис rsync в файл /etc/services (если он ещё
не там), как показано ниже:
rsync 873/tcp
Добавьте следующую строку в файл /etc/inetd.conf, чтобы разрешить
демон из inetd:
rsync stream tcp nowait root /usr/bin/rsync rsyncd --daemon(Не забудьте послать inetd сигнал HUP, чтобы сказать ему перечитать конфигурационный файл после модификации.)
Создайте новый ключ ssh для учётной записи, которую вы используете для зеркалирования Debian. Будьте осторожны и не перезапишите ваш оригинальный ключ ssh, для чего воспользуйтесь ключом командной строки -f, например:
ssh-keygen -f ~/.ssh/identity.mysite
Убедитесь что новый публичный ключ (~/.ssh/identity.mysite.pub) содержит в начале следующее:
no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty,command="~/sync &"
Вам нужно настроить сценарий, который будет связываться с нижележащими зеркалами.
Создайте файл с именем signal, содержащий следующее:
#!/bin/sh # This script is called to signal the remote host that it is time to # mirror the archive. echo Signalling $1 ssh -o"BatchMode yes" -o"user $2" "$1" -i $HOME/.ssh/identity.mysite sleep 1
Этот сценарий будет соединяться с удалённым хостом, используя специальный ключ ssh,
который вы создали выше, предлагая его добавить в ~/.ssh/authorized_keys
каждому оператору нижележащих зеркал (заменяет sync
с
anonftpsync
или любой другой командой для начала зеркалирования).
Сам по себе сценарий удалённо не делает ничего &mdash будет запущена
единственная команда, зависящая от настроек ключа.
Фактически, чтобы связать зеркала, вам нужно выполнить ./signal
<сайт> <имя_пользователя> после завершения синхронизации
с помощью rsync. Соответственно, как только будет закончено зеркалирование
с вышележащим сайтом, вы стартуете проталкивание нижележащим от вас сайтам.
Также можно разместить эти команды в конце вашего anonftpsync
сценария или создать новый сценарий и запускать его из anonftpsync.
Например:
#!/bin/sh # This script is called by websync to signal the downstream mirrors. ./signal some.other.site archvsync ./signal and.another.site othersiteaccount
Если у вас появились с этим какие-то проблемы, свяжитесь с нами.