apache fcgi rails

apache fcgi rails
#少了一步安装 fcgi本身的
#将public下面的所有ruby路径改正确
#详细说明如何启用fcgi而不是cgi(改.htpaccess)
#将ruby-fcgi按README安装完全
#启用SYBASE要设置/etc/ld.so.conf加上sybase的lib路径(APACHE以NOBODY启动,LD_LIBRARY_PATH似乎没用)


1,为编译fastcgi,安装httpd-dev包
    rpm -ivh httpd-dev***.rpm    #会要求安装其它依赖包
2,构建mod_fastcgi.so,正常构建会报缺少文件(对fc4自动安装apache而言),会自动加入/usr/lib/httpd/module中,/etc/httpd/conf/httpd.conf也会自动加载(但语法不对)
    apxs -n mod_fastcgi -i -a -c mod_fastcgi.c fcgi_buf.c fcgi_config.c fcgi_pm.c fcgi_protocol.c fcgi_util.c  #在解压后的mod_fast2.4.2包中执行,构建mod_fast.so
    chmod 755 /usr/lib/httpd/modules/mod_fastcgi.so #修改访问权限
3,ruby的fcgi模块正确安装方法
   1,下载ruby-fcgi-0.8.7.tar.gz
   2,ruby install.rb config -- --with-fcgi-include=/usr/local/include --with-fcgi-lib=/usr/local/lib  (指向正确的fcgi安装路径)
   3,其余按readme
4,为apache配置虚拟主机(客户机的host要配合指向)---还要加上一条时间选项
    <Directory /var/www/>
        AllowOverride all
    </Directory>

    LoadModule fastcgi_module modules/mod_fastcgi.so
    FastCgiConfig -singleThreshold 100 -killInterval 300 -autoUpdate -idle-timeout 240  -pass-header HTTP_AUTHORIZATION
    AddHandler fastcgi-script .fcgi

    <VirtualHost *:80>
        ServerAdmin [email protected]
        DocumentRoot /var/www/rails/testapp/public        #testapp即为你rails程序的根目录
        ServerName www.example.com
        ErrorLog /var/log/httpd/testapp-error_log
        CustomLog /var/log/httpd/testapp-access_log common
        Options Indexes ExecCGI FollowSymLinks
        RewriteEngine On
    </VirtualHost>
6,启动apache,看欢迎页面
    apachectl start   #用这种方式可以在控制台查看错误消息(应该会报一条无效的加截so的行190?)
7,根据需要修改rails应用(producation环境,facgi的dispatch,数据库支持)


8,后续修改如下
    chown -R apache.apache ${railsapp}
    mkdir /tmp/fcgi_ipc
    httpd.conf-->FastCgiIpcDir "/tmp/fcgi_ipc/"
    chown -R apache.apache /tmp/fcgi_ipc





错误情况分析:
1,apache的error.log或app的error.log会报:(权限问题)
    [Sun Nov 19 14:05:29 2006] [crit] (13)Permission denied:
    FastCGI: can't create (dynamic) server "/var/www/rails/testapp/public/dispatch.fcgi":
    bind() failed [/etc/httpd/logs/fastcgi/dynamic/3c713fbde3044b67e240a7bf3791f36b]

2,测试dispatch.fcgi的方法ruby -d dispatch.fcgi

3,app下面的fastcgi.crash.log中产生----注意,说方法丢失可能是c的动态库没有找到
   Dispatcher failed to catch: undefined method `is_cgi?' for FCGI:Class (NoMethodError)
   fcgi的问题


你可能感兴趣的:(apache fcgi rails)