■debian squeezeを動画再生サーバにする
※今回はwebサーバのトップページをログインユーザのホームディレクトリに変更します。
参考:debian lennyを動画再生サーバにする
http://d.hatena.ne.jp/labunix/20120108
$ sudo apt-get install -y apache2
$ sudo cp /etc/apache2/sites-available/default /etc/apache2/sites-available/default.org
$ sudo diff /etc/apache2/sites-available/default /etc/apache2/sites-available/default.org
4c4
< DocumentRoot /home/user/www
---
> DocumentRoot /var/www
9c9
< <Directory /home/user/www/>
---
> <Directory /var/www/>
$ sudo /etc/init.d/apache2 restart
$ mkdir ~/www
■lennyからscpする
$ sudo scp -r /var/www/* root@vmsqueeze:/home/user/www
■squeeze側で設定する
$ sudo chown -R `whoami`:`whoami` /home/`whoami`/www
$ w3m -no-proxy -dump_head http://`hostname -f`/playlist_a.html | head -1
HTTP/1.1 200 OK
■www転送設定
※以下は普通はやりません。上記だけで充分です。
また、他にも多くの方法があります。
★wwwアクセスの構成
lenny:80(/var/www/index.html)⇒lenny:9080⇒ポート転送(NAT)⇒squeeze:80(/home/user/www)
■lennyからsqueezeへのアクセスにsshを使う。
※当然ながらポートは被らないこと。
※lennyで設定。1024以下のポート転送にはroot権限が必要
$ netstat -an | grep 5080
$ sudo cat /root/.ssh/config
Host vmsqueezewww
HostName 192.168.72.1
GatewayPorts yes
LocalForward 5080 192.168.72.108:80
■ポート転送で接続する(lennyから)。
$ sudo -p 5022 root@vmsqueezewww
$ netstat -an | grep 5080
tcp6 0 0 :::5080 :::* LISTEN
■lenny側の「/var/www/index.html」を修正
$ sudo cat /var/www/index.html
<html>
<head><title>vmsqueeze</title>
</head>
<body>
<div alien="center">
<table border="0">
<tr><td>
this is lenny
<a href="http://debian-lenny:5080/">vmsqueeze</a>
</td></tr>
</table>
</div>
</body>
</html>
■転送チェック(ssh転送接続無し)
※多段プロキシを通すとキャッシュの期限内は見れてしまうので。
プロキシ構成は以下の通り
w3m(lenny)⇒debian-lenny:3128⇒vmsqueeze:7080⇒vmsqueeze:80
ポート転送構成は以下の通り
w3m(lenny)⇒debian-lenny:5080⇒vmsqueeze:80
$ w3m -no-proxy -dump_head http://debian-lenny | head -1
HTTP/1.1 200 OK
$ w3m -no-proxy -dump_head http://debian-lenny:5080 | head -1
w3m: Can't load http://debian-lenny:5080.
■転送チェック(ssh転送接続有り)
$ w3m -no-proxy -dump_head http://debian-lenny | head -1
HTTP/1.1 200 OK
$ w3m -no-proxy -dump_head http://debian-lenny:5080 | head -1
HTTP/1.1 200 OK
$ w3m -no-proxy -dump http://debian-lenny:5080
It works!
This is squeeze
■「index.html」は「index.htm」に変更し、優先度を低に。
「playlist_a.html」を「index.html」に変更し、優先度を高に。
※読み込みの優先順位は以下の通り。
$ sudo cat /etc/apache2/mods-available/dir.conf | \
grep -v "<" | sed s/" "/"\n"/g | grep -v "^\$\|D"
index.html
index.cgi
index.pl
index.php
index.xhtml
index.htm
$ cd ${HOME}/www
$ mv index.html index.htm
$ mv playlist_a.html index.html
■これで一般webサーバと動画再生サーバの分離が完了。
※ポートが待ち受けてもいないので、エラーページすら返りませんのでご注意を。
また、sshで多段ログインしないと使えませんw。
DMZ環境内のグローバルポートの範囲内で使用が限定されていますが、
更に、検証時に何かあった場合でも、ポート転送を止めれば直ぐにアクセス停止出来る状態になっています。
■XMLファイルの設定の自動化スクリプトの使い方サンプル
※スペース、カンマは無い前提ですが。。。
「%20」とスペース等、URLとファイル名の関係は一切考慮していません。
★一行づつの場合
$ ./flaver_template.sh "/movie/video.flv,/movie/video.jpg,NoTitle" ;echo $?
★「sample」にカンマ区切り、一行に一ファイル設定として読み込む
※但し、「Y/N」の指定は必要
$ for list in $(cat sample);do ./flaver_template.sh "$list";echo $?;done | tee -a flaver.log
■スクリプト本体
※XMLについては秒単位でユニークなバックアップファイルを作るので、以下のように変更しても構いません。
変更前:read YORN
変更後:YORN="Y"
※エラー時にはリターンコードを出力します。
エラーとなる場合は以下を参考にして下さい。
・「echo $?」でエラーコードを見る
・「#!/bin/bash -x」でデバッグモードにして全体を見る
リターンコードは10進数です。
引数チェックエラーは1桁、ユーザストップエラーは99、
ディレクトリ/ファイルエラーは10番台、XMLエラーは20番台としています。
正常終了時には0を返します。
メッセージで返しても良いのですが、簡易スクリプトなので。。。
・引数の指定チェックエラー:1
・カンマ分離チェック:2
・ユーザによるストップ:99
・ドキュメントルート配下(ホーム)チェック:10
・バックアップチェック:11
・XMLの名前変更チェック:21
・XMLの最終チェック:22
$ cat flaver.sh
if [ "$#" -eq 1 ];then
ARG=$1
else
echo "usege: MOVIEPATH,PICPATH,TITLENAME"
exit 1
fi
COUNT=$(echo ${ARG} | sed s/","/"\n"/g | wc -l | awk '{print $1}')
if [ ${COUNT} -eq 3 ];then
echo "count check ok"
else
echo "Error: count check NG $COUNT"
exit 2
fi
MOVIEPATH=$(echo "${ARG}" | awk -F\, '{print $1}')
PICPATH=$(echo "${ARG}" | awk -F\, '{print $2}')
TITLENAME=$(echo "${ARG}" | awk -F\, '{print $3}')
echo "BACKUP = ${BACKUP}"
echo -n "Are you ok? [Y/n]"
read YORN
case "$YORN" in
[Yy])
echo "OK continue...";
;;
*)
echo "Error: User select stop. $YORN";
exit 99;
;;
esac
MYHOME="${HOME}/www/playlistA"
if [ -d "${MYHOME}" ];then
echo "${MYHOME} is ok"
else
echo "Not Found: ${MYHOME}"
exit 10
fi
FLAG=0
cp ${MYHOME}/flaver.xml ${MYHOME}/${BACKUP} || FLAG=1
if [ ${FLAG} -eq 0 ];then
echo "backup ok"
else
echo "Error: backup NG FLAG = ${FLAG}"
exit 11
fi
FLAG=0
mv ${MYHOME}/flaver.xml ${MYHOME}/flaver.xml.bak || FLAG=1
if [ ${FLAG} -eq 0 ];then
echo "flaver.xml move ok"
else
echo "Error: flaver move NG FLAG = ${FLAG}"
exit 21
fi
FLAG=0
test -f ${MYHOME}/flaver.xml.bak || FLAG=1
if [ ${FLAG} -eq 0 ];then
echo "flaver.xml move ok"
else
echo "Error: flaver move NG FLAG = ${FLAG}"
exit 22
fi
cat flaver.xml.bak | grep -v '</flaver>' > flaver.xml
echo '
<data>
<file>'${MOVIEPATH}'</file> <!-- 動画・音楽ファイルパス (必須) -->
<image>'${PICPATH}'</image> <!-- 画像・サムネイルパス -->
<title>'${TITLEPATH}'</title> <!-- タイトル -->
<text></text> <!-- テキスト (タイトルに連結) -->
<author></author> <!-- 著作者 (タイトルに連結) -->
<link></link> <!-- リンク (タイトルに付加) -->
<time></time> <!-- 再生時間 -->
<size></size> <!-- サイズ表示用 -->
<byte></byte> <!-- 容量表示用 -->
</data>
' >> flaver.xml
echo '</flaver>' >> flaver.xml
exit 0