最近一直试着在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"
)
)
)
}