Pasażer Phusion (dla manekinów!)

Jestem doświadczonym programistą LAMP poruszających się po Railach. Mam bardzo głupie pytanie: co do cholery robi pasażer Phusion?

Przeczytałem dużo dokumentacji, Wygooglowałem, przeczytałem Wikipedię, przeczytałem Stack Overflow. Nawet zainstalowałem go i uruchomiłem na maszynie programistycznej (z Apache). Nadal Nie wiem, co właściwie robi .

Oto jedno przypuszczenie: myślę, że to dziwne, że rdzeń dokumentu Apache wskazuje na /mywebapp/public/ zamiast z /mywebapp/, więc zakładam, że ma to związek z uczynieniem wszystkiego wewnątrz /mywebapp/ dostępnym. (To jednak Dzikie przypuszczenie, oparte na fakcie, że nie wiem, jak inaczej te rzeczy są dostępne.)

Doszedłem do wniosku, że pasażer jest rewolucyjny, przełomowy, itp, itp, Ale co to robi !?

Przepraszam za pytanie n00b. Dzięki!
Author: Luke Girvin, 2011-05-27

2 answers

Passenger jest systemem do przygotowania i uruchamiania instancji Ruby do użycia z aplikacjami bazującymi na racku, takimi jak Ruby on Rails. Apache i nginx, dwie obsługiwane platformy serwerowe, nie mogą uruchamiać Rubiego tak, jak PHP, Perl lub Python, ponieważ nie ma wbudowanego modułu Ruby, który działa tak dobrze, jak te. Oznacza to, że Ruby działa jako niezależna grupa procesów, przez które serwer WWW będzie musiał kierować ruch.

Rails działa jako trwały proces ponieważ czas rozruchu całego stosu jest znaczący. Pasażer uruchamia nowe instancje, gdy są one wymagane, i zabije te, które nie są już potrzebne. Można to zobaczyć na liście procesów, ponieważ są one wyraźnie identyfikowane z przedrostkami "Passenger" i "Rails".

Jedną z cech Passenger jest ponowne użycie części stosu Rails, dzięki czemu tworzenie dodatkowych procesów jest szybsze, klonowanie jednej instancji zamiast tworzenia nowej od zera. The loader is written w C++ i zajmuje się prawidłową konfiguracją i uruchamianiem każdego procesu Ruby tak efektywnie, jak to możliwe, a także pomaga oszczędzać pamięć, dzieląc ją między różne procesy.

Powodem, dla którego hostujesz rzeczy z katalogu public/, jest unikanie ujawniania bazy kodu aplikacji. PHP musi być poprawnie skonfigurowany, aby uniemożliwić ludziom Przeglądanie katalogów i pobieranie źródła, ponieważ nie ma szczególnego rozróżnienia między statyczną zawartością a skryptami wykonywalnymi. A źle skonfigurowany serwer chętnie poda surowy .Pliki php zamiast je uruchamiać, na przykład.

Pasażer nie jest do końca rewolucyjny, ale zawiera wiele istotnych funkcji w bardzo wygodnym pakiecie. To, co sprawia, że jest to tak wspaniała rzecz, to to, że działa bardzo dobrze i nie wymaga wiele uwagi. Po wyjęciu z pudełka jest prawie gotowy do pracy.

 45
Author: tadman,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-05-27 17:03:04

Służy do obsługi aplikacji ruby on rails(właściwie każdej aplikacji rack). Byłem używany z wersją 2.x pasażera, aby zintegrować go bezpośrednio w apache, ale z nową wersją, która obsługuje samodzielne wykonanie, wolę go uruchomić w trybie samodzielnym (w połączeniu z rvm)

Może być bardzo przydatny zarówno w trybie deweloperskim, jak i produkcyjnym i przyspiesza wykonywanie aplikacji RoR.

Aby wdrożyć aplikację RoR instaluję ją z własnym gemsetem a następnie Instaluję passenger w tym gemsecie za pomocą gem install passenger (można też bezpiecznie pominąć gemsety, ale wyizolują środowisko aplikacji, więc miło je mieć). Następnie możesz uruchomić aplikację z passenger start -a 127.0.0.1 -p 3081 -e production w katalogu głównym projektu.

Następnie konfiguruję vhost apache do pracy w trybie odwrotnego proxy z plikiem takim jak ten

<VirtualHost *:80>
        ServerName your.server.org

        ProxyPass /  http://localhost:3081/
        ProxyPassReverse  /  http://localhost:3081/
        ProxyRequests     Off

        # Local reverse proxy authorization override
        # Most unix distribution deny proxy by default (ie /etc/apache2/mods-enabled/proxy.conf in Ubuntu)
        <Proxy http://localhost:3081/*>
                Order deny,allow
                Allow from all
        </Proxy>
</VirtualHost>

I jesteś ok, masz swoją aplikację wdrożoną z jego lokalnym config, to nawet nie potrzebuje uprawnień roota (dla części pasażera).

 6
Author: Fabio,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-05-27 17:04:01