2009-11-13 22 views
14

Wkrótce mam zamiar wdrożenia mojego pierwszego Ruby on Rails aplikacji w środowisku produkcyjnym, a ja nawet pobrane witryną ze wszystkimi serwera zarządzanego i Capistrano dobroci you” d oczekiwać od dostawcy RoR.Zalecenia (i różnice) między poszczególnymi Ruby on Rails produkcyjne Web Servers

Dostawca zezwala na serwery internetowe Mongrel, Thin, Passenger & FastCGI, co wydaje się bardzo elastyczne, ale szczerze mówiąc, nie znam różnic między nimi. Rozejrzałem się po nich, ale wszystko zaczyna się bardzo szybko, gdy zaczynają mówić o funkcjach i maksymalnych jednoczesnych żądaniach - i że dane te wydają się różnić w zależności od tego, kto je publikuje.

Spojrzałem na Pasażera (na powierzchni) - co wydaje mi się bardzo atrakcyjne - ale odniosłem wrażenie, że Pasażer nie jest rzeczywistym serwerem internetowym, a zamiast tego było bardziej jak warstwa na szczycie Apache lub nginx i zarządzane instancje odradzane aplikacji (np. klaster kundla).

Czy ktokolwiek może ustawić mnie z różnicami w laika warunki, tak jak mogę wybrać mądrze (ponieważ każdy, kto widział Indiana Jones i ostatnia krucjata wie, co się stanie, jeśli wybiorą słabo).

+1

Ten link może być pomocny: http://tenmiles.com/blog/2010/08/apache-passenger-and-other-server-alternatives-rails/ –

Odpowiedz

33

Krótka odpowiedź

Go z Apache/Nginx + Pasażera. Pasażer is fast, niezawodny, łatwy do skonfigurowania i wdrożenia. Pasażer został adoptowany przez dużą liczbę dużych aplikacji Railsowych, w tym Shopify.

alt text http://www.modrails.com/images/passenger_mongrel_thin_benchmark.png

Długa odpowiedź

Zapomnij o CGI i FastCGI. Na początku nie było innych alternatyw, więc jedynym sposobem na uruchomienie Railsów był CGI lub szybsza przeglądarka FastCGI. W dzisiejszych czasach prawie nikt nie uruchamia Railsów pod CGI. Najnowsze wersje Railsów już nie obsługują biegaczy .cgi i .fcgi.

Burek był w dużej mierze przyjęte rozwiązanie, najlepszy zamiennik dla CGI i fcgi. Wiele stron nadal używa klastra Mongrel and Mongrel, jednak projekt Mongrel jest prawie martwy, a wiele projektów zostało już przeniesionych do innych rozwiązań (głównie Pasażer). Ponadto, architektura oparta na kundlu jest dość trudna do skonfigurowania, ponieważ potrzebuje proxy frontendu (cienki, ngnix) i architektury zaplecza złożonej z wielu instancji Kundla.

Pasażer został zyskuje powszechną uwagę, ponieważ został zwolniony. Wiele projektów przechodziło z Mongrel na Pasażera z wielu powodów, w tym (ale nie tylko) łatwego wdrażania, łatwości obsługi i wydajności. Ponadto Pasażer jest teraz dostępny zarówno dla Apache, jak i Ngnix.

Najprostszym sposobem wykorzystania pasażera jest konfiguracja pasażera Apache +. Jedna instalacja Apache i wiele procesów Passenger.

Jeśli potrzebujesz lepszej wydajności i skalowalności, możesz użyć Ngnix jako proxy frontend i przekazywać wszystkie żądania Rails do wielu serwerów zaplecza, z których każdy składa się z Apache + Passenger. Nie wchodzę tutaj w szczegóły techniczne, to rozwiązanie jest przeznaczone do wykorzystania przez projekty Rails o wysokim natężeniu ruchu.

jeszcze bardziej skomplikowane rozwiązania obejmują kombinację różnych poziomach, w tym serwerów proxy HTTP i serwery.Możesz mieć pojęcie o tym, o czym mówię, czytając niektóre wewnętrzne szczegóły z GitHub i Heroku.

W tej chwili Pasażer jest najlepszą odpowiedzią dla większości projektów Rails.

+1

Doskonała odpowiedź. –

9

Mongrel and Thin to pojedyncze serwery procesów ruby, które można uruchomić wiele jako klaster za jakimś typem proxy (jak Apache lub Nginx). Serwer proxy będzie zarządzał, które instancje usługi Mongrel lub Thin obsługują żądania.

Pasażer tworzy interfejs między Apache lub Nginx, który tworzy proces odradzania aplikacji, a następnie rozprasza procesy, aby obsłużyć przychodzące żądania w miarę ich wchodzenia. Istnieje wiele opcji konfiguracyjnych, jak długo te procesy są aktywne, ile jest ich może być i jak wiele próśb będzie służyć, zanim umrą. Jest to zdecydowanie najczęstszy sposób na skalowanie i obsługę aplikacji o dużym natężeniu ruchu, ale nie jest to bez wad. Można to zrobić tylko w systemie operacyjnym * nix (Linux, Mac OS X itd.). Te procesy są również uruchamiane na żądanie, więc jeśli nikt nie uzyskuje dostępu do witryny przez jakiś czas, przetwarza dane, a następne żądanie ma opóźnienie w ponownym uruchomieniu. Z Mongrel and Thin proces jest zawsze uruchomiony. Czasami twoje procesy są nowe i świeże mogą być dobre dla użycia pamięci itp.

Jeśli ma być stosunkowo mało odwiedzanym miejscem, Mongrel lub Thin zapewnia prosty i łatwy w zarządzaniu sposób wdrożenia aplikacji . W przypadku witryn o wyższym natężeniu ruchu, gdzie potrzebujesz inteligentnego kolejkowania i zarządzania procesami podobnymi do Pasażera, jest to bardzo dobre rozwiązanie.

Co do fastcgi, prawdopodobnie chcesz użyć tego jako ostatniej opcji.

1

Używam Passenger + nginx. Działa naprawdę, naprawdę dobrze.

1

Aby uzyskać natychmiastowy wzrost wydajności z pasażerami, polecam korzystanie z ruby ​​enterprise edition.