`
lzqustc
  • 浏览: 211081 次
  • 性别: Icon_minigender_1
  • 来自: 厦门
社区版块
存档分类
最新评论

lighttpd + fcgi 部署rails应用详解

阅读更多

开发环境:Linux version 2.6.18-6-686 (Debian 2.6.18.dfsg.1-24)

               gcc version 4.1.2 20061115 (Debian 4.1.1-21)

               mysql

               ruby 1.8.7 [i686-linux]

               rails 2.3.2

 

步骤:(引用: http://www.iteye.com/topic/43228?page=1  )

 

1.安装 Ruby FCGI 支持

 
由于ruby的fcgi支持库需要在编译的时候联接FCGI的系统库,因此我们需要先安装FCGI库,下载FCGI源代码发行包:
tar xzvf fcgi-2.4.0.tar.gz
cd fcgi-2.4.0
./configure --prefix=/usr/local/fcgi
make && make install
同样,将fcgi安装在自己指定的目录下,而不是默认的/usr/local,避免多个软件混在一起。
 
然后就可以安装ruby的fcgi支持库了,下载ruby-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=/usr/local/fcgi/include --with-fcgi-lib=/usr/local/fcgi/lib
ruby install.rb setup
ruby install.rb install
 
 
2. 安装 Lighttpd
 
在安装lighttpd之前,应该确认操作系统已经安装pcre,即Perl兼容的规则表达式库:
rpm –qa |grep pcre
如果没有,请从Linux安装光盘里面安装。
也可单独安装,下载pcre-7.9.tar.gz (附件)
tar xzvf pcre-7.9.tar.gz
cd pcre-7.9
./configure --prefix=/usr/local/ pcre
make && make install
 
然后下载lighttpd:
tar xzvf lighttpd-1.4.13.tar.gz
cd lighttpd-1.4.13
./configure --prefix=/usr/local/lighttpd
 
configure完毕以后,会给出一个激活的模块和没有激活模块的清单,可以检查一下,是否自己需要的模块都已经激活,在enable的模块中一定要有“mod_rewrite”这一项,否则重新检查pcre是否安装。然后编译安装:
make && make install
编译后配置:
cp doc/sysconfig.lighttpd /etc/sysconfig/lighttpd
mkdir /etc/lighttpd
cp doc/lighttpd.conf /etc/lighttpd/lighttpd.conf
 
如果你的Linux是RedHat/CentOS,那么:
cp doc/rc.lighttpd.redhat /etc/init.d/lighttpd
如果你的Linux是SuSE,那么:
cp doc/rc.lighttpd /etc/init.d/lighttpd
其他Linux发行版本可以自行参考该文件内容进行修改。然后修改/etc/init.d/lighttpd,把
LIGHTTPD_BIN=/usr/sbin/lighttpd
改为
LIGHTTPD_BIN=/usr/local/lighttpd/sbin/lighttpd
 
此脚本用来控制lighttpd的启动关闭和重起:
/etc/init.d/lighttpd start
/etc/init.d/lighttpd stop
/etc/init.d/lighttpd restart
3.配置Lighttpd
 
修改/etc/lighttpd/lighttpd.conf
 
1)server.modules
取消需要用到模块的注释,mod_rewrite,mod_access,mod_fastcgi,mod_simple_vhost,mod_cgi,mod_compress,mod_accesslog是一般需要用到的。
 
2)server.document-root, server.error-log,accesslog.filename      需要指定相应的目录
 

server.document-root        =  "/execute/ror"  #我的工程目录,rails应用为B2bM

server.errorlog             = "/execute/ror/B2bM/log/lighttpd/error.log"   # 要在../ B2bM/log/ 下手动创建相应的文件夹 lighttpd

index-file.names            = ( "index.php", "index.html", "index.htm", "default.htm", "dispatch.fcgi" )

accesslog.filename          = "/execute/ror/B2bM/log/lighttpd/access.log"       
 
server.port  = 8000    #默认为80
4)静态文件压缩
compress.cache-dir         = "/tmp/lighttpd/cache/compress"    #要在/ tmp/ 下手动创建相应的文件夹 lighttpd/cache/compress
compress.filetype          = ("text/plain", "text/html","text/javascript","text/css")
可以指定某些静态资源类型使用压缩方式传输,节省带宽,对于大量AJAX应用来说,可以极大提高页面加载速度。
 
5)配置ruby on rails
 
最简单的配置如下:
$HTTP["host"] == "vip.xxxx.cn" {
 server.document-root = "/execute/ror/B2bM/public"      #我的rails应用目录
 server.error-handler-404 = "/dispatch.fcgi"
 url.rewrite = (                                                #ulr重写规则
 
  "^/([\-_a-zA-Z0-9]+)/([\-_a-zA-Z0-9]+)/([\-_a-zA-Z0-9%]+)\??([\-_a-zA-Z0-9=&%]*)$" => "/dispatch.fcgi?controller=$1&action=$2&id=$3&$4",
  "^/([\-_a-zA-Z0-9]+)/([\-_a-zA-Z0-9]+)/?\??([\-_a-zA-Z0-9=&%]*)$" => "/dispatch.fcgi?controller=$1&action=$2&$3",
  "^/([\-_a-zA-Z0-9]+)/?\??([\-_a-zA-Z0-9=&%]*)$" => "/dispatch.fcgi?controller=$1&action=index&$2" #,
 
 )               
 fastcgi.server = (".fcgi" =>
    ("localhost" =>
      ("min-procs" => 2,
       "max-procs" => 2,
       "socket" => "/execute/ror/B2bM/tmp/lighttpd/socket/rails.socket",            #要../ B2bM/tmp/ 下手动创建相应的文件夹lighttpd/socket/
       "bin-path" => "/execute/ror/B2bM/public/dispatch.fcgi",
       "bin-environment" => ("RAILS_ENV" => "production")     #development   production     #运行环境,将产生相应的log (development.log /production.log)—— 这也是开发过程中查找错误原因的重要文件
      )
    )
 )
}
说明:以上手动创建的文件夹,其目录均可自行指定,只要lighttpd能找到这些文件路径(否则,将出错)
OK,配置完毕

如果运行时出错信息与cache有关可能还要安装一个gem: gem install memcache-client

如果是dispatch.fcgi没启动,可能是权限问题,进入 相应目录(/execute/ror/B2bM/public )执行
chmod 755 dispatch.fcgi 试试

其它错误原因查看../ development.log /production.log 信息,部分常见错误的解决方案参考: http://www.iteye.com/topic/168989
分享到:
评论

相关推荐

    搭建lighttpd+cgi的代码包

    【搭建lighttpd+cgi的代码包】 在Web服务器领域,lighttpd是一个轻量级且高效的HTTP服务器,因其低内存占用和高速度而受到欢迎。CGI(Common Gateway Interface)则是一种标准,允许Web服务器执行外部程序并返回...

    lighttpd+mysql+php tar.gz安装包整合

    这里我们关注的是"lighttpd+mysql+php"的集成安装,特别适用于轻量级服务器需求,例如开发或测试环境。这个压缩包文件集合包含了在CentOS7系统上成功安装和测试的所有组件,包括lighttpd(一个轻量级HTTP服务器)、...

    phpLight(LightTPD+PHP集成包) v2014

    phpLight 2014 是网上首套LightTPD+PHP集成包,集成最新Lighttpd+PHP+MySQL+SQL-Front+Zend Guard Loader+XCache。纯绿色,安装后无需再配置。支持系统服务和非服务两种启动方式,自由切换。一次性安装无需再安装,...

    套件php 集成最新的Apache+Nginx+LightTPD+PHP+MySQL+phpMyAdmin+Zend Optimizer+Zend Loader

    首先,Apache、Nginx和LightTPD是三种流行的Web服务器软件。Apache是最广泛使用的开源HTTP服务器,具有丰富的模块和广泛的社区支持。Nginx以其高性能和低内存占用著称,尤其适合高并发场景。LightTPD则是一款轻量级...

    在安卓中创建 lighttpd+mysql+php的服务器-almp7.zip

    在安卓中创建 lighttpd+mysql+php的服务器_almp7.zip

    phpLight 2013 网上首套LightTPD+PHP集成包

    phpLight 2013 是网上首套LightTPD+PHP集成包, 集成最新Lighttpd+PHP+MySQL+SQL-Front+Zend Guard Loader+XCache。 纯绿色,安装后无需再配置。支持系统服务和非服务两种启动方式,自由切换。 一次性安装无需再安装...

    lighttpd+php in android

    以下是对"lighttpd+php in android"这个主题的详细说明。 **Lighttpd** Lighttpd是一款开源、快速、低内存占用的HTTP服务器,特别适合资源有限的设备,如Android手机或平板电脑。它的设计目标是提供高效的服务,...

    Openwrt里架设Lighttpd+PhP5+MYSQL环境标准教程.pdf

    "Openwrt里架设Lighttpd+PhP5+MYSQL环境标准教程" 本教程旨在指导读者在Openwrt系统中架设Lighttpd+PhP5+MYSQL环境,实现Web服务器搭建。以下是相关知识点的详细解释: 一、硬件准备 * 路由器:需要一台路由器,...

    phpStudy 最新 Apache+Nginx+LightTPD+PHP+MySQL+phpMyAdmin+Zend 稳定 强大

    该程序包集成最新的Apache+Nginx+LightTPD+PHP+MySQL+phpMyAdmin+Zend Optimizer+Zend Loader,一次性安装,无须配置即可使用,是非常方便、好用的PHP调试环境。该程序绿色小巧简易迷你仅有35M,有专门的控制面板。...

    fcgi-2.4.1-SNAP-0910052249.tar.bz2

    我是用lighttpd+nginx+spawn-fcgi+fcgi-2.4.1搭建环境。使用C语言编写后台程序。goahead也可以用。apt install lighttpdapt install nginxapt install spawn-fcgitar -xjvf fcgi-2.4.1-SNAP-0910052249.tar.bz2cd ...

    veket5.3 搭建web平台建站 lighttpd + php + mysql for veket 一键安装包

    "/etc/init.d/lighttpd start" 启动lighttpd 直接访问 127.0.0.1 访问WEB 同时会在使用工具生成两个菜单,一个查看 phpinfo, 一个查看 lighttpd状态, 网站根目录在/var/www/ 下,php.ini 在 /etc/目录下, lighttpd....

    Linux系统平台上安装和配置Ruby on Rails

    现在,你的Rails应用已经可以在Linux上通过lighttpd+FCGI运行。不过,生产环境中通常会使用更强大的Web服务器如Nginx或Apache,并结合 Passenger 或 Puma 进行部署,以提供更高的性能和稳定性。记得根据实际需求调整...

    用于ROR应用的lighttpd配置模板

    总的来说,这个配置模板是一个快速部署Rails应用到lighttpd服务器的有效工具,减少了手动配置的工作量,使得开发者可以更专注于应用本身的功能开发,而不是基础架构的搭建。对于初学者和有经验的开发者来说,都是一...

    ubuntu lighttpd+webpy (fastcgi)配置方法

    需要注意的是,每次修改Python脚本后,都需要重启Lighttpd服务以应用更改。此外,可以在`10-fastcgi.conf`中配置多个FastCGI服务器,但每个服务器的套接字地址必须是唯一的。 有关更多Lighttpd和FastCGI的详细信息...

    最新lighttpd源码 lighttpd-1.4.22

    Lighttpd是一个德国人领导的开源软件,其根本的目的是提供一个专门针对高性能网站,安全、快速、兼容性好并且灵活的web server环境。具有非常低的内存开销,cpu占用率低,效能好,以及丰富的模块等特点。lighttpd是...

    varnish+lighttpd配置

    而Lighttpd则是一款轻量级、快速且高效的Web服务器,适合小型到中型的网站部署。下面我们将详细探讨如何配置Varnish与Lighttpd协同工作。 **一、Varnish简介** Varnish是一款HTTP加速器,它的主要功能是缓存静态...

    Ruby on Rails安装包全集(Linux)

    这里的是FastCGI的源代码包,它允许Ruby on Rails应用通过FastCGI协议与Lighttpd交互。 5. **ruby-zlib-0.6.0.tar.gz**: Zlib是用于数据压缩的库,Ruby的内置标准库中包含了对Zlib的支持。此包可能用于Ruby与Gzip等...

    lighttpd 安装配置

    pcre(Perl Compatible Regular Expressions)库提供了与Perl相容的正则表达式功能,这对于Lighttpd来说非常重要,尤其是在进行复杂配置如虚拟主机管理和Rails应用支持时。虽然Lighttpd在没有pcre的情况下也能运行,...

Global site tag (gtag.js) - Google Analytics