Shammer's Philosophy

My private adversaria

ClozureCLでHunchentootを動かす

Quicklisp をインストール後、以下を実行する。

  1. (ql:system-apropos "hunchentoot")
  2. (ql:quickload "hunchentoot")
  3. (in-package :hunchentoot)
  4. (hunchentoot:start (make-instance 'hunchentoot:easy-acceptor :port 4242)

とりあえず、ここまで実施したら、ブラウザで http://localhost:4242 へアクセスして Listen しているか確認する。問題なければ、これをスクリプトにすればよいはず。ql:system-apropos は hunchentoot を含むパッケージをチェックするみたいな処理だから、スクリプトには含める必要はない。スクリプトにしたあとは、ccl64 --load $script で起動する。参考までにスクリプトの内容は以下。

;;; These libraries are required by Hunchentoot
(ql:quickload :bordeaux-threads)
(ql:quickload :MD5)
(ql:quickload :CL-BASE64)
(ql:quickload :RFC2388)
(ql:quickload :trivial-backtrace)
(ql:quickload :usocket)
(ql:quickload :CL+SSL)
(ql:quickload :FLEXI-STREAMS)
(ql:quickload :Chunga)
(ql:quickload :CL-PPCRE)
(ql:quickload :CL-WHO)
(ql:quickload :Drakma)

(ql:quickload :hunchentoot)
(in-package :hunchentoot)
(hunchentoot:start (make-instance 'hunchentoot:easy-acceptor :port 4242))

抜ける際には、

  1. (in-package :ccl)
  2. (quit)

とすればいい。セミコロンを二つにすれば、(in-package :hunchentoot) や (in-package :ccl) は不要。これらを包含する別のパッケージを作るのもいいかも。それはおいおい考えよう。