push サーバの設定は、基本的に 2 つの作業からなります。
ひとつは rsync 接続 (通常のpull
ミラー) の設定、
もうひとつは ssh のトリガ機構 (pull ミラーをpush
するためのもの)
の設定です。
(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
push する各サイトに対応するエントリを、
/etc/rsyncd/debian.secrets ファイルに追加します。
authorized_account1:a_password authorized_account2:another_password authorized_accountN:password
これで下流のミラーに、あなたのマシンのアーカイブへの 接続を許したことになります。
rsync デーモンは inetd から起動することになるでしょう。
これにはまず、/etc/services ファイルに
次のような rsync サービスを (まだなければ) 追加します。
rsync 873/tcp
デーモンを inetd から起動させるには、次の行を
/etc/inetd.conf ファイルに加えます。
rsync stream tcp nowait root /usr/bin/rsync rsyncd --daemon
(修正後に inetd に HUP シグナルを送り、 修正された設定ファイルを読み込ませるのを忘れないこと)
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
など、ミラー開始用のコマンドの名前に書き換えてある必要があります)。
このスクリプト自身はリモートでなんら作業を行いませんが、
鍵の設定によって指定されたミラー開始用のコマンドだけが実行されます。
実際にミラーを開始させるには、
rsync で自分のサイトを更新し終えた後に
./signal <site> <username>
というコマンドを実行する必要があります。
こうすると、あなたのサイトが上流からのミラーを終えると、
すぐさま下流への push を開始することになります。
これらのコマンドは、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
もし問題が起こったら、 連絡してください。