linux下lighttpd + fcgi的ROR环境搭建

    由于家里断网了,只有在办公室把这篇文章搞一搞,这篇文章只是自己的一个随笔总结,robbin对lighttpd和fcgi的环境搭建阐述的已经非常详细,建议大家去熟读下,他对lighttpd + fcgi进行了高度的评价,并且从javaeye的事实运营过程当中我们也看到了确实这2个服务器的搭配显得非常的默契,是现今ROR最好的,性能最高的服务器搭配组合。另外一种组合则是nginx + mongrel,同样是ROR服务器优选方案之一,nginx是俄国人搞出的一个轻量级,在处理静态页面时候速度高于apche几十倍的web服务器,同lighttpd + fcgi相比,用robbin的话来说就是nginx不是为mongrel量身定做的,而lighttpd则相反,它和fcgi算是天生一对。对这两种性能都非常好的搭配方式,可以参读robbin的文章,在这里我只是简单的介绍一下这个环境搭建过程。

    我选用的是linux是redhat5,ruby、rubygems、rails的版本分别是1.8.7、1.3.7和2.2.2,数据库用的是mysql,也需要安装数据库适配器ruby-mysql.相关的安装过程参考我的另外一篇《linux下mongrel + nginx的ROR集群环境搭建》。


1、安装fcig库和ruby-fcgi支持库
使用fcgi必须要安装ruby-fcgi支持库,而fcgi支持库必须要依赖于fcgi的独立库,所就先安装fcgi的独立库
下载fcgi-2.4.0.tar.gz
mkdir fcgi
tar xzvf fcgi-2.4.0.tar.gz
cd fcgi-2.4.0
./configure -prefix=/data/fcgi
make
make install
随后安装ruby-fcgi支持库
下载fruby-fcgi-0.8.7.tar.gz
tar xzvf ruby-fcgi-0.8.7.tar.gz
cd ruby-fcgi-0.8.7
ruby install.rb config -- --with-fcgi-include=/data/fcgi/include --with-fcgi-lib=/data/fcgi/lib
ruby install.rb setup
ruby install.rb install
到这里,ruby-fcgi的支持库已经搞定。

2、安装lighttpd
先前我已经说过nginx依赖pcre库,同样的lighttpd也依赖,按照之前我所讲述的安装过程安装pcre,之后一定要设置pcre的环境变量,不然lighttpd的安装不会成功
下载lighttpd-1.4.26.tar.gz
mkdir lighttpd
tar xzvf lighttpd-1.4.26.tar.gz
cd lighttpd-1.4.26
./configure -prefix=/data/lighttpd
make
make install
这里出列出一些需要用到的module,看到mod_rewrite则基本没有什么问题了,如果没有看到,请回过头去看看你的pcre是否有正确安装,必须正确安装pcre和设置了pcre环境变量之后才能使得lighttpd安装成功.
我在这里下载的是lighhttpd-1.4.26,当前时间最新的版本是1.4.28,我之前下载的是1.4.28进行安装,后来发现里面的配置文件内容和他的一些目录结构跟之前的版本不太一样,网上也没有太多这方面的信息,配置了几个小时后没有办法和fcgi进行通讯,并且出现了错误,所以就改用了1.4.26,这个版本的目录结构跟robbin介绍的是一样的,我基本也是按照robbin给出的步骤来进行,最终顺畅的开启了服务器。

3、配置lighttpd
进入解压后的lighttpd文件夹(不是lighttpd安装目录)
cp doc/sysconfig.lighttpd /etc/sysconfig/lighttpd
mkdir /etc/lighttpd
cp doc/lighttpd.conf /etc/lighttpd/lighttpd.conf
我用的是redhat,接下来的步骤为:
cp doc/rc.lighttpd.redhat /etc/init.d/lighttpd
如果你用的是其他linux发行版,参照robbin的文章进行配置
把/etc/init.d/lighttpd文件中的
lighttpd=/usr/sbin/lighttpd 改成:
lighttpd=/data/lighttpd/sbin/lighttpd

修改/etc/lighttpd/lighttpd.conf
取消用到的模块注释:
mod_rewrite,mod_access,mod_fastcgi,mod_simple_vhost,mod_cgi,mod_compress,mod_accesslog

指定server.document-root, server.error-log,accesslog.filename的目录,我指定server.document-root的目录是/srv/www/htdocs/
server.error-log的目录是/data/lighttpd/logs/error.log
accesslog.filename的目录是/data/lighttpd/logs/access.log
记住一定要事先创建好相应的文件夹和文件,不然启动lighttpd会报错

指定用户:
server.username            = "nobody"
server.groupname           = "nobody"
我这里为了方便用的是root,真实环境当中最好是指定单独的用户权限

静态文件的压缩处理:
compress.cache-dir     = "/tmp/lighttpd/cache/compress"
compress.filetype      = ("text/plain",  "text/html","text/javascript","text/css")
先去掉文件的注释然后再修改成如上

最后配置连接你的rails工程
在文件中的某一处单独的地方加入:
$HTTP["host"] == "192.168.1.100" {
server.document-root = "/data/myProject"
 server.error-handler-404 = "/dispatch.fcgi"
  fastcgi.server = (".fcgi" =>
      ("localhost" =>
        ("min-procs" => 1,
    "max-procs" => 1,
"socket" => "/data/myProject/tmp/lighttpd/socket/rails.socket",
           "bin-path" => "/data/myProject/public/dispatch.fcgi",
"bin-environment" => ("RAILS_ENV" => "production")
      )
    )
)
}
server.document-root 指定你的 rails 工程目录
server.error-handler-404 指定的是如果 lighttpd 找不到相应的静态页面处理 URL 则交给 rails dispatch . fcgi 处理
min-procs为启动fcgi的最小数目,max-procs为最大数目,我这里启动了一个fcgi进程
socket指定产生的socket文件(lighttpd和fcgi通过unix/socket进行通讯),需要指定目录,目录中需要我们自己手动创建文件夹,文件可以不用创建
bin-path指向rails工程的public/dispatch.fcgi
bin-environment指定是生产环境,也可以是development

至此lighttpd的配置已经完成

启动lighttpd会同时启动rails工程:
/etc/init.b/lighttpd start 启动
/etc/init.b/lighttpd stop 停止
/etc/init.b/lighttpd restart 重启
启动lighttpd之后,访问本机80端口,如果出现404错误,则把/etc/lighttpd/lighttpd.conf下的:
dir-listing.activate       = "enable" 的注释解开

如果在某些情况下,关闭lighttpd的时候没有关闭掉fcgi,不用慌张,杀掉即可:
killall -9 fcgi
做好之后就能够正确访问了,其间一定要注意自己rails工程的public/dispatch.fcgi必须要有执行权限,并且如果你是在windows下创建的工程,部署到linux上的时候要改掉dispatch.fcgi里面的ruby解析器路径:
第一行:#!/data/ruby/bin ----linux下 #!E:\ruby\bin ---windows下
注意要修改这个地方,然后用./dispatch.fcgi来运行一下,如果能运行,则说明此处没有问题

如果需要查看lighttpd + fcgi集群的相关信息可以参照robbin的问题解答,关于linux下lighttpd和fcgi的ROR环境搭建就是这样。

 

 

 



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值