Główną funkcją serwera WWW jest dostarczanie treści z Twojej witryny tak wydajnie, jak to możliwe, bez przytłaczania jej ruchem lub spowalniania czasu ładowania. Dobrym sposobem myślenia o tym byłoby jak ciśnienie wody; jeśli masz zbyt duże ciśnienie w domu z instalacji wodno-kanalizacyjnej, nic nie będzie działać poprawnie! Podobnie, jeśli nie ma wystarczającej ilości zasobów dostępnych dla samego serwera WWW, gdy ciężko pracuje, próbując wysłać dane z powrotem przez swoje potoki, wszystko szybko zacznie się robić bałagan!
Trzy najpopularniejsze obecnie typy serwerów to: Mongrels (napisany w Ruby), Apache (napisany głównie w C/C++) i Nginx (napisany w całości w C). I który z nich wybrać? Dowiedzmy Się!
Serwer sieciowy to część systemu komputerowego, która odpowiada na żądania klientów (np. przeglądarek internetowych) dotyczące dokumentów i plików przechowywanych w systemie plików serwera. Termin ten może również odnosić się tylko do oprogramowania, które to umożliwia, lub bardziej ogólnie do dowolnego rodzaju serwera na dowolnym komputerze, na którym działa aplikacja.
Główną funkcją serwera WWW jest dostarczanie treści z Twojej witryny tak wydajnie, jak to możliwe, bez przytłaczania jej ruchem lub spowalniania czasu ładowania. Dobrym sposobem myślenia o tym byłoby jak ciśnienie wody; jeśli masz zbyt duże ciśnienie w domu z instalacji wodno-kanalizacyjnej, nic nie będzie działać poprawnie! Podobnie, jeśli nie ma wystarczającej ilości zasobów dostępnych dla samego serwera WWW, gdy ciężko pracuje, próbując wysłać dane z powrotem przez swoje potoki, wszystko szybko zacznie się robić bałagan!
Trzy najpopularniejsze typy serwerów używane obecnie to Mongrels (napisany w Ruby), Apache (napisany głównie w C/C++) i Nginx (napisany w całości w C).
Wszystkie mają długą historię sięgającą początków Internetu i z biegiem czasu udowodniły swoją niezawodność. Wszystkie trzy serwery są open source, co oznacza, że możesz samodzielnie modyfikować kod, a nawet używać go za darmo . Oznacza to również, że wszelkie błędy znalezione w oprogramowaniu zostaną naprawione przez społeczność programistów, którzy również dzielą się swoją pracą. Wszystkie są wieloplatformowe, co oznacza, że działają na wielu systemach operacyjnych (na przykład Windows i Linux).
Mongrel to serwer WWW dla Rubiego. Jest szybki, niezawodny i skalowalny. Mongrel nie jest świetnym wyborem dla aplikacji internetowych, które intensywnie wykorzystują procesor, ponieważ ruby nie jest bardzo szybkim językiem.
Mongrel implementuje model jednoprocesowy, w którym żądania są obsługiwane przez jeden wątek na połączenie (lub mniej, jeśli go tak skonfigurujesz). Powoduje to krótkie czasy odpowiedzi, ponieważ nie ma potrzeby czekania na operacje we/wy przed zwróceniem sterowania z powrotem do użytkownika po każdym żądaniu.
Apache jest najpopularniejszym serwerem WWW na świecie i nie bez powodu. Jest darmowy, open source i wieloplatformowy (co oznacza, że może działać na wielu różnych systemach operacyjnych). Apache został również napisany w C++, dzięki czemu jest niesamowicie szybki.
Apache ma również bardzo dużą społeczność z wieloma dostępnymi modułami, które pozwalają rozszerzyć jego funkcjonalność poza to, co jest domyślnie obsługiwane natywnie. System wtyczek pozwala dodawać wszystko, od dodatkowych modułów bezpieczeństwa po złożone aplikacje, takie jak serwery pamięci podręcznej memcached lub redis.
Jedynym minusem Apache jest to, że wymaga pewnej wiedzy technicznej, jeśli chcesz mieć pełną kontrolę nad działaniem swojej witryny, ale gdy już to masz, istnieje kilka ograniczeń dotyczących tego, co możesz osiągnąć dzięki temu oprogramowaniu!
Nginx to popularny serwer sieciowy typu open source, zaprojektowany do obsługi wysokiej współbieżności, a także ma architekturę opartą na zdarzeniach.
Nginx wykorzystuje asynchroniczne operacje we/wy do obsługi żądań, co pomaga osiągnąć wyższą wydajność niż inne serwery internetowe. Dzieje się tak, ponieważ Nginx nie musi czekać na odpowiedzi z serwerów nadrzędnych, aby wysłać dane z powrotem do klienta; zamiast tego Nginx wysyła dane przy użyciu wielu wątków wykonania (jeden na połączenie). Ma również modułową konstrukcję, która pozwala na uwzględnienie tylko niektórych części stosu aplikacji na serwerze, jeśli nie potrzebujesz ich wszystkich. Najpopularniejsze zestawy funkcji to:
Serwer WWW (HTTP/1.1)
Reverse proxy/równoważnik obciążenia (TCP)
Na wynos: jeśli masz stronę internetową, potrzebuje ona serwera WWW. Rozważ te zalety i wady, wybierając między Apache, Mongrel lub Nginx
Jeśli masz stronę internetową, potrzebuje ona serwera WWW.
Jakie są zalety i wady każdego z nich?
Kundel jest dobry dla małych witryn, które nie będą się rozwijać.
Nginx jest dobry dla dużych witryn z wieloma jednoczesnymi użytkownikami.
Apache dobrze radzi sobie ze skokami ruchu, ponieważ może tworzyć nowe procesy na żądanie i obsługiwać je równolegle z istniejącymi procesami.
Co oni mają ze sobą wspólnego? Wszystkie używają wątków do obsługi żądań (zamiast tylko jednego procesu robiącego wszystko). Oznacza to, że wiele żądań może być jednocześnie obsługiwanych przez ten sam proces; jeśli jedno żądanie trwa długo, inne żądania nie muszą czekać na swoją kolej.
Rozważasz więc serwer WWW. Dobrą wiadomością jest to, że masz do wyboru trzy świetne opcje. W tym poście na blogu omówiliśmy zalety i wady każdego z nich. Jeśli masz dodatkowe pytania po przeczytaniu tego wpisu na blogu, daj nam znać w sekcji komentarzy poniżej lub skontaktuj się z nami za pośrednictwem naszego formularza kontaktowego.