最近一直试着在lighttpd上运行RoR,在网上看了很多,现在尝试一下。我的安装环境为:
Red Hat Enterprise Linux Server release 5 (Tikanga) Lighttpd-1.4.20 FastCGI-2.4.0 Ruby-fcgi-0.8.7 Ruby-1.8.7 + Rails-2.1.2 + gem-1.3.1
首先看看Lighttpd + Fastcgi + Ruby on Rails + RDBMS 的情況如下图,一共有两个接口:
- Lighttpd 通过 mod_fastcgi 跟 fasctcgi server通讯
- 而 Ruby通过 ruby-fcgi 跟 fastcgi server通讯
fastcgi server 是独立进程 ,可以跑 unix socket 或是 TCP socket ( spawn fcgi)。所以安裝步骤为:
- 安裝 lighttpd (默认已包含 mod_fastcgi )
- 安裝 fastcgi
- 安裝 Ruby on Rails
- 安裝 ruby-fcgi
- 配置 lighttpd.conf
安裝 lighttpd 很简单, 就不再赘述。
安裝 fastcgi 也比较简。
下载:
wget http://www.fastcgi.com/dist/fcgi-2.4.0.tar.gz
解压:
tar -zxvf fcgi-2.4.0.tar.gz
配置安装:
./configure --prefix=/usr/local/fcgi make && make install
一般没什么特别是、即可安装成功。
安裝 Ruby on Rails ,这个网上已有很多,也不再赘述。
安裝ruby-fcgi 有很多方式。
如系统提供的安装FreeBSD
通过gem安装:
gem install fcgi -- --with-fcgi-dir=/usr/local/fcgi
直接下载安装:
下载:
wget http://rubyforge.org/frs/download.php/11368/ruby-fcgi-0.8.7.tar.gz
解压:
tar -zxvf ruby-fcgi-0.8.7.tar.gz
配置安装:
ruby install.rb config -- --with-fcgi-include=/usr/local/fcgi/include --with-fcgi-lib=/usr/local/fcgi/lib 或 ruby install.rb config -- --with-fcgi-dir=/usr/local/fcgi/ ruby install.rb setup ruby install.rb install
配置 lighttpd.conf
在默认配置上外加载的模块:mod_fastcgi $HTTP["host"] == "demo.localhost"{ server.document-root = "/yourapp/public" server.error-handler-404 = "/dispatch.fcgi" fastcgi.debug = 1 fastcgi.server = ( ".fcgi" => ( "demo" => ( "min-procs" => 1, "max-procs" => 5, "socket" => "/var/run/lighttpd/rails.socket", "bin-path" => "/yourapp/public/dispatch.fcgi" ) ) ) }