on Mac OS X

この投稿は7年半前の記事です。 情報が古くなっている可能性があるので、その点ご了承ください。
2010 年 2 月 20 日 2,621日前)
3,322文字 (読了時間8分)

SPONSORED LINK

他人に教える用です。あんまり面白くはないです。

低速サーバを構築する目的

読み込みが速すぎて検証できないよ..
読み込みが速すぎて検証できないよ..

会社のお仕事でFLVをプログレッシブダウンロードで読み込んで再生するFlashプレイヤーを作ったのですが、回線が速すぎて、下記の2つを検証できませんでした。

  • ファイル読み込みが完了していない時点まで再生が進んだ場合
  • せっかちなユーザーがシークバーを読み込みの完了していない部分まで引っ張ってしまった場合

本当はYoutubeみたいに途中から再生するやつを作りたかったんですが、面倒くさそうなんで後日。なにやらPHPで動画を切り出して渡すらしい。(参考:‘Streaming ‘ flv via PHP, take two

なにはともあれ、低帯域の環境を再現する必要があったわけです。

thttpdに出会うまで

会社ではFlash CS3をMac OS X 10.5.8で使ってます。

Flashに低速環境を再現するモードがあった気がしたんですが、見つけられず。Device Centralにもそういう機能はなし。

WindowsだとNEGIESというソフトがあるようなんですが、Macだったので、ダメ。

さらに付け加えると、いちいちFTPしたくないので、Flashでパブリッシュしたらすぐ確認できるようなローカル環境が望ましい。リモート・サーバに上げるとかは無し。

で、探してみると、こんなエントリーが。

thttpdには、設定ファイル「thttpd.throttle」で、ファイルの拡張子毎に使用する帯域を設定できるというとても便利な機能がある。(Flashのテスト用に)低速に振舞うWebサーバを建てる

これで決まり。

thttpdをインストールしてから動くまで

一応、環境はこんな感じです。完全自己責任でお願いします。

  • Mac OS X 10.5.8
  • MacPortsにていろいろインストール済み
  • makeしてインストールしたものはほとんどない(気がする)

さて、本家thttpdのサイトを見てみると、./configureしてmakeしてとか書いてある。MacPortsにないかなと探したけどなかった。

しかし、さらにググると、Mac OS Xにもパッチをあてれば入るらしいということが判明。

いわれたとおりにパッチを当ててからのインストールを試みる。デフォルトでは/usr/local/sbinにインストールされるとのこと。

ルートユーザになってない人は先頭にsudoを追加してください。

mkdir /usr/local/src #とりあえずダウンロード用のフォルダを作る。
cd /usr/local/src #移動
wget http://www.acme.com/software/thttpd/thttpd-2.25b.tar.gz #ダウンロード
gunzip thttpd-2.25b.tar.gz #解凍
tar xpf thttpd-2.25b.tar
cd thttpd-2.25b #フォルダ内に移動
wget http://do.homeunix.org/pub/thttpd-macosx.patch #パッチをダウンロード
patch thttpd.c > thttpd-macosx.patch #パッチを適用

これでインストールできるはずだったんですが、./configureでエラー!

ググった情報を参考にしてとりあえずmakeまで終える。

./configure --host=darwin
make

ここまではオッケー。しかし、make installでまた失敗。

手動でインストールした猛者もいるようですが、makeの仕方・仕組みがわからないので別の方法を探す。

これはbinというユーザーが存在しないため。Mac OS X 10.5でbinユーザーを作成する

な・る・ほ・ど〜。では、binを作成。

sudo dscl . create /Groups/bin
sudo dscl . create /Users/bin

これでいいのか?

sudo make install

できたー!

さて、本家マニュアルにある通り、/etc/thttpd.confを編集しようとするが….存在しない! ここで絶望のズンドコにたたき落とされる。

ここで諦めず、Spotlightで検索。ダウンロードしたソースファイルの中に発見! これをコピーして使います。

cp /usr/local/src/thttpd-2.25b/contrib/redhat-rpm/thttpd.conf /etc/thttpd.conf

中身を編集。

# This section overrides defaults
dir=/path/to/document_root
nochroot
user=<ユーザー名>
#default=nobody
logfile=/Users/<ユーザー名>/Library/Logs/thttpd.log
pidfile=/Users/<ユーザー名>/Library/run/thttpd.pid
# This section _documents_ defaults in effect
port=8080
# nosymlink# default = !chroot
# novhost
# nocgipat
throttles=/etc/thttpd.throttles
# host=0.0.0.0
charset=utf-8

で、重要なのは13行目で指定したthrottlesファイル。これが帯域速度を制限するための設定ファイルです。これを作成します。

sudo vi /etc/thttpd.throttles #ファイルを作成
#Configuration File for thttpd
**.flv  5000 #limit FLV files to 1/30 fo T1 #これでflvの拡張子が5000バイト/秒でしか読み込まれない

これで準備オーケー! 起動します。

cd /usr/local/sbin/thttpd -C /etc/thttpd.conf #面倒くさかったらパスを通してください。

http://localhost:8080 にアクセス! サーバー動いた! でも画面が真っ黒!

Firebug先生に聞いてみたところ、どうやらFlash埋込み用のJavascriptをHTMLとして解釈しているっぽいです。

ApacheでいうところのAdd type text/javascript が必要っぽい。しかし、ここはHTMLにJavascriptを直書きすることにして回避。

見よ、この圧倒的な遅さ!
見よ、この圧倒的な遅さ!

で、ようやっと動きました。いやー、プログレスバーが圧倒的に置き去りにできるようになりました。

ところで、このthttpdははじめっからデーモンで動いているっぽいです。

止め方がわかんなかったので、アクティビティモニタでthttpdを選択して「プロセス終了」終了。これで当初の目的は果たせました。

thttpdを使ってみての感想

やっぱりApacheほどは設定が細かくないし、CGIも激遅っぽいのでアレですが、throlltesだけでも使うメリットはありますね。

設定できる機能は他にもいろいろあるみたいなので、あとはマニュアル参照してください。

最近はiPhoneをはじめとする3G端末でもガンガンPCサイト見るので(iPhoneはFlashダメだけど)、帯域のパフォーマンス確認は必要です。

Docomo for PCとか、潰れかけのWillcomとかも3Gですしね。

あと、これからはGoogle先生もサイトのスピードを評価するらしいので、いろんなところで役に立つかも。

というわけで、終わり。

 

フォローしてください

ここで会ったのもなにかの縁。
高橋文樹.comの最新情報を見逃さないためにもフォローをお願いします。
めったに送らないメルマガもあります。

SPONSORED LINK

この記事について

この記事はが2010 年 2 月 20 日にプログラミングの記事として公開しました。

高橋先生の電子書籍

高橋先生の電子書籍

Amazonで電子書籍も買えます。

好きな言葉

ふう! 伝記作家って、悪魔だな。

— スティーブン・ミルハウザー

高橋先生の処女作

『途中下車』高橋文樹

2001年幻冬舎NET学生文学大賞受賞作です。

Web制作やります

Web制作やります

Web制作のご依頼は株式会社破滅派へ

不定期メルマガ

高橋文樹.comでは、不定期でニュースレターを配信しています。滅多に送らないので是非購読してください。

高橋文樹.comではプライバシーポリシーに準じて登録情報を取り扱います。