SCGI Ruby on Rails

Jak už jsem psal, používám k běhu Ruby on Rails vynikající implementaci SCGI. Množí se dotazy (od lidí, kteří neumějí anglicky), jak celou tu věc rozběhnout, takže jsem se rozhodl popsat celý (velmi jednoduchý proces v češtině).

Před čtením tohoto článku vřele doporučuji nastudovat homepage SCGI Rails Runner. Pokud umíte alespoň trochu anglicky, určitě Vám bude k užitku.

Celá věc je tak jednoduchá, že je to až k smíchu. Pokud jste nainstalovali správně Ruby on Rails (což je také směšně jednoduché), stačí spustit:

gem install scgi_rails-0.4.3.gem --source \
http://www.zedshaw.com/downloads/scgi_rails/scgi_rails-0.4.3.gem

Řekněme, že máte svůj Rails projekt v adresáři /var/www/html/Megaprojekt. V tomto adresáři pustíte:

scgi_ctrl config

Na výzvu What password do you want? si zvolíte heslo pro obsluhu SCGI Rails Runner. Pokud Vám někdo kouká přes rameno, hoďte na něj deku, protože heslo se vypisuje na terminál (chcete-li tomu zabránit, můžete pustit třeba read -s a ; echo $a | scgi_ctrl config; unset a).

V podadresáři config Vašeho megaprojektu vznikne soubor scgi.yaml s tímto (nebo velmi podobným obsahem):

:env: production
:config: config/scgi.yaml
:control_url: druby://127.0.0.1:8999
:host: 127.0.0.1
:password: MicdgamgymxKs
:port: 9999
:logfile: log/scgi.log

Pozorný čtenář odvodí, že port je číslo portu, na kterém bude poslouchat SCGI Rails Runner. Nastavte si ho jak chcete, zbytek souboru je pro začátek lepší neměnit. Pokud jste ve fázi ladění, změníte zřejmě env místo production na development.

Další věc, kterou musíte udělat je konfigurace webserveru (pro jednoduchost předpokládejme Apache 2). Stáhněte si modul mod_scgi a  nainstalujte ho (make install snad zvládnete bez nápovědy).

Máte už konečně nainstalovaný modul? To je sice bezva, ale tím zábava nekončí.

Pokud je Váš projekt například na adrese www.example.com, tak budete potřebovat nakonfigurovat VirtualHost pro tuto adresu. Očekávám, že to zvládnete nebo už jste to dávno udělali, jen ještě nevíte, jak tam pověsit Vaši skvělou aplikaci (zkuste raději napsat něco užitečnějšího než blog nebo guestbook). Konfigurace (obvykle třeba v souboru httpd.conf) není nikterak složitá:

LoadModule      scgi_module     modules/mod_scgi.so

<VirtualHost *:80>
    ServerName          www.example.com
    DocumentRoot        /var/www/html/Megaprojekt/public
    SCGIMount           /       127.0.0.1:9999

    <LocationMatch "/(stylesheets|images|javascripts)">
      SCGIHandler               off
    
    </LocationMatch>
</VirtualHost>

Jak znám pozorného čtenáře, je mu jasné, že toto je skutečně jen minimální konfigurace. Říkáme serveru, že na adrese www.example.com bude virtuální server, statické stránky najde v adresáři /var/www/html/Megaprojekt/public a všechno co není v adresářích stylesheets, imagesjavascripts (v DocumentRoot) bude obsluhovat SCGI Rails Runner.

A to je skoro všechno. Zbývá Vám reloadnout webserver (třeba spuštěním service httpd graceful) a pustit SCGI Rails Runner. To musíte udělat z adresáře Vašeho projektu:

cd /var/www/html/Megaprojekt
scgi_ctrl start

Pokud si stále pamatujete své heslo (zase se vypisuje na obrazovku), máte vyhráno. Pokud chcete SCGI Rails Runner zastavit, bude to opět z adresáře Vašeho projektu příkazem scgi_ctrl stop.

Neříkal jsem, že je to směšně jednoduché?

Napsat komentář

Vaše emailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *

Time limit is exhausted. Please reload CAPTCHA.

Tato stránka používá Akismet k omezení spamu. Podívejte se, jak vaše data z komentářů zpracováváme..