HaskellでCGI

今、メインマシンのMacBook Airがありません。

だからデスクの下の奥深くに眠っているUbuntuマシンを久々に引っ張り出してきました。
このマシンはサーバソフトの調査用に使っているのですが、今回はこのマシンを使ってHaskellCGIを書いてみることにしました。

Apache2の設定

ますは何はともあれ、Apache2でCGIが使えるようにしないといけません。(Apache2自体はUbuntuインストールしたときに一緒に入ってた)

Apacheのサイトを見ながら設定してみます。
http://httpd.apache.org/docs/2.0/ja/howto/cgi.html

結局どの設定が大事なのかよく分からない書き方ですが、チュートリアルなので仕方がない。

ScriptAlias /cgi/ /home/◯◯/cgi/

apache2.confを書き直したらApacheの再起動が必要です。次のコマンドで。

sudo apache2ctl  restart

HaskellCGIを書く

CGIを書くったって大したことはないです。標準出力に文字列を書き込めばいいだけ!
test.hsを以下のように編集します。

#! /usr/local/bin/runghc
main = do
  putStrLn "Content-Type: text/plain"
  putStrLn ""
  putStrLn "Welcome Haskell's CGI world!!"

で、以下のURLにアクセス。

http://localhost/cgi/test.hs

とはいえ、初めてのことは何でもはまりますね。この簡単なCGIにもはまりました。
Content-Typeを出力した後は改行が2つ必要なのですでが、これに気付かず4行めを省いていました。なのでいつまで経ってもInternal Server Errorしか出ず。

でも気付いてしまえばなんてことないですね。

これでHaskellの用途が広がった!