<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/css" href="/stylesheets/rss.css"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/">
  <channel>
    <title>Jaros&#322;aw Zabie&#322;&#322;o - BLOG: Passenger mod_rails</title>
    <link>http://blog.zabiello.com/articles/2008/04/19/passenger-mod_rails</link>
    <language>en-us</language>
    <ttl>40</ttl>
    <description>moje notatki, linki, komentarze</description>
    <item>
      <title>Passenger mod_rails</title>
      <description>&lt;p&gt;Cho&#263; sam &lt;a href="http://rubyonrails.pl"&gt;Rails&lt;/a&gt; jest intuicyjny i prosty w u&#380;yciu, to ju&#380; spos&#243;b u&#380;ycia go na serwerze produkcyjnym (gdzie liczy si&#281; g&#322;&#243;wnie szybko&#347;&#263;&#160;i stabilno&#347;&#263;) nie jest takie oczywiste z powodu istnienia wielu, alternatywnych rozwi&#261;za&#324;. Powsta&#322;y niedawno modu&#322; dla Apache &amp;#8211; &lt;a href="http://www.modrails.com"&gt;mod_rails&lt;/a&gt; &amp;#8211; mo&#380;e wszystko zmieni&#263;. Dzi&#281;ki niemu uruchomienie Rails na serwerze staje si&#281;&#160;praktycznie tak samo trywialne jak w przypadku &lt;span class="caps"&gt;PHP&lt;/span&gt; i modu&#322;u mod_php!&lt;/p&gt;


	&lt;p&gt;Musz&#281; przyzna&#263;, &#380;e pocz&#261;tkowo by&#322;em dosy&#263; sceptycznie nastawiony do pomys&#322;u mod_rails. Przede wszystkim, dziwnym wydawa&#322;o si&#281; tworzy&#263; modu&#322; do Apache&amp;#8217;a dla frameworka, czyli w sumie aplikacji, a nie dla samego j&#281;zyka Ruby. Niestety, istniej&#261;cy od jakiego&#347; czasu mod_ruby by&#322; niedopracowany i krytykowany do tego stopnia &#380;e u&#380;ycie go do Rails jest po prostu niezalecane. Dlatego od samego pocz&#261;tku, gdy pojawi&#322; si&#281; Rails, promowano inne rozwi&#261;zanie (oparte na FastCGI). Pierwsze wydanie &amp;#8220;Agile Web Development with Rails&amp;#8221; jeszcze to promowa&#322;o. W drugim wydaniu (wydanym r&#243;wnie&#380; &lt;a href="http://helion.pl/ksiazki/agilep.htm"&gt;po polsku&lt;/a&gt;) autorzy przyznali &#380;e to rozwi&#261;zanie nie by&#322;o wolne od szerego problem&#243;w. Na szcz&#281;&#347;cie pojawi&#322; si&#281; Mongrel i bardzo szybko kombinacja szybkiego serwera &lt;span class="caps"&gt;HTTP&lt;/span&gt; z przodu + load balancing do klastera z mongreli sta&#322;a si&#281; g&#322;&#243;wn&#261; metod&#261; u&#380;ywania Rails na serwerze produkcyjnym. I cho&#263; p&#243;&#378;niej pojawi&#322;y si&#281; jeszcze rozwi&#261;zania asynchroniczne (Swiftiply i evented_mongrel, Thin, Ebb), to  zasadniczo niewiele wnosi&#322;y do rozwi&#261;zania standardowego poza troch&#281;&#160;wi&#281;ksz&#261; szybko&#347;ci&#261; i innym (w&#322;a&#347;nie asynchronicznym) typem pracy.&lt;/p&gt;


	&lt;p&gt;Do tej pory sympatycy Ruby on Rails troch&#281; sm&#281;tnie pogl&#261;dali na prostot&#281; uruchamiania aplikacji &amp;#8220;tego paskudnego pehapa&amp;#8221; za pomoc&#261; modu&#322;u mod_php. To dzi&#281;ki niemu &lt;span class="caps"&gt;PHP&lt;/span&gt; zdoby&#322; swoj&#261; popularno&#347;&#263;. Stworzenie prostej strony webowej sta&#322;o si&#281; banalnie proste i nie wymaga&#322;o dodatkowej wiedzy o load balancingu, ustawianiu buforowania, sposobie restartu klastera mongreli itp. Po prostu wrzucam plik i dzia&#322;a. Nawet sam &lt;span class="caps"&gt;DHH&lt;/span&gt; &lt;a href="http://www.loudthinking.com/posts/23-the-immediacy-of-php"&gt;zacz&#261;&#322; ostatnio wzdycha&#263;&lt;/a&gt; za tak&#261; prostot&#261; uruchamiania aplikacji.&lt;/p&gt;


	&lt;p&gt;Stworzony mod_rails ma ambicj&#281; aby uruchomienie Rails&#243;w by&#322;o tak proste jak to tylko mo&#380;liwe. Z tego co mog&#322;em sprawdzi&#263;, faktycznie dzia&#322;a to &#347;wietnie. Praktycznie nie jest wymagana &#380;adna konfiguracja. Wystarczy raz ustawi&#263; Apache&amp;#8217;a i mo&#380;na skupi&#263; si&#281; na budowaniu aplikacji. Domy&#347;lnie mod_rails uruchamia Rails w trybie produkcyjnym wi&#281;c zmiana kodu wymaga prze&#322;adowanie aplikacji. Jednak&#380;e ca&#322;a taka operacja sprowadza si&#281; do stworzenia pustego pliku &lt;code&gt;restart.txt&lt;/code&gt; w podkatalogu tmp. Gdy Apache znajdzie taki plik, b&#322;yskawicznie prze&#322;adowuje pliki Rubiego i usuwa plik. Nie trzeba te&#380; zastanawia&#263; si&#281; jak wyklucz&#261;&#263;&#160;przetwarzanie plik&#243;w statycznych i tworzonych przez mechanizm cache w RoR, mod_rails robi to automatycznie. Do tego zapewniona jest tak&#380;e &#322;adna obs&#322;uga b&#322;&#281;d&#243;w. Po prostu wygl&#261;da to rewelacyjnie.&lt;/p&gt;


	&lt;p&gt;Jak z wydajno&#347;ci&#261;? Jest ca&#322;kiem nie&#378;le. Autorzy twierdz&#261;, &#380;e mod_rails jest troch&#281; szybszy od thin&amp;#8217;a. Mnie wysz&#322;o troch&#281; odwrotnie, ale te&#380; nie robi&#322;em zbyt drobiazgowych por&#243;wna&#324;. Nawet je&#347;li klaster serwer&#243;w thin czy ebb pracuje troch&#281; wydajniej, to pokusa prostoty i wygody u&#380;ycia mod_rails jest trudna do odparcia. Szkoda tylko, &#380;e mod_rails, jak sama nazwa wskazuje, pracuje tylko z Ruby on Rails. Dobrze by by&#322;o, &#380;eby p&#243;&#378;niej powsta&#322;a podobna obs&#322;uga dla &lt;a href="http://merbivore.com/"&gt;Merb&amp;#8217;a&lt;/a&gt; (Cho&#263; Rails si&#281; tak&#380;e rozwija, Merb wci&#261;&#380; go mocno wyprzedza wydajno&#347;ciowo. Tak z prostych test&#243;w mi wysz&#322;o, &#380;e potrafi by&#263; szybszy nawet 2-3 razy). Nie mo&#380;na jednak autorom mod_rails mie&#263; przecie&#380; za z&#322;e, &#380;e po&#347;wi&#281;cili si&#281; najpopularniejszemu frameworkowi.&lt;/p&gt;


	&lt;p&gt;Passenger mod_rails to nie ostatnie s&#322;owo w sprawie deployingu Rails&#243;w. Podobn&#261; prostot&#261; charakteryzuje si&#281; JRuby on Rails, ale o tym nast&#281;pnym razem.&lt;/p&gt;</description>
      <pubDate>Sat, 19 Apr 2008 05:31:00 +0200</pubDate>
      <guid isPermaLink="false">urn:uuid:9896a167-4e71-4fe5-863a-aa17527bc110</guid>
      <author>Jaros&#322;aw Zabie&#322;&#322;o</author>
      <link>http://blog.zabiello.com/articles/2008/04/19/passenger-mod_rails</link>
      <category>mod_rails</category>
      <category>ruby</category>
      <category>rails</category>
      <category>apache</category>
    </item>
    <item>
      <title>"Passenger mod_rails" by Aleisterc</title>
      <description>&lt;p&gt;Ciekawe czy to poprawi sytuacje na rynku hostingu dla RoR&amp;#8230;?&lt;/p&gt;</description>
      <pubDate>Mon, 21 Apr 2008 17:16:49 +0200</pubDate>
      <guid isPermaLink="false">urn:uuid:383b29db-b42e-473d-b953-a5a2fbb0d6c9</guid>
      <link>http://blog.zabiello.com/articles/2008/04/19/passenger-mod_rails#comment-1584</link>
    </item>
    <item>
      <title>"Passenger mod_rails" by Jan Koprowski</title>
      <description>&lt;p&gt;Bardzo chcia&#322;bym zobaczy&#263; co&#347; takiego w mod_php i mod_python oraz mod_ruby i innych. Swoj&#261; drog&#261; &amp;#8230; na dzie&#324; dzisiejszy jedyne rozwi&#261;zanie to spawn-fcgi albo fastcgi + execwrap ale na serwery gdzie jest 7000 user&#243;w nie nadaj&#261; si&#281; poniewa&#380; jeden spawn procesu PHP zajmuje ju&#380; 25 MB o django na flup (ok 50MB) nie wspomn&#281; &amp;#8211; serwer po prostu by si&#281; zar&#380;n&#261;&#322;.&lt;/p&gt;</description>
      <pubDate>Mon, 21 Apr 2008 07:32:28 +0200</pubDate>
      <guid isPermaLink="false">urn:uuid:d97a9635-74f9-42be-ad30-75ffd267b35a</guid>
      <link>http://blog.zabiello.com/articles/2008/04/19/passenger-mod_rails#comment-1583</link>
    </item>
    <item>
      <title>"Passenger mod_rails" by Pawel Rutkowski</title>
      <description>&lt;p&gt;hmmmm :) brzmi ciekawie i zachecajaco :) Bede musial sie chyba tym pobawic. Ale uzywanie mod_rails wydaje mi sie troche malo geekowe ;)&lt;/p&gt;</description>
      <pubDate>Sun, 20 Apr 2008 20:46:15 +0200</pubDate>
      <guid isPermaLink="false">urn:uuid:ee265db5-a022-4bd4-8fec-134c39e82c95</guid>
      <link>http://blog.zabiello.com/articles/2008/04/19/passenger-mod_rails#comment-1580</link>
    </item>
    <item>
      <title>"Passenger mod_rails" by Jaros&#322;aw Zabie&#322;&#322;o</title>
      <description>&lt;p&gt;W&#322;a&#347;nie sprawdzi&#322;em. Dzia&#322;a doskonale. mod_rails rozpoznaje w&#322;a&#347;ciciela plik&#243;w i uruchamia RoR w aspekcie tego usera. Je&#347;li user nie istnieje w systemie albo jest nim root, to wtedy jest aplikacja RoR jest odpalana w aspekcie usera domy&#347;lnego, kt&#243;rego mo&#380;na ustawi&#263; (je&#347;li nie, to b&#281;dzie to user nobody). mod_rails nigdy nie uruchomi aplikacji RoR w aspekcie roota je&#347;li o to chodzi.&lt;/p&gt;</description>
      <pubDate>Sat, 19 Apr 2008 21:10:01 +0200</pubDate>
      <guid isPermaLink="false">urn:uuid:c730aea6-1095-4f33-8ccd-14c9978b1a61</guid>
      <link>http://blog.zabiello.com/articles/2008/04/19/passenger-mod_rails#comment-1576</link>
    </item>
    <item>
      <title>"Passenger mod_rails" by Pawel Rutkowski</title>
      <description>&lt;p&gt;A jak wyglada kwestia uprawnien ? Niby pisza ze jest &amp;#8220;user switching&amp;#8221; i aplikacja wykona sie z uprawnieniami ownera config/enviroment.rb ale za to apache musi byc odpalony jako root (domyslam sie ze chodzi o to zeby nie zrzucal uprawnien (sic!)). Testowales ten aspekt ?&lt;/p&gt;</description>
      <pubDate>Sat, 19 Apr 2008 09:52:47 +0200</pubDate>
      <guid isPermaLink="false">urn:uuid:f7a26e56-818c-4437-9a24-6d06b6fddc8d</guid>
      <link>http://blog.zabiello.com/articles/2008/04/19/passenger-mod_rails#comment-1575</link>
    </item>
  </channel>
</rss>
