Elserv: Yet another HTTP server on Emacsen
Project Summary on SourceForge
[Japanese | English]
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 (1.6.2 だとなぜかうまく動かなかった)
ダウンロード
最新版は、0.4.0 です。
elserv-0.4.0.tar.gz
インストール
- アーカイブを適当なところで展開します。
- `make install' を実行します。(XEmacs パッケージとしてインストールする場合は `make install-package' を実行します。)
- Debian package も用意されています。
使い方
(require 'elserv) したあと関数 elserv-start を実行するとサーバが立ち上がります。
デフォルトのままだとポート番号は 8000 番となります。
そのままではほとんどコンテンツがありませんので、
関数 elserv-publish を使ってコンテンツを登録します。
"*Log of elserv*" というバッファにアクセスログが残ります。
関数 elserv-stop を実行するか、バッファ "*elserv*" を消すとサーバプロセスが終了します。
アプリケーション
デモ
es-demo.el はデモ用のサンプルサーバです。
Wiki
es-wiki.el は emacs-wiki を使った Wiki サーバです。
MHC
es-mhc.el は MHC を使ったスケジュールサーバです。
remote
remote.el は web ベースの Emacs リモコンです。
web-custom
web-custom.el は web 版 custom です。
デモビデオ
Elserv に emacs-w3m からアクセスするデモです。
elserv-demo.tty
(要 ttyrec)
TODO
- Content-Encoding
- Content Negotiation
- Cookie
- SSL?
メーリングリスト
elserv-devel@lists.sourceforge.net が開発者向けメーリングリストです(主に日本語)。
elserv-devel メーリングリストのページから購読可能です。
CVS
SourceForge の CVS の説明を御覧下さい. modulename は "Elserv" です(最初の 'E' は大文字)。
ViewCVS は こちら。
似た仕事
- httpd.el は元祖 Emacs で動く HTTP サーバです。tcpserver か inetd を使ってリクエスト毎に(!) Emacs が起動されます。
- httpd-serve は python スクリプトで書かれた Emacs 機能つきサーバです (httpd.el を使用)。
- AllegroServe は common lisp で書かれた Web サーバです。
性能評価
http_load による評価
% http_load -parallel 10 -seconds 2 elserv-test
171 fetches, 10 max parallel, 191349 bytes, in 2.00573 seconds
1119 mean bytes/connection
85.2557 fetches/sec, 95401.1 bytes/sec
msecs/connect: 0.203205 mean, 1.205 max, 0.082 min
msecs/first-response: 77.3926 mean, 133.693 max, 27.229 min
localhost から localhost に対するアクセス。
elserv-demo のトップページを対象とした。
環境は Celeron 400MHz, FreeBSD 3.5.1, Emacs 21。
Yuuichi Teranishi<teranisi@gohome.org>