Linux (サーバー制作) : 19:webサーバーを作る準備
ここを参照しクローンを作る。
次にこのサーバーにマウントする領域を設定していくが、このWEBサーバーの構成は
vda: ここにさらに領域が作られ、ルートが出来ている。
vdb: SWAP領域
vdc: /Downloadにマウントされる、他のサーバーと共有している。ここまではクローンで出来ている
vdd: /webdataにマウント、ここにWEBコンテンツ、mysqlのデーターなどが保存される。
vde: /homeにマウント、メールデーター(IMAP)の保存場所でもある
元のサーバーとIPなどがダブっているが、参照先にその変更方法もあるので済まして置く。
次にサーバーを起動し、/etc/fstab を設定、下記を最後に追記
/dev/vdd /webdata ext4 defaults 0 0
/dev/vde /home ext4 defaults 0 0
新しいdirectoryの作成とアトリビュートの設定
# mkdir /webdata
# chmod 777 /webdata
そして設定の反映
# mount -a
次は本来ならapacheの設定だが、私はサーバーのマイグレーションをやろうとしているので、データーのコピーが必要。
色々考えたがrsyncを使うことにした。今はテストの段階だが、いずれデーターが必要なのでrsyncで同期をして置くことにした。
完全にテストが終わり、マイグレーションを実施する直前に再度 rsysnc で同期を取る。
rsyncの使い方はここに詳しく解説がある
rsyncデーモンをコピー元で動かすか、コピー先で動かすか迷ったが、コピー先つまりこのサーバーで動かすことにした。
CentOSではrsyncのデーモン動作はxinetd経由で動かすのだが、インストール済みである。また/etc/xinetd.d/rsync もxinetdのインストール時に出来ている。
service rsync
{
disable = no ← noに変更
# flags = IPv6 ← ここはよく分からない
socket_type = stream
wait = no
user = root
server = /usr/bin/rsync
server_args = --daemon
log_on_failure += USERID
}
flags=IPv6の設定の意味がよく分からない。これを行うとIPv4とIPv6の両方アクセプトするのか(多分この意味と思うが)、IPv6だけで通信を行うのか不明なのでコメントアウトしておいた。
次にrsyncの設定ファイルを作る
# gedit /etc/rsyncd.conf
# Global options
uid = root
gid = wheel
use chroot = yes
log file = /var/log/rsyncd.log
pid file = /var/run/rsyncd.pid
hosts allow = 192.168.xx.xx/24
hosts deny = *
dont compress = *.gz *.tgz *.zip *.pdf *.sit *.sitx *.lzh *.bz2 *.jpg *.gif *.png
# Module options
[webdata]
comment = rsync server
path = /webdata
auth users = root
secrets file = /etc/rsyncd.secrets
read only = no
[home]
comment = rsync server
path = /home
auth users = root
secrets file = /etc/rsyncd.secrets
read only = no
hosts allow = で接続出来るホストをローカルネットワークに限定している。(xx.xx は環境に合わせる)
パスワードファイルの設定 /etc/rsyncd.secrets
root:xxxxxxxxxx
ユーザー名:パスワードのように設定。
私はrsyncd.confに別のユーザーを指定したが出来なかった。rootにすると出来るようになった。又、このパスワードはOSのパスワードとは関係ない、勝手に決めてよい。
xinetdを再起動すればRQが来た時、動作する
# service xinetd restart
xinetdの再起動までやったが、ここはdaemonモードでやりたいので、rsyncをデーモンでスタートする
# rsync --daemon
ちなみに停止はPIDを調べてkillする
# ps auxww | grep 'rsync --daemon'
root 2183 0.0 0.0 107624 536 ? Ss 12:52 0:00 rsync --daemon
root 2328 0.0 0.0 107464 892 pts/0 S+ 13:03 0:00 grep rsync --daemon
***************
ここからはコピー元のサーバーの設定。
パスワードファイルを作る。これはなくてもパスワードを聞いてくるのですが、スクリプトを組、cronで定期的に実行するにはパスワードを聞いて来ては困るので、それに備え作っておく。
# gedit /etc/rsync.passwd
xxxxxxx
とパスワードだけを書いておくそうな。
rsyncのデーモン動作の解説WEBには複数のユーザー設定もあるが、ユーザー名の指定が無いがどう動作するのかなー?
早速コピーをするが、万が一コピー元とコピー先を間違えると全部消えるので、まずはドライラン(実際にコピーはせずテストのみする)
rsyncの書式は rsync オプション コピー元 コピー先なので
# rsync -avn --password-file=/etc/rsync.passwd /webdata/ rsync;//192.168.xx.xx/webdata ← xoopsが悪さをするので : を ; に変えてある
もし、ユーザー認証で跳ねられる時は、rsync.passwd とrsyncがデーモンで動いているホストの rsyncd.secrets のパーミッションが600になっているか確認。
大丈夫そうなので
# rsync -av --password-file=/etc/rsync.passwd /webdata/ rsync;//192.168.xx.xx/webdata ← xoopsが悪さをするので : を ; に変えてある
もちろんIPは今制作中のホスト。
最初はrsyncd.confの auth users = root と secrets file = /etc/rsyncd.secrets をコメントアウトし、テストした方が問題が切り分けやすい。
もちろん --password-file=/etc/rsync.passwd は付けない
同様に/homeもコピーするがその前に元のWEBサーバーに登録してあるユーザーをこのサーバーにも登録しておく。ただしUIDを同じにしないといけない。
書式:useradd オプション 登録するユーザー名
私はこのWEBサーバーにFTPで接続を許すユーザーがおり、homeディレクトリーが違う。そのようなユーザーには
# useradd -u 元のWEBと同じUID -d 指定するディレクトリー ユーザー名
新規ユーザー作成ではGIDも指定したUIDと同じだが、usermodでUIDを変更したら、group IDも変更しておく
# groupmod -g 元のWEBと同じGID グループ名
次に作ったユーザーのパスワードを設定
書式:passwd ユーザー名
で2回同じパスワードを入れ設定する。
必要であれば所有者の変更(UIDが違う場合)
書式:chown -R ユーザー名:グループ名 設定するdirectoryのフルパス
その後rsyncで/homeをコピーする
****************
その後、制作中のホストに戻っておく。
投稿された内容の著作権はコメントの投稿者に帰属します。