lighttpd + virtualhost + fastcgi + Catalyst
半日に及ぶ試行錯誤の結果
に成功したので、その設定をメモしておきます。お金がないので、とりあえずひとつのサーバーでサービスをたくさん起動したい、という時に使える方法です。
pcre のインストール
これがインストールされていないとまともに動かないので、先にインストールします。
$ wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-7.1.tar.gz $ tar xvzf pcre-7.1.tar.gz $ cd pcre-7.1 $ ./configure $ make $ sudo make install
ligttpd のインストール
さきほどインストールした pcre を有効にし、ついでに openssl も有効にしておきます。
$ wget http://www.lighttpd.net/download/lighttpd-1.4.15.tar.gz $ tar xvzf lighttpd-1.4.15.tar.gz $ cd lighttpd-1.4.15 $ ./configure --with-openssl --with-openssl-libs=/usr/lib --prefix=/usr/local/lighttpd --with-pcre $ make $ sudo make install $ cd /usr/local/lighttpd $ sudo mkdir conf htdocs logs $ sudo cp /somewhere/lighttpd-1.4.15/doc/lighttpd.conf conf $ sudo cp /somewhere/lighttpd-1.4.15/doc/rc.lighttpd.redhat /etc/rc.d/init.d/lighttpd
/etc/rc.d/init.d/lighttpd 中の実行ファイルと設定ファイルの位置を適当に修正します。
fastcgi のインストール
$ wget http://www.fastcgi.com/dist/fcgi.tar.gz $ tar xvzf fcgi-2.4.0.tar.gz $ cd fcgi-2.4.0 $ ./configure $ make $ sudo make install
FCGI モジュールのインストール
$ sudo cpan FCGI
設定ファイル
/usr/local/lighttpd/conf/lighttpd.conf に以下の内容を追加します。
$HTTP["host"] == "app1.test.com" { server.document-root = "/home/foobar/App1/root" server.errorlog = "/tmp/app1/error.log" fastcgi.server = ( "" => (( "check-local" => "disable", "bin-path" => "/home/foobar/App1/script/app1_fastcgi.pl", "socket" => "/tmp/app1/fcgi.socket", "bin-environment" => ( "CATALYST_DEBUG" => "1" ), "min-procs" => 1, "max-procs" => 1, )) ) } $HTTP["host"] == "app2.test.com" { server.document-root = "/home/foobar/App2/root" server.errorlog = "/tmp/app2/error.log" fastcgi.server = ( "" => (( "check-local" => "disable", "bin-path" => "/home/foobar/App2/script/app2_fastcgi.pl", "socket" => "/tmp/app2/fcgi.socket", "bin-environment" => ( "CATALYST_DEBUG" => "1" ), "min-procs" => 1, "max-procs" => 1, )) ) } $HTTP["host"] =~ "(www\.|)test\.com" { server.document-root = "/usr/local/lighttpd/htdocs" }
ソケット用ディレクトリの作成
$ su - $ cd /tmp $ mkdir app1 $ chmod 775 app1 $ mkdir app2 $ chmod 775 app2
ligttpd の起動
$ sudo /etc/rc.d/init.d/lighttpd start