概要
Elnodeなるものがあり、これでEmacs上でlispを書いてWebサーバを構築することができます
ちょっと興味があったので試してみました
環境
- Mac OS X 10.10.3
- Emacs 24.4.1
- Elnode 0.9.9.8.8
Elnodeインストール
まずEmacsにElnodeをインストールします
Emacsのバージョン24以上を使っていればpacakge.el
を使ってインストールすることができます
ここを元に package.el でダウンロードできるリポジトリ (marmalade, melpa) を追加します
追加できたらM-x package-list-packages
でパッケージのリストを表示します
一覧の中にelnode
があるので i -> x とキーを押してインストールします
i でインストール対象を選択して、 x でインストールを実行します
インストールできるとelnode-start
などの命令が使えるようになります
サンプルスクリプト作成
適当なHTMLを返却することができるEmacs-lispを作成してみます
- emacs sample_web_app.el
(defun my-test-handler (httpcon)
"Demonstration function"
(elnode-http-start httpcon 200 '("Content-type" . "text/html"))
(elnode-http-return httpcon "<html><b>HELLO!</b></html>"))
(elnode-start 'my-test-handler :port 8082)
「HELLO!」という文字列を返すだけの簡単なサンプルです
上記のスクリプトを開いているバッファでeval-buffer
を実行してみましょう
するとサーバが起動します(特に *Messages*
にログはでません)
ブラウザでアクセスしてみる
http://localhost:8082/
にアクセスしてみましょう
先ほど設定した「HELLO!」といういう文字列がボールドされて返ってくると思います
サーバを停止する
M-x elnode-stop
で起動中のポート番号を入力してEnterでOKです
停止時は *Messages*
に停止ログが出力されます
念のためブラウザで先ほどのURLにアクセスするとページが返ってこないことがわかると思います
Tips
- Cannot bind server socket: permission denied
LISTENするポートを1024番以上にしてください
80番とかでサーバを起動しようとすると上記のエラーになります - index.htmlを表示する方法
(setq my-webserver
(elnode-webserver-handler-maker "/path/to/elisp"))
(elnode-start my-webserver :port 8082)
「/path/to/elisp」配下に index.html を配置して同様にstartすれば index.html を自動で探して表示してくれます
最後に
他にもorg-mode
と連携したりCSSを適用したり、HTTPのパラメータを取得したりといろいろできるみたいです
自分はとりあえず動作することを確認したかっただけなので、これで終わりますが 本格的にWebアプリを作ろうとしたら、DBと接続したり別のHTTPをコールしたり、MVCしたりといろいろ考えなければいけませんが、何か頑張ればできそうな気がします
.el
ファイルをデプロイしてemacs
コマンドを使ってWebサーバを立ちあげる、なんて運用が実現できるのか・・・
0 件のコメント:
コメントを投稿