CGI で Ruby on Rails を動かしてみたところすごい遅くて不安になったので、
FastCGI で Ruby on Rails を動かしてみた。
OS: Vine Linux 3.2
Apache: 1.3.33
1. mod_fastcgi をコンパイルするため、apxs をインストール
% sudo apt-get install apache-devel
2. mod_fastcgiをダウンロード、インストール
% tar xvfz mod_fastcgi-2.4.2.tar.gz
% cd mod_fastcgi-2.4.2/
% apxs -o mod_fastcgi.so -c *.c
% sudo apxs -i -a -n fastcgi mod_fastcgi.so
3. FastCGI を使うよう設定
[/etc/httpd/conf/httpd.conf]
<IfModule mod_fastcgi.c>
FastCgiIpcDir /tmp/fcgi_ipc/
FastCgiConfig -maxClassProcesses 2
FastCgiConfig -maxProcesses 4
</IfModule>
LoadModule fastcgi_module modules/mod_fastcgi.so
AddModule mod_fastcgi.c
[public/.htaccess]
#RewriteRule ^(.*)$ dispatch.cgi [QSA,L]
RewriteRule ^(.*)$ dispatch.fcgi [QSA,L]
これだけで動くかな・・と思ったら、甘かった。dispatch.fcgi が ruby-fcgi の機能を使ってるらしい。
ruby-fcgi をインストールしようとしたら、fcgi.h が無いというエラーが。FastCGI Developer's Kit も必要だったか。
3. というわけで、FastCGI Developer's Kit をダウンロード、インストール
% tar xvfz fcgi-2.4.0.tar.gz
% cd fcgi-2.4.0/
% ./configure
% make
% sudo make install
4. ruby-fcgi をダウンロード、インストール
% tar xvfz ruby-fcgi-0.8.7.tar.gz
% cd ruby-fcgi-0.8.7/
% ruby install.rb config --without-ext
% ruby install.rb setup
% sudo ruby install.rb install
これで動くようになった。
確かに速い。これなら十分実用レベルだ。
ちなみに gem install fcgi すると、以下のようなエラーが出て動かなかった。
[log/fastcgi.crash.log]
Dispatcher failed to catch: undefined method `is_cgi?' for FCGI:Class (NoMethodError)
ぐぐってみると、
[Rails] trouble with fastcgi and "undefined method `is_cgi?'"
が見つかった。
gem を使うとこのエラーが出て、手動でインストールすると出ないようだ。ちょっとハマった。
FastCGI で Ruby on Rails を動かしてみた。
OS: Vine Linux 3.2
Apache: 1.3.33
1. mod_fastcgi をコンパイルするため、apxs をインストール
% sudo apt-get install apache-devel
2. mod_fastcgiをダウンロード、インストール
% tar xvfz mod_fastcgi-2.4.2.tar.gz
% cd mod_fastcgi-2.4.2/
% apxs -o mod_fastcgi.so -c *.c
% sudo apxs -i -a -n fastcgi mod_fastcgi.so
3. FastCGI を使うよう設定
[/etc/httpd/conf/httpd.conf]
<IfModule mod_fastcgi.c>
FastCgiIpcDir /tmp/fcgi_ipc/
FastCgiConfig -maxClassProcesses 2
FastCgiConfig -maxProcesses 4
</IfModule>
LoadModule fastcgi_module modules/mod_fastcgi.so
AddModule mod_fastcgi.c
[public/.htaccess]
#RewriteRule ^(.*)$ dispatch.cgi [QSA,L]
RewriteRule ^(.*)$ dispatch.fcgi [QSA,L]
これだけで動くかな・・と思ったら、甘かった。dispatch.fcgi が ruby-fcgi の機能を使ってるらしい。
ruby-fcgi をインストールしようとしたら、fcgi.h が無いというエラーが。FastCGI Developer's Kit も必要だったか。
3. というわけで、FastCGI Developer's Kit をダウンロード、インストール
% tar xvfz fcgi-2.4.0.tar.gz
% cd fcgi-2.4.0/
% ./configure
% make
% sudo make install
4. ruby-fcgi をダウンロード、インストール
% tar xvfz ruby-fcgi-0.8.7.tar.gz
% cd ruby-fcgi-0.8.7/
% ruby install.rb config --without-ext
% ruby install.rb setup
% sudo ruby install.rb install
これで動くようになった。
確かに速い。これなら十分実用レベルだ。
ちなみに gem install fcgi すると、以下のようなエラーが出て動かなかった。
[log/fastcgi.crash.log]
Dispatcher failed to catch: undefined method `is_cgi?' for FCGI:Class (NoMethodError)
ぐぐってみると、
[Rails] trouble with fastcgi and "undefined method `is_cgi?'"
が見つかった。
gem を使うとこのエラーが出て、手動でインストールすると出ないようだ。ちょっとハマった。