Re: Can't get mod_ruby to work

Ron Aitchison <[email protected]> Fri, 16 Nov 2007 17:34:37 -0500
Newsgroups gmane.comp.apache.mod-ruby
Message-ID <[email protected]>
I'm assuming you have read this:
http://wiki.rubyonrails.org/rails/pages/mod_ruby
which may or may not be the cause of your problem.
Regards
Taylor Redden wrote:
> Hi Arnold,
>
> I am currently running a few websites on my server at home using apache.
> One site is in php, two others are in ruby using mod_ruby, not rails though,
> so i'm not sure how much of a help I could be. When looking at my config
> file in apache one thing that popped out was you have no .rhtml handler.
> Also, my .rhtml handler uses eruby. Do you have eruby installed?
>
> Please write back to me, I would love to help you with this problem,
> because I love the Ruby language, and anything to help spread its
> grace I'm down for.
>
> Taylor Redden
> taylorredden.com
>
> PS I do have one rails program up and running, but  apache
> proxies the request to another box that I run the basic web-brick server.
>
> On Nov 15, 2007 2:41 PM, Arnold Daniels <[email protected]> wrote:
>   
>> Hi David,
>>
>> Thanks for you answer. We use pre-fork, so it doesn't matter if Rails
>> isn't thread-safe because each connection will be handled by a different
>> process. We also run PHP as Apache module, which also isn't thread-safe.
>> If I'm missing the point please tell me why.
>>
>> A bit more background information. We run linux a custom kernel patch,
>> which allows switching a specific user (www-data) to switch to another
>> user (>2000) within a process. It also allows switching back, but only
>> by the main process and not child processes. This works great as long a
>> the user can not make custom system calls within the Apache process.
>> That is why we cannot support fcgi. I'm aware that this is not 100%, but
>> it is safe enough. Hack attempts (using buffer overflows) will most
>> likely cause segmentation faults and we have a daemon monitoring that
>> (never happened by the way). For the record, this hack can never make
>> you root, at best you can read/change files of a customer (which would
>> already be pretty bad).
>>
>> However, the current problem doesn't have anything to do with Rails. As
>> soon as I add 'RubyRequire apache/ruby-run' to my Apache config, the
>> server will stop handling any requests. It will still accept
>> connections, but does not more than that. Has anyone seen this behaviour
>> before, or can anyone who know the internals tell me what this might be
>> causing. I you need more information, a strace for example (I didn't see
>> anything in the strace), please tell me.
>>
>> Best regards,
>> Arnold Daniels
>>
>>
>>
>>
>> David Heinemeier Hansson wrote:
>>     
>>> Hi Arnold,
>>>
>>> Rails won't work by default in a mod_ruby environment where multiple
>>> applications are sharing the same setup. mod_ruby shares the Ruby
>>> instance across all the applications and Rails use essentially global
>>> variables that are not compatible with having that information shared
>>> across multiple applications.
>>>
>>> I don't know of any other hosts that takes Rails hosting serious that
>>> are using mod_ruby. Everyone else are using either FastCGI or Mongrel.
>>> Given your constraints, I don't think running Rails is going to be
>>> something you can offer.
>>>
>>> I do know that some experimental support for running Rails under
>>> mod_ruby was done a few years back, but I don't think it solved the
>>> fundamental issue of having a shared Ruby instance, which is not safe.
>>>
>>>       
>>>> To give you a bit of background. I'm setting up a test project to see
>>>> if we can support Ruby on Rails for our hosting company. I need a
>>>> solution which fits in a 100% automated set-up. Tomcat does not and I
>>>> don't know mongrel, but I doubt if it does. Also in our setup the
>>>> Apache process switches to the user, for security purposes, so
>>>> running another daemon is not an option. Supporting fastcgi is also
>>>> not an option for security issues and running it as normal cgi is a
>>>> performance killer. In short I want to run it using mod_ruby. I'm not
>>>> sure how I gave the impression that using mod_ruby or supporting
>>>> Rails was optional, but it's not. Otherwise I would not have posted
>>>> in on the mod_ruby mailing list.
>>>>
>>>> I assume that mod_ruby is working for other people and I'm doing
>>>> something wrong. I would like to hear from people who do have it
>>>> working, because I can't get it to work at all. I don't see any
>>>> errors. Where should I look to find what is wrong or is this a known
>>>> issue?
>>>>
>>>> So please, anybody who doesn't like Ruby, Ruby on Rails, mod_ruby or
>>>> Apache, I am not interested in your opinion.
>>>>
>>>> Best regards,
>>>> Arnold Daniels
>>>>
>>>> ---------------------
>>>>
>>>> Trying 127.0.0.1...
>>>> Connected to localhost.
>>>> Escape character is '^]'.
>>>> GET http://www.w3.org/pub/WWW/TheProject.html HTTP/1.1
>>>>
>>>> (No response on this)
>>>>
>>>> --------------------
>>>>
>>>> arnold@arnold-laptop:/etc/apache2$ sudo apache2 -M
>>>> Loaded Modules:
>>>> core_module (static)
>>>> log_config_module (static)
>>>> logio_module (static)
>>>> mpm_itk_module (static)
>>>> http_module (static)
>>>> so_module (static)
>>>> alias_module (shared)
>>>> auth_basic_module (shared)
>>>> authn_file_module (shared)
>>>> authz_default_module (shared)
>>>> authz_groupfile_module (shared)
>>>> authz_host_module (shared)
>>>> authz_user_module (shared)
>>>> autoindex_module (shared)
>>>> cgi_module (shared)
>>>> cgid_module (shared)
>>>> dir_module (shared)
>>>> env_module (shared)
>>>> evasive20_module (shared)
>>>> info_module (shared)
>>>> macro_module (shared)
>>>> mime_module (shared)
>>>> negotiation_module (shared)
>>>> php5_module (shared)
>>>> proxy_module (shared)
>>>> proxy_http_module (shared)
>>>> rewrite_module (shared)
>>>> ruby_module (shared)
>>>> setenvif_module (shared)
>>>> status_module (shared)
>>>> userdir_module (shared)
>>>> xsendfile_module (shared)
>>>>
>>>>
>>>> David Heinemeier Hansson wrote:
>>>>         
>>>>> Please. Before you throw your arms up in despair and forsake all
>>>>> that is good, have a look at what's been a best-practice deployment
>>>>> scenario for a long time now: Web server -> proxy -> mongrels.
>>>>>
>>>>> If you like Apache, you can for example use mod_proxy_balancer (see
>>>>> http://blog.innerewut.de/2006/04/21/scaling-rails-with-apache-2-2-mod_proxy_balancer-and-mongrel for
>>>>> detailed instructions). Or you could use HAProxy (see
>>>>> http://rubyworks.rubyforge.org/installation/installation-continued.html for
>>>>> more). There are tons of options out there and thousands of sites
>>>>> putting them to good use in production.
>>>>>
>>>>> Abandoning Rails because you haven't looked into deployment
>>>>> scenarios is like scrapping your car in favor of a horse because you
>>>>> can't figure out how to open the trunk. An overreaction.
>>>>>
>>>>>           
>>>>>> Hello,
>>>>>>
>>>>>> I can't help you, but I've pass through for almost the same
>>>>>> configuration problems.
>>>>>> I like very much the way things work in Ruby on Rails but when we need
>>>>>> to deploy to production in Apache the problems arise.
>>>>>> Why don't you take a look in grails that works like ruby and is very
>>>>>> simple to deploy to Apache Tomcat?
>>>>>> Here is the link -> http://grails.codehaus.org/
>>>>>>
>>>>>> Manuel
>>>>>>
>>>>>> On Nov 15, 2007 3:10 PM, Arnold Daniels <[email protected]> wrote:
>>>>>>             
>>>>>>> Hi all,
>>>>>>>
>>>>>>> I'm trying to use mod_ruby to serve a Ruby On Rails application. The
>>>>>>> applications currently works with dispatch.cgi. I'm running Ubuntu
>>>>>>> Gutsy
>>>>>>> and installed ruby, mod_ruby and rails using apt-get. This package
>>>>>>> only
>>>>>>> comes with a ruby.load configuration file, which loads mod_ruby, but
>>>>>>> does nothing more. I've created a ruby.conf file, based on the
>>>>>>> information on the site. However as soon as I add 'RubyRequire
>>>>>>> apache/ruby-run', the server stops responding. It accepts the
>>>>>>> connection, but never handles the request. This is not only for ruby
>>>>>>> scripts, but for all requests, even for static content. I do not
>>>>>>> get any
>>>>>>> report in the error log.
>>>>>>>
>>>>>>> Does this make sense to someone? I can't retrieve info, so I'm stuck.
>>>>>>>
>>>>>>> Any help would be highly appreciated.
>>>>>>>
>>>>>>> Best regards,
>>>>>>> Arnold Daniels
>>>>>>>
>>>>>>> -------------------
>>>>>>>
>>>>>>> root@arnold-laptop:/var/log/apache2# apache2 -v
>>>>>>> Server version: Apache/2.2.4 (Ubuntu)
>>>>>>> Server built:   Oct  7 2007 22:17:24
>>>>>>>
>>>>>>>
>>>>>>> root@arnold-laptop:/etc/apache2/mods-enabled# cat ruby.load
>>>>>>> LoadModule ruby_module /usr/lib/apache2/modules/mod_ruby.so
>>>>>>> root@arnold-laptop:/etc/apache2/mods-enabled# cat ruby.conf
>>>>>>> <IfModule mod_ruby.c>
>>>>>>> RubyRequire apache/ruby-run
>>>>>>>
>>>>>>> # Execute files under /ruby as Ruby scripts
>>>>>>> #  <Location /ruby>
>>>>>>> #  SetHandler ruby-object
>>>>>>> #  RubyHandler Apache::RubyRun.instance
>>>>>>> #  </Location>
>>>>>>>
>>>>>>> # Execute *.rb files as Ruby scripts
>>>>>>> <Files *.rb>
>>>>>>> SetHandler ruby-object
>>>>>>> RubyHandler Apache::RubyRun.instance
>>>>>>> </Files>
>>>>>>> </IfModule>
>>>>>>>
>>>>>>>
>>>>>>>               
>>>>> --
>>>>> David Heinemeier Hansson
>>>>>
>>>>>
>>>>>           
>>> --
>>> David Heinemeier Hansson
>>>
>>>
>>>       
>>     
>
>
>   

-- 
Ron Aitchison               http://www.zytrax.com
ZyTrax                      mailto:[email protected]
                             6201 ch Cote St. Luc Suite 22
                             Hampstead Quebec H3X 2H2
Author                       Tel:(514) 315-4296 	
"Pro DNS and BIND"	    (www.netwidget.net/books/apress/dns)
ISBN 1-59059-494-0 Published by Apress (www.apress.com)