Настройка push-сервера

Настройка push-сервера состоит из двух основных задач: настройка rsync доступа (для нормального, тянущего зеркалирования) и настройка триггерного механизма ssh (для проталкивания тянущего зеркалирования).

(Подробности о том, что такое push-сервер, читайте в разъяснениях push-зеркалирования.)

Настройка rsync

Установите 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

Создайте новый ключ ssh для учётной записи, которую вы используете для зеркалирования Debian. Будьте осторожны и не перезапишите ваш оригинальный ключ ssh, для чего воспользуйтесь ключом командной строки -f, например:

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

Убедитесь что новый публичный ключ (~/.ssh/identity.mysite.pub) содержит в начале IPADDRESS с IP-адресом вышестоящего зеркала:

no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty,command="~/bin/ftpsync",from="IPADDRESS"

Вам нужно настроить сценарий, который будет связываться с нижележащими зеркалами. ftpsync tarball содержит сценарий runmirrors, который выполняет все необходимые вам задачи. Просто измените ваш ftpsync.conf так, чтобы он содержал HUB=true, скопируйте runmirrors.conf.sample в runmirrors.conf, runmirrors.mirror.sample в runmirrors.mirror и измените файл настроек так, чтобы он подходил вашей системе. Затем добавьте все ваши нижележащие зеркала в файл runmirrors.mirror, а дуэт ftpsync/runmirror сделает за вас всю тяжёлую работу.

Это приведёт к тому, что ваша система попытается подключиться по ssh к вашим нижележащим зеркалам после того, как ваше зеркало будет обновлено, так они смогут начать своё обновление. Это предполагает, что вы передадите операторам ваших нижележащих зеркал ssh-ключ, который вы указали при настройке runmirrors, и что они добавят его к свой собственный файл ~/.ssh/authorized_keys, как это было описано выше.

Если у вас появились с этим какие-то проблемы, свяжитесь с нами.