emacs で動く Elserv という HTTP サーバを見つけました。Wanderlust で有名な Yuuichi Teranishi さん作です。elisp を学ぶうえでの参考になるかもしれません。ソースコードは公式ページ からダウンロードできないようです。Ubuntu ならパッケージ化されているため、apt でインストールできます。ちなみに sudo apt-get source elserv でソースを取得できます。
$ sudo apt-get install elserv
...
以下の特別パッケージがインストールされます:
flim
提案パッケージ:
emacs-wiki mhc xemacs21-bin semi wl wl-beta
以下のパッケージが新たにインストールされます:
elserv flim
...
続行しますか [Y/n]?
emacs23 でも、以下の設定で動作を確認できました。
(require 'elserv)
(elserv-start 8088)
(require 'es-monitor)
(require 'es-wiki)
(elserv-package-publish (elserv-find-process) "/wiki" "wiki")
(require 'es-demo)
試しに、以下を評価して、http://localhost:8088/ へアクセスすると、foo と表示されました。
(elserv-publish (elserv-find-process 8088) "/"
:string "foo"
:content-type "text/plain")
README.ja を引用します。
Elserv -- Yet Another HTTP Server on Emacsen
Elserv は Emacs 上で常駐して動く HTTP サーバです。
Emacs 自身にはサーバの機能がありませんので、専用のサーバプロセス
(ruby スクリプト)をバックエンドで立ち上げ、そのプロセスと通信することに
よってサーバ機能を実現しています。
特徴:
* 手軽に Web サーバを立ち上げられる (Emacs のコマンドを実行するだけ)。
* Emacs lisp で動的コンテンツを作成できる。
* コンテンツの置き換えは eval するだけで OK。
* HTTP 1.1 GET, HEAD, POST に対応。
必要なもの:
* Emacs (Emacs 20 or XEmacs)
* APEL, FLIM
* ruby (1.6.3 or later)
インストール:
* アーカイブを適当なところで展開します。
* `make install' を実行します。
(XEmacs パッケージとしてインストールする場合は `make install-package'
を実行します。)
使い方:
(require 'elserv) したあと関数 elserv-start を実行すると
サーバが立ち上がります。
デフォルトのままだとポート番号は 8000 番となります。
そのままではほとんどコンテンツがありませんので、
関数 elserv-publish を使ってコンテンツを登録してください。
es- で始まるファイルに定義されたアプリケーションは、
関数 elserv-package-publish で登録できます。
例えば、es-wiki.el に定義された wiki サーバを /wiki に登録するには
以下を実行します。
(elserv-package-publish (elserv-find-process) "/wiki" "wiki")
関数 elserv-stop を実行するか、バッファ "*elserv*.." を消すと
サーバプロセスが終了します。
"*Log of elserv*..." というバッファにアクセスログが残ります。
アプリケーション:
es-demo.el: デモ用のサンプルサーバです。
es-wiki.el: emacs-wiki を使った Wiki サーバです。
es-mhc.el: MHC を使ったスケジュールサーバです。
es-monitor.el: publish されているコンテンツの一覧を表示します。
デフォルトで /monitor に publish されています。
remote.el: web ブラウザ経由で Emacs を操作するためのサーバです。
web-custom.el: web ブラウザ経由で Emacs をカスタマイズするためのサーバです。
同様のツールに、elnode というのもあるようです。