Mac OS XにErlyWebをインストール

ErlyWebはErlang用のWebフレームワーク. ちょいと使い心地を試してみたかったのでそのインストールメモ. Mac OS X Leopardにインストールしまうす.

参考はKLabさんところ.

Erlangのインストール

なにはなくともErlangをインストール. Macportsで楽ちんだぜ.

$ sudo port install erlang

Yawsのインストール

Erlangで書かれたWebサーバー. とある検証では同時接続数がApacheの限界値の20倍ぐらいでも平気だとか. ErlyWebはコイツの上で動作するのでインストール.

ちょっと前はファイルをダウンロードして, 適当な場所に配置していたような気がするけど, いつからかMacportsでインストールできるみたいだ(もしかして最初から?).

$ sudo port install yaws

ErlyWebのインストール

本命はErlyWebのサイトからダウンロード. erlyweb-0.7.1.tar.gz(現在)を落として伸張し, Erlangのlibディレクトリに突っ込んでおく. 下記のErlangのlibディレクトリまでのパスはボクの環境の場合なので, 適せん変更.

$ wget http://erlyweb.googlecode.com/files/erlyweb-0.7.1.tar.gz
$ tar zxf erlyweb-0.7.1.tar.gz
$ sudo mv erlyweb-0.7.1 /opt/local/lib/erlang/lib

ErlyWebでアプリケーションを作成

Erlangのシェルからerlywebモジュールの関数を呼んで作成する.

$ mkdir erlyweb_apps
$ erl
Eshell V5.6.4  (abort with ^G)
1> erlyweb:create_app("hoge", "/Users/takkkun/erlyweb_apps").
ディレクトリがどんどん作成されていく
2> q().

erlyweb_appsの下にhogeというディレクトリが作成され, その中に必要なファイルやらディレクトリができる. Yawsのためにログ吐き出し先も作っておこう. コレは手動.

$ mkdir erlyweb_apps/hoge/log

またErlyWebのアプリケーションはコンパイルが必要(つかErlangだからか)なので, コンパイルしておく. コレはファイルの内容が変更されるたびにやらなきゃいけない.

$ erl
Eshell V5.6.4  (abort with ^G)
1> erlyweb:compile("/Users/takkkun/erlyweb_apps/hoge", []).

Yawsの設定ファイルを書く

yaws.confという名前のファイルを作成し, 設定を記述する. とりあえず下記のように書いてみた. 他の設定はココらへんを参考にしてみたり.

どこに置いておけばいいのかはよくわからんのだけど, とりあえずerlyweb_apps/hogeの配下に作成. Railsっぽく1アプリケーションに1サーバーみたいにしておく(本当はよくないんだろうけど). 後でどこに置いておけばいいか調べておくか.

$ vi erlyweb_apps/hoge/yaws.conf
logdir = /Users/takkkun/erlyweb_apps/hoge/log
<server localhost>
    port = 8000
    listen = 0.0.0.0
    docroot = /Users/takkkun/erlyweb_apps/hoge/www
    appmods = <"/", erlyweb>
    <opaque>
        appname = hoge
    </opaque>
</server>

Yawsを起動する

yawsと打てば起動する. iオプションはインタラクティヴモードのコトらしいです.

yawsを実行したときに, カレントディレクトリにyaws.confがあれば読込んでくれるようだ. というコトでカレントディレクトリをerlyweb_apps/hogeにしておく.

$ cd erlyweb_apps/hoge
$ yaws -i
Eshell V5.6.4  (abort with ^G)
1> 
=INFO REPORT==== 9-Nov-2008::01:41:29 ===
Yaws: Using config file ./yaws.conf
yaws:Add path "/opt/local/lib/yaws/examples/ebin"
yaws:Running with id=default (localinstall=false) 
Running with debug checks turned on (slower server) 
Logging to directory "/Users/takkkun/erlyweb_apps/hoge/log"

=INFO REPORT==== 9-Nov-2008::01:41:29 ===
Ctlfile : /Users/takkkun/.yaws/yaws/default/CTL

=INFO REPORT==== 9-Nov-2008::01:41:29 ===
Yaws: Listening to 0.0.0.0:8000 for servers
 - http://localhost:8000 under /Users/takkkun/erlyweb_apps/hoge/www
1>

そしてWebブラウザhttp://localhost:8000/にアクセスすると, ErlyWebのルートらしきものが表示される, と. とりあえずこんなもんかー.