Pogodzenie RoR z Apache

Witam,

Długo, po ponad 4 lata programuję w PHP, teraz skuszony licznymi prezentacjami możliwości RoR chciałem i jego zasmakować.
Problem pojawił się oczywiści już na samym początku - uruchomienie serwera, który obsłuży Railsy.

  1. Czy da się, aby po wpisaniu http://87.99.11x.xx/ wyświetlały się strony z PHP, ale po http://87.99.11x.xx:3000/ railsowy silnik ?
  2. Czy da się, aby http://87.99.11x.xx:3000/apps , http://87.99.11x.xx:3000/apps2 , http://87.99.11x.xx:3000/apps3 działały różne stronki napisane w RoR? Tak jak jest to normalnie w Apache/PHP http://87.99.11x.xx/stronka1 , http://87.99.11x.xx/stronka2
  3. Czy da się, aby serwer obsługujący Rails startował automatycznie przy starcie systemu, i aby nie działał tak jak WEBrick w konsoli?

Pracuję na Linuxie (Ubuntu). Udało mi się z powodzeniem zainstalować RoR, ale działa na WebRick (konsola) i udało mi się aby z pod localhost i localhost:3000 wyświetlał stronki w PHP i RoR. Ale z zewnątrz już to nie działa, a także pkt.2 chciałbym zaliczyć.

Jeśli znacie odpowiedzi na pytania to bardzo chętnie ich wysłucham.

Inna sprawa - dlaczego w necie są co najmniej 3 opracowania różnych sposób instalowania RoR? Przez co robi się na pewno zamieszanie…
wg. najlepsze to: http://rails.aizatto.com/2007/05/06/deploying-ruby-on-rails-on-ubuntu-feisty-fawn-via-mongrel-and-apache/

  1. Tak, da się
  2. Chyba się da. Ale jeśli ma to działać na różnych aplikacjach to musisz mieć jakieś proxy tam chyba. Ja mam w ten sposób (co prawda zamiast Apache mam Lighttpd): na lighttpd jest mod_proxy które rozsyła żądania do odpowiednich aplikacji. Aplikacje działają na Mongrelu (mongrelach?) uruchomionych np. na portach 8001. Np. app1.seban.com pierwsza aplikacja, app2.seban.com druga. Próbowałem kiedyś robić tak jak Ty chcesz mieć, ale nic z tego nie wyszło.
  3. Tak, da się. Musisz tylko dodać go do skryptów startowych. W /etc/init.d jest plik skeleton, który służy za szablon do tworzenia plików startowych. W pliku musisz tyko wpisać odpowiednią komendę i uruchomić potem narzędzie update-rc.d.

Jest tylko opracować bo jest wiele sposobów. Dla PHP wszystko jest oblatane, Apache, PHP i prawie zawsze działa. Mało kto próbuje innego serwera.

Mało kto próbuje innych serwerów, bo z Apache podczas PHP się wszyscy ‘zżywają’ (zżyją?), a druga sprawa - po co intalować dodatkowe oprogramowanie, jak się da wykorzystać obecne.

Ogólnie zauważyłem, że dość sporo osób tutaj używa Mongrel + Lightpd…

Witam

Spróbuj tak:

W pliku httpd.conf dopisz:

Listen 3000

<VirtualHost *:3000>
ServerName rails
DocumentRoot “c:/Documents and Settings/mario/workspace”
<Directory “c:/Documents and Settings/mario/workspace/”>
Options Indexes FollowSymLinks ExecCGI MultiViews
AllowOverride all
Allow from all
Order allow,deny
AddHandler cgi-script .cgi
AddHandler fastcgi-script .fcgi
RewriteEngine On
RewriteRule ^([^-]+)/$ /$1/public/ [R=301,L]

Oczywiście DocumentRoot i Directory zmienić na własną ścieżkę i odznaczyć:

#LoadModule rewrite_module modules/mod_rewrite.so

Można też użyć fastcgi, ale w moim przypadku to niedziała (nie wykrywa biblioteki, chociaż jak jest wgrana do modułów).

LoadModule fcgi_module modules/mod_fcgi.so

Po wyłączeniu i włączeniu Apache’a powinno śmigać.

Nie, jesli sie uzywa Railsow i istnieja takie bajery jak lighttpd i nginx… :wink: Male porownanie.