Jak zainstalować serwer WWW z Nginx + MySQL + PHP5 + APC + Spawn_FastCGI [pierwsza część: prezentacja]

Nie tak dawno temu wspominaliśmy o tym teraz DesdeLinux (wszystkie jego usługi) działają Serwery GNUTransfer.com. Blog znacznie się poprawił pod względem szybkości, płynności, nawet jeśli przestajemy mieć (po połączeniu UsemosLinux) ponad 30.000 200 odwiedzin dziennie (prawie XNUMX użytkowników podłączonych jednocześnie). Jak osiągnąć dobrą wydajność serwera nawet przy takim natężeniu ruchu?

Obecnie Justice (VPS, gdzie znajduje się blog i kilka innych usług) ma 3 GB pamięci RAM, jednak zużywa mniej niż 500 MB, jest to możliwe przy odpowiednim doborze oprogramowania i odpowiedniej konfiguracji. Na przykład Apache jest niewątpliwie wielkim na świecie, numerem 1, jeśli chodzi o hosting, ale właśnie z tego powodu Apache nie zawsze jest najlepszą opcją. Gdy ruch jest duży, a sprzęt serwera nie jest zbyt duży (np. 8 lub 16 GB pamięci RAM), Apache może zużywać zbyt dużo pamięci RAM, co powoduje, że w pewnych momentach odpowiedź serwera zajmuje zbyt dużo czasu lub, co gorsza, nasza witryna jest offline przez niewystarczające zasoby. Dlatego wielu z nas wybiera Nginx zamiast Apache.

nginx:

O Nginx mówiliśmy już wcześniej w artykule Nginx: Ciekawa alternatywa dla Apache, tam powiedzieliśmy, że jest to serwer WWW taki jak Apache, LightHttpd lub Cherokee, ale w porównaniu z Apache wyróżnia się wydajnością i niskim zużyciem sprzętu, właśnie dlatego wiele dużych witryn, takich jak Facebook, MyOpera.com, DropBox czy nawet WordPress .com używa Nginx zamiast Apache. W świecie Linuksa DesdeLinux Nie jest to jedyny, który używa Nginx, o ile wiem, używają go również emsLinux i MuyLinux :)

Moje osobiste doświadczenia z Nginx sięgają kilku lat, kiedy z konieczności zacząłem szukać lekkich alternatyw dla Apache. W tamtym czasie Nginx był w wersji 0.6 i jego kompatybilność z wysokimi żądaniami stronami stworzonymi w PHP nie była najbardziej optymalna, jednak dziś od wersji 0.9 wzwyż (Wersja 1.2.1 dostępna na Debian Stable, wersja 1.4.2 dostępna na ArchLinux) znacznie się poprawiło, do tego stopnia, że ​​przy odpowiedniej konfiguracji i połączeniu Nginx + PHP wszystko będzie działać jak urok.

W tej serii samouczków Użyję Nginx w wersji 1.2.1-2.2, dostępne w repozytoriach Debian Stable (Wheezy).

PHP5:

PHP, język programowania, z którym współpracuje obecnie wiele witryn (i systemów CMS), jest moim zdaniem czarną owcą w rodzinie. Innymi słowy, z mojego osobistego doświadczenia wynika, że ​​duże witryny, z dużą liczbą odwiedzin, z wieloma opcjami, funkcjami itp., Jeśli taka strona jest wykonana w PHP, będzie zużywać więcej zasobów niż podobna witryna wykonana na przykład w RoR. Z mojego doświadczenia wynika, że ​​ludzie, PHP to ogromny smok zasobów, PHP + Apache wystarczy, aby połknąć setki MB pamięci RAM bez prawdziwej potrzeby.

Powodem, dla którego nie należy używać RoR, Django lub czegoś innego, jest po prostu to DesdeLinux (blog, nasz flagowy produkt) współpracuje z WordPressem, CMS-em opracowanym w PHP, który oferuje nam tak wiele udogodnień, że po prostu nie planujemy go zmieniać w krótszej lub średniej perspektywie, szczerze mówiąc, WordPress, nawet jeśli nie jest idealny, służy nam do tego, czego potrzebujemy, a może i więcej.

Jeśli chodzi o PHP, w tych samouczkach użyję rozszerzenia Wersja PHP 5.4.4-14 dostępne na Debian Wheezy (stabilny)

Spawn_FastCGI:

Można powiedzieć, że jest tym, co łączy Nginx z PHP, to znaczy, nawet jeśli mają zainstalowany pakiet PHP5, jeśli nie mają zainstalowanego i uruchomionego Spawn_FastCGI, gdy otwierają witrynę w PHP, przeglądarka pobierze plik, nie pokaże im wszystko, co zostało zaprogramowane w .php, ponieważ serwer nie wie, jak przetwarzać pliki .php, dlatego konieczne jest zainstalowanie i skonfigurowanie Spawn_FastCGI.

Gdybyśmy użyli Apache, byłoby to coś tak prostego, jak instalacja pakietu libapache2-mod-php5, ale ponieważ używamy Nginx, będziemy musieli zamiast tego zainstalować pakiet spawn-fcgi. Ponadto w samouczku wyjaśnię, jak utworzyć początkowy skrypt w /etc/init.d/, aby można było wygodniej nim sterować.

MySQL:

Może to być wielki znak zapytania, a może dla niektórych niezgodna nuta. Wielu, których znam, zada mi pytanie: po co używać MySQL, a nie MariaDB?

Problem w tym, że nie mam wystarczająco dużo czasu, aby w tej chwili poświęcić się migracji z MySQL do MariaDB, migracji, która teoretycznie powinna być przejrzysta dla wszystkich, w 100% kompatybilna ze wszystkim, ale to... Powiedziałem, że teoretycznie. W tym czasie zacząłem przenosić usługi DesdeLinux z jednego VPS na drugi musiałem zostawić Apache i używać Nginx, wiązało się to z różnymi plikami konfiguracyjnymi, różnymi sposobami deklarowania VHost, instalacją i konfiguracją od podstaw serwera i jego usług, w tym czasie nie mogłem dodać kolejnego zadania do list, dodatkowo i szczerze mówiąc, zmieniłem Apache na Nginx, ponieważ Apache nie zaspokoił moich potrzeb, jednak MySQL na razie zaspokaja moje potrzeby w 100%, nie widzę powodu, abym w tym czasie zwiększał swoje obciążenie pracą zmieniając coś, co U mnie technicznie już to działało dobrze.

Kiedyś wyjaśniłem, dlaczego nie zainstalowałem MariaDB, wyjaśnij również, że ogromna większość stron internetowych potrzebuje bazy danych do swojego działania, ponieważ to tam będzie przechowywanych wiele (lub prawie wszystkie) informacji. Są tacy, którzy lubią Postgre lub kogoś innego, w tej serii samouczków wyjaśnię, jak to zrobić zainstaluj MySQL i skonfiguruj oddzielnych użytkowników dla każdej witryny.

La Wersja MySQL, której będę używał, to 5.5.31

Transporter opancerzony:

APC to optymalizator dla PHP (wyjaśniony w bardzo prosty sposób). To pozwala nam po prawidłowym skonfigurowaniu, że przetwarzanie PHP działa lepiej, że odpowiedzi z serwera są szybsze.

Istnieją alternatywy, takie jak memcache, jednak zawsze używałem APC i miałem bardzo dobre wyniki. Polecam przeczytanie tego artykułu w języku angielskim: Porównanie APC i Memcache jako lokalnego magazynu zawartości

Użyję wersji php-apc 3.1.13-1 dostępne również w repozytoriach Debian Stable.

Podsumowując:

Taki sposób instalacji konfiguracji serwera WWW nie jest ani najbardziej optymalny, ani dużo mniej, na przykład wielu poleci Varnish, który z tego co przeczytałem robi prawdziwe cuda bo wszystko lub prawie wszystko jest w pamięci podręcznej, ale w naszym przypadku nie potrzebujemy, aby 100% witryny było zawsze buforowane, ponieważ nie chcemy lub nie musimy iść do tak skrajności. Jednak wyjaśniam, jak powiedziałem powyżej: „o ile przeczytałem”, ja osobiście nie używałem lakieru do dziś, więc nie mogę dać Ci 100% obiektywnej opinii.

Będzie to seria samouczków, w których pokażę, jak zainstalować serwer WWW taki jak ten, który jest hostowany w tej minucie. DesdeLinux (blog, forum, wklej itp.). Blog ma 30.000 200 odwiedzin dziennie, prawie 500 użytkowników korzysta z niego jednocześnie, a mimo to zużycie RAM nie przekracza 3 MB, dla niektórych może to być nadmierne zużycie, ale... hej, mamy 500 GB RAM, mniej niż XNUMX MB (co obejmuje Usługa FTP, SSH itp.) jest naprawdę dobra, prawda? 🙂

Cała `` magia '' jest wykonywana nie tylko przez Nginx + Spawn_FastCGI + APC, nasz system buforowania blogów jest naprawdę dobrze skonfigurowany, a zasady dla Nginx są precyzyjne, dzięki czemu blog nawet wtedy, gdy otrzymuje dużo ruchu, jest znacznie mniej PHP niż cokolwiek zwykle, ponieważ wiele jest już buforowanych. Jeśli masz witrynę o dużym zapotrzebowaniu i masz problemy z zasobami, zdecydowanie polecam przestudiowanie, aby sprawdzić, który system pamięci podręcznej będzie dla Ciebie najlepszy, który najlepiej będzie odpowiadał Twoim potrzebom.

Mam nadzieję, że te samouczki okażą się interesujące, w każdym z nich postaram się wszystko wyjaśnić w sposób wyczerpujący, szczegółowy i jak najprostszy.

pozdrowienia


Zostaw swój komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

*

*

  1. Odpowiedzialny za dane: Miguel Ángel Gatón
  2. Cel danych: kontrola spamu, zarządzanie komentarzami.
  3. Legitymacja: Twoja zgoda
  4. Przekazywanie danych: Dane nie będą przekazywane stronom trzecim, z wyjątkiem obowiązku prawnego.
  5. Przechowywanie danych: baza danych hostowana przez Occentus Networks (UE)
  6. Prawa: w dowolnym momencie możesz ograniczyć, odzyskać i usunąć swoje dane.

  1.   Bruno cascio powiedział

    Bardzo dobrze i jasno! Gratuluję ci!

    1.    KZKG ^ Gaara powiedział

      Dziękuję

  2.   Krzysztof Castro powiedział

    Bardzo dobry tutorial.

    Wątpię, jak skonfigurowali serwer poczty.

    1.    KZKG ^ Gaara powiedział

      MailServer jest czymś osobnym, to znaczy, jak wiesz, nie ma nic wspólnego z serwerem WWW 🙂

      Jednak już dawno postanowiłem nie komplikować się z serwerem MailServer, wybrałem iRedMail (obsługa MySQL, LDAP i Postgre) i przy odpowiednich ustawieniach i szczegółach, które dodam w plikach konfiguracyjnych, wszystko działa dobrze.

  3.   Zgnilizny87 powiedział

    Podoba mi się artykuł, czekam na cykl artykułów

    1.    KZKG ^ Gaara powiedział

      Dzięki, mam nadzieję, że przyniesie następny w poniedziałek lub wtorek, zajmie się instalacją i konfiguracją Nginx.

  4.   aca powiedział

    Bardzo dobra, właściwa konfiguracja, ciężko to znaleźć, kompromis między czynnikami jest czasem prawie nierozwiązywalny, ja też jakiś czas temu poszedłem na nginx a później na mariadb (ostatnio chyba rok temu).

    // jak wspomniałem, byłoby miło, gdybyś podniósł możliwość chroot i użył proxy_cache_path, który również jest przydatny. Również porównanie gniazda (o ile jest to możliwe) z portem. i dobrze zdefiniuj liczbę dzieci / barana.

    pozdrowienia

    1.    KZKG ^ Gaara powiedział

      Dziękuję za komentarz 🙂
      Tak, oczywiście, byłoby bardzo miło umieścić Nginx w klatce, aby był oddzielony od reszty systemu, nie rozważałem takiej możliwości w tych samouczkach, zobaczę, co mogę zrobić. O proxy_cache_path, nigdy go nie używałem, poczytam o tym trochę, aby zobaczyć, jak to działa.

      Jeśli chodzi o liczbę wątków (min i max), w konfiguracji Nginx jest to oczywiście zdefiniowane, w poście Nginx opowiem dużo o pliku .conf 😉

      Jeszcze raz dziękuję za komentarz.

  5.   msx powiedział

    To właśnie ten rodzaj poradników sprawia, że ​​sieć jest naprawdę potężna dla informatyków, ponieważ oszczędza nam mnóstwo godzin badań i testów, dopóki w końcu nie zdecydujemy się na odpowiednią opcję, wielkie dzięki!

    Jedno pytanie, czy to działa na Debianie? Jaka wersja systemu operacyjnego i pakietów?

    Pozdrowienia!

    1.    KZKG ^ Gaara powiedział

      Dziękuję.
      Rzeczywiście, stron, które donoszą, powtarzają i powtarzają wiadomości, jest już zbyt wiele ... potrzebne są strony, które umieszczają samouczki, tego potrzebuje sieć!

      Tak, Debian Wheezy (obecna wersja stabilna), wersje pakietów znajdują się w poście 😉

  6.   Eliotime3000 powiedział

    Doskonały komentarz. Zobaczmy, czy zrobię coś w rodzaju Erraty za pomocą ZPanel X i, nawiasem mówiąc, wykonam instalację ręcznie w Debian Wheezy.

  7.   Federico Antonio Valdes Toujague powiedział

    Śmiało, KZKG ^ Gaara !!!, że najlepszym kryterium prawdy jest praktyka, a ty masz doświadczenie w tym, co piszesz. Profesjonalna i działająca strona internetowa. Major League Baseball, stary.

    1.    Eliotime3000 powiedział

      To prawda. Poza tym, kiedy zacząłem bawić się serwerami internetowymi, które zainstalowałem w Windowsie, prawda jest taka, że ​​Apache przyspiesza pod względem zużycia zasobów, jeśli używasz WordPressa (w Drupalu zużywał połowę zasobów).

  8.   wagon powiedział

    Myślę, że w przypadku części Nginx ten samouczek będzie przydatny. Teraz chcę zainstalować serwer z Nginx, php, Varnish i MariaDB. Ale oczywiście trzeba zacząć, a lenistwo może wiele zdziałać jeśli chodzi o walkę z serwerami i na razie jestem zadowolony z typowej lampy i memcache, które mam xDD.

    Pozdrowienia.

  9.   auroszx powiedział

    Świetnie, tylko jeden z nich by się przydał.

  10.   Ivan Gabriel Sosa powiedział

    Podążamy za tobą. Obecnie zaczynamy w świecie serwerów WWW. Kupiliśmy dwa od Hostingera, a znajomy pomógł nam skonfigurować je od podstaw (PHP, MySQL, Apache). Jest to jedyna kombinacja używana w Linuksie, platformie, na której jestem od stycznia.
    Ale byłem bardzo zainteresowany tym tematem. Twoje zdrowie!

  11.   Jose Manuel powiedział

    Nigdy nie instalowałem serwera WWW, ale jeśli chcę to zrobić, pytanie, czy poziom niezbędny do zrozumienia samouczków i instalacji będzie wysoki, czy przy podstawowej wiedzy mogę spróbować? Z góry dziękuję.

    1.    Eliotime3000 powiedział

      Prawda jest taka, że ​​obsługa serwera bazodanowego nie wymaga dużej wiedzy. Powie ci ktoś, kto już tego doświadczył.

  12.   Mauritius powiedział

    Witam, bardzo dobrze, co zamierzasz zrobić z tą serią postów.

    Niedawno zainstalowałem Nginx + Php Fastcgi + Mariadb. Nginx.

    Wszystko to zrobiłem w Archlinux, bo ta dystrybucja jest jedyną z mojego punktu widzenia, która nie przynosi tyle bajerów, co inne. Umieściłem go w klatce i sprawiło mi to wiele niedogodności, aby działał idealnie.

    Teraz działa doskonale. Chociaż jestem zainteresowany poznaniem twoich opinii na temat dzieci i procesów ojca, im więcej wskazówek mi dasz, tym lepiej.

    Wszystko to po to, aby ćwiczyć.
    Sprzęt ma 4 GB pamięci RAM DDR2 i procesor Core 2duo 2.4 Ghz.

    Pozdrawiam i nie mogę się doczekać nadchodzących postów z tej serii.

  13.   kas powiedział

    200 użytkowników podłączonych jednocześnie?
    Tylko o określonych porach dnia, prawda? Bo inaczej przekroczyłoby te 30.000 XNUMX wizyt dziennie.

    1.    KZKG ^ Gaara powiedział

      Tak, oczywiście, nie zawsze jest 200 osób online, w tej chwili jest ich prawie 40, bo jest jeszcze wcześnie, za kilka godzin przekroczą 100.

  14.   łowca powiedział

    Dla zabawy właśnie przełączyłem się z lighty na nginx na mojej stacji roboczej (obecnie Symfony2), wziąłem stąd konfi [1], bardzo proste.

    [1] http://ihaveabackup.net/2012/11/17/nginx-configuration-for-symfony2

  15.   Apr4xas powiedział

    Czekam na kontynuację tego 😀

    1.    KZKG ^ Gaara powiedział

      W tym tygodniu muszę go opublikować, dziękuję za przeczytanie 🙂

      1.    Salud powiedział

        i? dużo brakuje?

  16.   Dziekan powiedział

    Dobry post…

  17.   NOEL IWAN powiedział

    DOBRY WIECZÓR.
    ZE WZGLĘDU NA SPECYFIKACJE PROJEKTU SZKOLNEGO POZWALA MI ZAINSTALOWAĆ NGINX W OPENBSD 5.4 W ORACLE MV VIRTUALBOX, ABY UŻYWAĆ PHP, MYSQL, MIĘDZY INNYMI NADAMAMI, KTÓRE NIE MOGĘ ZNALEŹĆ INFORMACJI DOTYCZĄCYCH POWYŻSZEGO, WIERZĄC W TO, ŻE POWYŻEJ JEST DLA MNIE PROBLEMEM.