ほんとのこと知りたいだけなのに。

夏休みはもうおわり。

カベ雄の次男(caveman2) でWebフレームワーク。 (NginxとFastCGlをつなぐの巻)

自前の sakuraサーバー に Nginx をインストールできたんで、FastCGICommon Lisp(caveman2) につなげてみるけぇ。

ここ を参考に。

今回はタイトルの「フレームワーク」ってのとことは関係ないんじゃけどね。
まぁ、細かいこたぁええんじゃけぇ。

ほいじゃぁやるわ〜

cl-fastcgi のインストール

とりあえず cl-fastcgi をインストールしとく。
ローカル環境(openSUSE)でやったときは何か無いって叱られたけぇ。

あ、 やっぱし叱られた。libfcgi.so じゃったか。

> (ql:quickload :cl-fastcgi)
Unable to load any of the alternatives:
   (CL-FASTCGI::PATH "libfcgi.so")
   [Condition of type CFFI:LOAD-FOREIGN-LIBRARY-ERROR]

ほいじゃぁ libfcgi.so 入れるために apt-cache search FastCGI でパッケージを検索。

なんかイロイロ出てくるけど libfcgi-dev じゃったような。

とりあえず apt-get install libfcgi-dev でインストール。

んで再度、cl-fastcgi をインストール。
うん。イケとるねぇ。

> (ql:quickload :cl-fastcgi)
To load "cl-fastcgi":
  Load 1 ASDF system:
    cl-fastcgi
; Loading "cl-fastcgi"
..
(:CL-FASTCGI)

handler(caveman) を FastCGI で起動。

オペレータ start で 起動 パラメータは :server:fcgi を指定 :port は適当に自分で決めたやつを指定。 (ここでは 55556 を指定)

問題なく起動。

> (start :server :fcgi :port 55556)
To load "my-package":
  Load 1 ASDF system:
    my-package
; Loading "my-package"

To load "clack-handler-fcgi":
  Load 1 ASDF system:
    clack-handler-fcgi
; Loading "clack-handler-fcgi"

Fcgi server is started.
Listening on localhost:55556.
#<CLACK.HANDLER:<HANDLER> {100542AFD3}> 

nginx の設定を変更。

/etc/nginx/nginx.conf の html セクションに server セクションを追加。 fastcgi_pass 127.0.0.1:55556; のところで Common Lisp 側の FastCGI を指定。
今回は同じサーバー内じゃけぇ IP は 127.0.0.1(localhost) を指定。
port は 上で起動した handler に指定した ポートを指定。

こんな感じ。

server {
    listen 80;
    server_name host.name.ne.jp;

    location / {
        fastcgi_pass 127.0.0.1:55556;
        include fastcgi_params;
    }
}

たぶんこの指定が最小単位。
include fastcgi_params; 削ったら caveman 側でエラーになったけぇ。

ほかのディレクティブは本でもかって読みんさい。

んで、Nginx を再起動。 うんとこしょ /etc/init.d/nginx restart っと。

FastCGI でつながったか確認。

ブラウザから host.name.ne.jp の ポート:80 に接続。
無事 Welcome to Caveman2! の表示を確認。

イケたっぽいね。

めでたしめでたし。

今度は複数Common Lisp につなげてみようかねぇ。

ほいじゃぁ、また。

マスタリングNginx

マスタリングNginx




カベ雄の次男(caveman2) でWebフレームワーク。

  1. とりあえず起動までの巻
  2. NginxとFastCGlをつなぐの巻 (今ここ)