push サーバを設定する
push サーバの設定は、基本的に 2 つの作業からなります。
ひとつは rsync 接続 (通常のpull
ミラー) の設定、
もうひとつは ssh のトリガ機構 (pull ミラーをpush
するためのもの)
の設定です。
(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
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 シグナルを送り、 修正された設定ファイルを読み込ませるのを忘れないこと)
ssh トリガ機構の設定
Debian のミラーに用いるアカウントの ssh 鍵を新しく作ります。 すでにある自分の鍵を上書きしないよう、-f オプションを用いましょう。 たとえば次のようになります。
ssh-keygen -f ~/.ssh/identity.mysite
公開鍵 (~/.ssh/identity.mysite.pub) の先頭に、 IPADDRESS をあなたの上流ミラーに置き換えて、次の内容を追加してください。
no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty,command="~/bin/ftpsync",from="IPADDRESS" &"
次に、下流のミラーに接続するスクリプトを書きます。
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
に追加済みである必要があります (また、ftpsync
を、ミラー開始用の
コマンドの名前に書き換えてある必要があります)。
このスクリプト自身はリモートでなんら作業を行いませんが、
鍵の設定によって指定されたミラー開始用のコマンドだけが実行されます。
実際にミラーを開始させるには、
rsync で自分のサイトを更新し終えた後に
./signal <site> <username>
というコマンドを実行する必要があります。
こうすると、あなたのサイトが上流からのミラーを終えると、
すぐさま下流への push を開始することになります。
これらのコマンドは、ftpsync.conf または次のような別のスクリプトに書いて、そのスクリプトを anonftpsync
から呼び出す形の方が便利なら、それでもかまいません。
#!/bin/sh # This script is called by websync to signal the downstream mirrors. ./signal some.other.site archvsync ./signal and.another.site othersiteaccount
もし問題が起こったら、 連絡してください。
