社内サーバで制作したコンテンツを本番サーバにrsyncでアップする。
これは、毎回ターミナルを立ち上げて作業しないといけないのだが、Webの画面からrsyncを起動できたら、管理者でなくとも操作できるし、iモードからも操作可能になる。
■本番サーバにphpファイルを作成する
rsyncを動かすためのphpファイルを作る。場所は、本番サーバのApacheドキュメントルート内の適当な場所に置く。
下準備として、rsyncをパスワード入力無しで実行できるようにしておく。
Solarisにsshの自動ログインでパスワードを入力しないを参照
rsync.php
<html>
<meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
<title>テストサーバから本番サーバへの全コンテンツコピー</title>
<head>
</head>
<body>
<h3>テストサーバ から 本番サーバ へ全コンテンツコピーが始まりました。</h3>
<a xhref="rsync_ps.php">進行状況を確認する</a>
<br>
<br>
<h3>コピーファイルを表示しています</h3>
最大100行まで表示します。
<?php
$output = `/usr/local/bin/rsync -av --rsync-path=/usr/local/bin/rsync
-e ssh testuser@192.168.100.111:public_html/
/export/home/webuser/public_html | head -100`;
echo "<pre>$output</pre>";
?>
</body>
</html>
$output = の行は、; まで一行で入力する。
■rsyncの進行状況を確認するphp
rsync_ps.php
<html>
<meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
<title>テストサーバから本番サーバへの全コンテンツコピー | 進行状況を確認</title>
<head>
</head>
<body>
<h3>テストサーバ から 本番サーバ へ全コンテンツコピーの進行状況を確認</h3>
<a xhref="rsync_ps.php">進行状況をリロードする</a>
<br>
<br>
<h3>進行状況を表示しています</h3>
例のように「/usr/local/bin/rsync」が含まれている行が表示されていれば、
現在コピー作業が進行しています。<br>
<pre>
(例)
webuser 22239 22237 8 16:24:10 ? 0:29 /usr/local/bin/rsync -av --rsync-path
</pre>
<br>
<br>
進行状況...<br>
<?php
$output = `ps -ef | grep rsync-pat[h]`;
echo "<pre>$output</pre>";
?>
<br>
表示されなくなったらコピーは完了です。<br>
<br>
</body>
</html>
Solaris10 Apache2 の起動
Solarisでrsyncを設定する