サーバ

概要

Lisp + Apacheでサーバ構築
ここ(= Clackを動かす.CommonLispでWebアプリ(CGI?)動かせるようになるまで(Apache編) - ぺっくブログミラー@peccul)を参考にして、実際にやってみた際のまとめ。

Information

version date memo
0.1 2013/11/04 first

環境

Ubuntu 12.04 (LXDE)

手順

modlisp

参考先の手順どおりでDL。

wget http://www.fractalconcept.com:8000/public/open-source/mod_lisp/mod_lisp2.c

Apache2に組み込む際のコマンドは、記載されているコマンドでは出来なかったので、以下を利用

# apxs2を入れる(apache2-threaded-devに入っているらしい)
sudo apt-get install apache2-threaded-dev
# Apache2にmod_lisp2.cを取り込む
sudo apxs2 -i -c mod_lisp2.c

私の環境では、/usr/lib/apache2/modules/mod_lisp2.soにインストールされた。

httpd.conf

Ubuntuなので、/etc/apache2/mods-enablesにlisp.confを作成
(参考先とパスが違うので注意)

# 書き込んだ内容
LoadModule lisp_module /usr/lib/apache2/modules/mod_lisp2.so

httpd.confファイルの中身は、参考先と完全に一緒。

LispServer 127.0.0.1 5000 "clack"
<Location /clack>
  SetHandler lisp-handler
  AddHandler lisp-handler .lisp
</Location>
Apache2の再起動
sudo apachectl restart

(参考)
再起動時に、以下のようなメッセージが出力されることがある。
「apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1 for ServerName」
これは、「ServerNameに127.0.1.1を使用した、FQDNが確定できまんせんでした。」という事らしい。
「/etc/hosts」及び「/etc/sysconfig/network」に、自分で設定したホスト名がApacheの設定ファイルに記述されていないので、発生しているようである。
参考先(Apacheのエラー:Could not reliably determine the server’s fully qualified domain name〜とメッセージが出たときの対応 - yummy-yummy)
私の場合、/etc/hostsに127.0.1.1を別に定義していたが、今回のApacheの定義に127.0.1.1を定義していないので、発生している。
(再起動には、成功しているらしいので、別に直さなくても良いらしい。)

動作確認

私の場合「demo.lisp」ファイルは、下記のパスに存在したので、作業ディレクトリにコピーする。
/usr/share/common-lisp/source/modlisp/demo.lisp
参考先の同じ様に、20行目あたりを以下の様にする。

((equal url "/clack/fixed.lsp")
  (output-html-page (fixxed-html-string)))
((equal url "/clack/precompute.lsp")

実際に動作させる(参考先と同じ)

sbcl --load demo.lsp
;; エラーが無い場合、以下で開始
*1383564841* (ml:modlisp-start :port 5000)
;; 停止は以下のコマンド
*1383564842* (ml:modlisp-stop-all)

ブラウザから動作を確認する。
以下のパスにアクセスしていろいろ表示されたら成功(参考先とは違うパスなので注意)
http://localhost/clack/fixed.lsp
http://localhost/clack/precompute.lsp
http://localhost/clack/debug.lsp

(参考)
modlisp関連の関数が無いとか怒られる場合。
.sbclrcに以下の記述を加えると良い。

(require :modlisp)
Clack起動

Clackのサンプルプログラムは(= Clackを動かす.CommonLispでWebアプリ(CGI?)動かせるようになるまで(ローカルで動かす編) - ぺっくブログミラー@peccul)
先ほどの参考リンクにもあるように、:server :apacheの行をのコメントアウトを外す。
起動の確認は、次のリンクで行う(http://localhost/clack)