I have a server running an apache2. I've decided to play around with ruby
on rails, so I wanted to install rails with apache2. My first idea was to
use fastcgi (mod_fastcgi), but this didn't work at all.
So I tried to get scgi_rails working:
Is it right, that scgi_rails is a server managing all the requests written
in ruby? the mod_scgi for apache is only for forwarding the requests of a
virtualhost to the internal port of scgi_rails? I don't understand how
scgi_rails could have enough performance to manage all the requests on a
often visited webpage. Apache is written in C, so I thought that managing
the requests in apache and using mod_fastcgi should be faster. Can you
explain why scgi_rails is fast enough and if I have understood it right,
that mod_scgi is only for forwarding the requests?
Well, now I've tried to install scgi_rails. And it is nearly working
correct. But I have still a few problems, maybe you can help me:
I've used this tutorial:
http://wiki.rubyonrails.com/rails/pages/SCGI+Rails+Runner+with+Apache+2+on+Linux
This is my virtualHost:
<VirtualHost myIP:80>
AddDefaultCharset utf-8
ServerName myDomain
DocumentRoot /srv/www/htdocs/myRailsDir/public
ErrorDocument 500 /500.html
ErrorDocument 404 /404.html
# handle all requests throug SCGI
SCGIMount /scgi-bin/ 127.0.0.1:9999
<Directory /srv/www/htdocs/myRailsDir/public>
Options Indexes FollowSymLinks
AllowOverride All
</Directory>
</VirtualHost>
Can you tell me, what /scgi-bin/ is for?
I changed my .htaccess and changed the dispatch.fcgi line to:
RewriteRule ^(.*)$ /scgi-bin/$1 [QSA,L]
Now, when calling e.g. the method "hello" of my controller "say" I get
this message:
Unknown action
No action responded to hello.html
When deleting this line from the .htaccess:
RewriteRule ^([^.]+)$ $1.html [QSA]
it is working.
Do you know, where the problem is?
And: I always have to start scgi_rails manually. Is this the right way? Or
is there a chance to get apache starting the scgi_rails when it is needed?
Greetings
Mike
Hmm. I've not seen that. I got scgi running using the HOWTO on Zed's
site. And it seemed pretty darn simple to do (thanks, Zed!)
http://www.zedshaw.com/projects/scgi_rails/howto.html
http://www.zedshaw.com/projects/scgi_rails/apache.html
> This is my virtualHost:
>
> <VirtualHost myIP:80>
> AddDefaultCharset utf-8
> ServerName myDomain
> DocumentRoot /srv/www/htdocs/myRailsDir/public
> ErrorDocument 500 /500.html
> ErrorDocument 404 /404.html
> # handle all requests throug SCGI
>
> SCGIMount /scgi-bin/ 127.0.0.1:9999
>
> <Directory /srv/www/htdocs/myRailsDir/public>
> Options Indexes FollowSymLinks
> AllowOverride All
> </Directory>
> </VirtualHost>
>
> Can you tell me, what /scgi-bin/ is for?
I think it is the root of your application.
e.g.
http://127.0.0.1/scgi-bin/somecontroller/someaction
I just used this:
SCGIMount /scgi-bin/ 127.0.0.1:9999
because I use
http://www.mydomain.com/somecontroller/someaction
>
> I changed my .htaccess and changed the dispatch.fcgi line to:
>
> RewriteRule ^(.*)$ /scgi-bin/$1 [QSA,L]
>
> Now, when calling e.g. the method "hello" of my controller "say" I get
> this message:
>
>
> Unknown action
> No action responded to hello.html
>
What is the exact URL you are trying? Does it end in .html?
actions called on controllers typically do not have any file extension
(you can munge that, but Rails by default assumes no extension is used).
James
--
http://www.ruby-doc.org - The Ruby Documentation Site
http://www.rubyxml.com - News, Articles, and Listings for Ruby & XML
http://www.rubystuff.com - The Ruby Store for Ruby Stuff
http://www.jamesbritt.com - Playing with Better Toys
>
> I think it is the root of your application.
> e.g.
> http://127.0.0.1/scgi-bin/somecontroller/someaction
>
> I just used this:
>
> SCGIMount /scgi-bin/ 127.0.0.1:9999
No, sorry; in my current reality I use
SCGIMount / 127.0.0.1:9999
>
> because I use
>
> http://www.mydomain.com/somecontroller/someaction
>
>
James