標準愚痴出力

個人的なIT作業ログです。もしかしたら一般的に参考になることが書いているかもしれません(弱気

CGIをローカルテストするための簡易ウェブサーバー xnhttpd をGoで書きました

これな

今は昔、wifky という 1ファイルで動作するPerlWikiEngine を開発していました。当時は、AN Httpd でローカルテストしてからサーバーにアップするということをしていたのですが、その後、AN Httpd は公式サイトは閉鎖され、パブリックなサポートがなくなってしまいました。

当時はもう真面目に wifky も保守しなくなっていて困ってもなかったのですが、最近になって不具合修正の依頼があって、何とかせんといかなくなりました。てっとり早く archive.org あたりから AN Httpd のバイナリをゲットしてきてもいいのですが、せっかくなので、この機会に Go 言語でウェブサーバーでもでっちあげようと思いました。

xnhttpd は、WindowsCGI を起動する機能しかありません。まず、拡張子とインタプリタのリンクを JSON に書きます

sample.json

{
    "handler":{
        ".pl":"c:/Program Files/Git/usr/bin/perl.exe"
    }
}

この JSON を標準入力から読み込んで起動させます。

.\xnhttpd.exe < sample.json 

すると、起動した時のカレントディレクトリ以下にある Perl スクリプト(例:.\sample.pl)が http://localhost:8000/sample.pl みたいな URL でブラウザ呼び出すことができるようになります。

wifky は画像とかコンテンツを全部 CGI 側で動的に発信させるようになっているため、本ウェブサーバーは静的コンテンツをウェブサーバー側で発信する機能はありません。それゆえサーバーに負荷がかかります。が、テスト用なので、そこは気にしなくてもいいでしょう。

将来的には静的コンテンツの発信機能とか、markdownファイルを HTML 化して発信する機能をつけてもいいかな…とか思いますが、wifky の不具合を直した途端にまたやる気を失ってしまいました。やれやれだぜ

それにしても、最近の言語はウェブサーバーをサクッと書けてしまうくらいライブラリが充実してて、ほんと便利になりましたよね