Cały problem konfigurowania serwera programistycznego dla mojej aplikacji Ruby on Rails dezorientuje mnie. Są WEBrick, Mongrel, Passenger, Apache, Nginx i wiele innych, jestem pewien, i tak naprawdę nie rozumiem różnych ról, jakie odgrywają.
Zaczynałem od WEBrick, a teraz używam Mongrel do programowania. Czy te serwery są samodzielne, czy też stoją przed Apache?
Przeczytałem o Passenger i naprawdę nie rozumiem, co to jest, strona mówi „sprawia, że wdrażanie aplikacji internetowych Ruby jest dziecinnie proste”, czy to zastępuje Mongrel? Czy to jak Capistrano, który także wdraża aplikacje internetowe?
Mając na uwadze, że chciałbym przetestować SSL i uważam, że nie obsługuje go kundel, jaka jest najlepsza konfiguracja serwera programistycznego?
Dzięki
Odpowiedzi:
Słowo „wdrożenie” może mieć dwa znaczenia w zależności od kontekstu. Mylisz także role Apache / Nginx z rolami innych komponentów.
Uwaga historyczna: ten artykuł został pierwotnie napisany 6 listopada 2010 r., Kiedy ekosystem serwera aplikacji Ruby był ograniczony. Zaktualizowałem ten artykuł 15 marca 2013 r. Wszystkimi najnowszymi aktualizacjami w ekosystemie.
Oświadczenie : Jestem jednym z autorów Phusion Passenger, jednego z serwerów aplikacji.
Apache vs Nginx
Oba serwery WWW. Mogą obsługiwać pliki statyczne, ale - z odpowiednimi modułami - mogą także obsługiwać dynamiczne aplikacje internetowe, np. Te napisane w PHP. Apache jest bardziej popularny i ma więcej funkcji, Nginx jest mniejszy i szybszy oraz ma mniej funkcji.
Ani Apache, ani Nginx nie mogą obsługiwać aplikacji internetowych Ruby od razu po wyjęciu z pudełka, aby to zrobić, musisz użyć Apache / Nginx w połączeniu z jakimś dodatkiem opisanym później.
Apache i Nginx mogą również działać jako odwrotne serwery proxy, co oznacza, że mogą przyjmować przychodzące żądania HTTP i przekazywać je na inny serwer, który również obsługuje HTTP. Gdy serwer odpowie odpowiedzią HTTP, Apache / Nginx prześle odpowiedź z powrotem do klienta; Dowiesz się później, dlaczego jest to istotne.
Mongrel i inne serwery aplikacji produkcyjnych vs WEBrick
Mongrel to Ruby „serwer aplikacji”: Konkretnie oznacza to, że Mongrel to aplikacja, która:
Jednak Mongrel jest dość przestarzały, obecnie nie jest już utrzymywany. Nowsze alternatywne serwery aplikacji to:
Omówię je później i opiszę, jak różnią się od siebie i od Mongrel.
WEBrick robi to samo co Mongrel, ale różnice są następujące:
Serwer aplikacji i świat
Wszystkie obecne serwery aplikacji Ruby mówią HTTP, jednak niektóre serwery aplikacji mogą być bezpośrednio narażone na działanie Internetu na porcie 80, a inne nie.
Dlaczego niektóre serwery aplikacji muszą znajdować się za odwrotnym proxy?
Dlaczego niektóre serwery aplikacji mogą być bezpośrednio dostępne w Internecie?
Porównanie serwerów aplikacji
W tej sekcji porównam większość serwerów aplikacji, o których wspomniałem, ale nie Phusion Passenger. Phusion Passenger to tak inna bestia niż reszta, że poświęciłem jej specjalną sekcję. Pominąłem także Trynidad i TorqueBox, ponieważ nie znam ich wystarczająco dobrze, ale i tak są one istotne tylko, jeśli używasz JRuby.
Phusion Passenger
Phusion Passenger działa zupełnie inaczej niż wszystkie pozostałe. Phusion Passenger integruje się bezpośrednio z Apache lub Nginx, a więc można go porównać do mod_php dla Apache. Podobnie jak mod_php pozwala Apache'owi na obsługę aplikacji PHP niemal magicznie, Phusion Passenger pozwala Apache (a także Nginx!) Na obsługę aplikacji Ruby, prawie magicznie. Celem Phusion Passenger jest sprawienie, aby wszystko działało jak najlepiej (tm) przy jak najmniejszym wysiłku.
Zamiast uruchamiać proces lub klaster dla swojej aplikacji i konfigurować Apache / Nginx do obsługi plików statycznych i / lub odwrotnych żądań proxy do procesu / klastra za pomocą Phusion Passenger, wystarczy:
Cała konfiguracja odbywa się w pliku konfiguracyjnym serwera WWW. Phusion Passenger automatyzuje prawie wszystko. Nie ma potrzeby uruchamiania klastra i zarządzania procesami. Uruchamianie / zatrzymywanie procesów, restartowanie ich po awarii itp. - wszystko zautomatyzowane. W porównaniu do innych serwerów aplikacji, Phusion Passenger ma znacznie mniej części ruchomych. Ta łatwość użytkowania jest jednym z głównych powodów, dla których ludzie korzystają z Phusion Passenger.
Również w przeciwieństwie do innych serwerów aplikacji, Phusion Passenger jest napisany głównie w C ++, dzięki czemu jest bardzo szybki.
Istnieje również wariant Enterprise Phusion Passenger z jeszcze większymi funkcjami, takimi jak automatyczne automatyczne restartowanie, obsługa wielowątkowości, odporność na błędy wdrażania itp.
Z powyższych powodów Phusion Passenger jest obecnie najpopularniejszym serwerem aplikacji Ruby, obsługującym ponad 150 000 stron internetowych, w tym duże, takie jak New York Times, Pixar, Airbnb itp.
Phusion Passenger vs. inne serwery aplikacji
Phusion Passenger zapewnia o wiele więcej funkcji i zapewnia wiele korzyści w stosunku do innych serwerów aplikacji, takich jak:
Obciążenia, w których Unicorn nie jest dobry, to:
Hybrydowy model I / O w Phusion Passenger Enterprise 4 lub nowszy sprawia, że jest doskonałym wyborem do tego rodzaju obciążeń.
Jest więcej funkcji i zalet, ale lista jest naprawdę długa. Należy odnieść się do kompleksowej obsługi Phusion pasażera ( Apache , wersja Nginx ) lub stronie pasażera Phusion celach informacyjnych.
Modele współbieżności we / wy
Niedawno opublikowano artykuł na blogu Phusion o optymalnym dostosowaniu liczby procesów i wątków do obciążenia. Zobacz Strojenie ustawień współbieżności Phusion Passenger .
Capistrano
Capistrano to coś zupełnie innego. We wszystkich poprzednich sekcjach „wdrożenie” odnosi się do uruchomienia aplikacji Ruby na serwerze aplikacji, aby stała się dostępna dla odwiedzających, ale zanim to nastąpi, zwykle trzeba wykonać pewne czynności przygotowawcze, takie jak:
W kontekście Capistrano „wdrożenie” odnosi się do wykonania wszystkich tych prac przygotowawczych. Capistrano nie jest serwerem aplikacji. Zamiast tego jest to narzędzie do automatyzacji wszystkich prac przygotowawczych. Poinformujesz Capistrano, gdzie jest twój serwer i jakie polecenia należy uruchamiać za każdym razem, gdy wdrażasz nową wersję aplikacji, a Capistrano zajmie się przesłaniem aplikacji Rails na serwer i uruchomieniem określonych poleceń.
Capistrano jest zawsze używany w połączeniu z serwerem aplikacji. Nie zastępuje serwerów aplikacji. Odwrotnie, serwery aplikacji nie zastępują Capistrano, można ich używać w połączeniu z Capistrano.
Oczywiście nie musisz używać Capistrano. Jeśli wolisz przesłać swoją aplikację Ruby za pomocą FTP i ręcznie uruchamiać te same kroki poleceń za każdym razem, możesz to zrobić. Inni ludzie zmęczyli się tym, więc automatyzują te kroki w Capistrano.
źródło