search
LoginSignup
8
Help us understand the problem. What are the problem?

More than 5 years have passed since last update.

Emacs Advent Calendar 2012 Day 22

posted at

updated at

emacs で動く Elserv という HTTP サーバを見つけました

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 というのもあるようです。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
8
Help us understand the problem. What are the problem?