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

Hace tiempo Opowiedziałem ci o tej serii samouczków, jak zainstalować i skonfigurować serwer pod kątem hostingu o wysokim zapotrzebowaniu. Ten artykuł dotyczy instalacji i konfiguracji Nginx:

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).

Ten samouczek dotyczy tylko i wyłącznie Nginx, a nie Nginx + PHP, związek Nginx + PHP, a także jego optymalizacja lub niezbędna konfiguracja zostaną omówione w następny tutorial

1. Instalacja:

Zaczniemy od pierwszej rzeczy, zainstaluj Nginx z naszych repozytoriów.

Wszystkie polecenia do wykonania są wykonywane z uprawnieniami roota, umieszczając sudo na początku każdej linii lub logując się jako root

Jeśli na swoim serwerze używasz w terminalu dystrybucji takiej jak Debian, Ubuntu lub jakiejś pochodnej, musisz umieścić poniższy tekst i nacisnąć Wchodzę :

aptitude install nginx

aptitude nie jest instalowany domyślnie w Ubuntu, jednak zalecam zainstalowanie go i używanie zamiast apt-get, ponieważ aptitude lepiej zarządza zależnościami w niektórych przypadkach

Jeśli korzystasz z innej dystrybucji na swoim serwerze, takiej jak CentOS, Red Hat, Fedora, po prostu zainstaluj pakiet: nginx z oficjalnego repozytorium

Osobiście nie polecam żadnej pochodnej Debiana, nawet Ubuntu dla serwerów, przez lata moje doświadczenia nie były w pełni satysfakcjonujące. Moim pierwszym wyborem dla systemów operacyjnych dla serwerów jest Debian, potem myślę o CentOS, wreszcie BSD

2. Konfiguracja:

Mamy już zainstalowany Nginx, ale oczywiście musimy go skonfigurować. Przygotowałem skompresowany plik na FTP, który zawiera wszystkie konfiguracje używane na serwerach. DesdeLinux, zarówno dla PHP, Nginx, itp. Pobierzmy i rozpakujmy ten plik:

cd ~ && wget http://ftp.desdelinux.net/nginx-spawn-fastcgi.tar.gz && tar xf nginx-spawn-fastcgi.tar.gz

Spowoduje to utworzenie folderu o nazwie nginx-spawn-fastcgi, z którego będziemy potrzebować dwóch plików dla czystego Nginx (to znaczy bez łączenia go z PHP):

  • nginx.conf - »Główny plik konfiguracyjny Nginx (o jego zawartości porozmawiamy później)
  • index.html - »Prosty plik html, którego użyjemy, aby sprawdzić, czy Nginx naprawdę działa dla nas w najbardziej podstawowej formie
  • mywebsite.net - »Plik konfiguracyjny prostej strony internetowej, VHost (Virtual Host), który skonfiguruje dostęp do poprzedniego html

Najpierw przejdźmy do folderu ustawień Nginx:

cd /etc/nginx/

Następnie usuńmy jego domyślną konfigurację i umieśćmy własną:

mv nginx.conf nginx.conf_BK && cp ~/nginx-spawn-fastcgi/nginx.conf ./

Jak powiedziałem, jest to główny plik konfiguracyjny Nginx, w którym zdefiniowałem już następujące elementy:

dane www użytkownika; worker_processes 4; pid /var/run/nginx.pid;

Dostęp użytkownika do systemu plików (z którym nginx będzie miał dostęp wszędzie), liczba procesów do pracy, a także PID (identyfikator procesu nginx).

Mamy tam również mały blok zwany zdarzeniami (ustawienia zdarzeń), który zawiera linię wskazującą maksymalną liczbę połączeń dozwolonych na zdarzenie. Poniżej znajduje się blok o nazwie http.

Ten blok http zawiera prawie wszystko, co jest związane z hostingiem, przynajmniej wiele rzeczy, które mogą Cię zainteresować. Na przykład maksymalny czas życia lub oczekiwania (timeout), gdzie będą nasze ogólne dzienniki (access.log i error.log), kompresja danych za pomocą gzip, a także inne reguły, które mogą być przydatne w przyszłości.

Po umieszczeniu głównego pliku konfiguracyjnego skopiujmy plik z naszego VHosta do folderu dostępnego dla witryn

cp ~/nginx-spawn-fastcgi/mywebsite.net sites-available/

Ponadto musimy utworzyć łącze symboliczne z tego pliku do folderu z włączoną obsługą witryn.

ln -s /etc/nginx/sites-available/mywebsite.net /etc/nginx/sites-enabled/

Wyjaśniam, dlaczego warto mieć włączone i dostępne witryny.

Znajdą momenty, kiedy będą musieli mieć kilka gotowych i skonfigurowanych plików vhost, bo na tym serwerze umieścą w sieci, powiedzmy, 5 witryn. Jednak zdarza się, że nie jest jeszcze czas na włączenie 2 z tych 5 vhostów, ale muszą mieć gotowe pliki, aby w razie potrzeby były online w jak najkrótszym czasie. Mogą umieścić dowolną liczbę vhostów w witrynach dostępnych, ponieważ te, które Nginx czyta, aby umieścić online, są tylko tymi z włączonymi witrynami, działałoby również w przeciwnym kierunku, na wypadek gdyby chcieli przełączyć się w tryb offline ( na przykład tymczasowo) z witryną, nie ma potrzeby usuwania plików z serwera (plików, których będziemy potrzebować później), po prostu usuwamy symboliczne łącze do witryn z włączoną obsługą i to wszystko. Narzędzie posiadania dowiązań symbolicznych, a nie zwykłego kopiowania pliku z jednego folderu do drugiego, polega na tym, że kiedy chcemy edytować vhost, nie ma znaczenia, czy edytujemy ten znajdujący się w włączonym lub dostępnym, w końcu jest taki sam
archiwum.

Plik mywebsite.net, jak powiedziałem wcześniej, vhost, który służy jako przykład, czyli innymi słowy, musimy zmodyfikować mywebsite.net i ustalić nasze konfiguracje.

Musimy zmienić następujące:

  • access_log (wiersz 3): będzie to ścieżka dostępu do pliku dziennika dostępu do tej witryny
  • error_log (wiersz 4): będzie to ścieżka do pliku dziennika błędów do tej witryny
  • nazwa_serwera (wiersz 5): Adres URL, domena hostowana w tym folderze, na przykład, jeśli było to forum DesdeLinux byłoby to: forum nazwa_serwera.desdelinux. Netto
  • root (wiersz 6): Ścieżka do folderu, w którym znajdują się pliki html, zostawmy to w / var / www /, ponieważ będzie to tylko test
Oczywiście muszą oni wskazać w swoich rekordach DNS swojego dostawcy usług hostingowych (używając CPanel lub innego narzędzia), że domena lub subdomena zadeklarowana w nazwa_serwera znajduje się na IP tego serwera, który konfigurują. Oznacza to, że w DNS, w którym tworzą subdomeny dla swojej domeny, muszą zadeklarować, że domena lub subdomena, które umieścili w wierszu 5, znajduje się na tym serwerze (ten serwer = adres IP danego serwera)

Teraz wystarczy skopiować plik html do folderu, który definiujemy w naszym pliku VHost, / var / www /:

mkdir /var/www/ && cp ~/nginx-spawn-fastcgi/index.html /var/www/

Następnie ponownie uruchamiamy Nginx i to wszystko:

service nginx restart

I voila, pojawi się coś takiego:

nginx-pure-html-test-site

Przypominam, że najpierw pracujemy z Nginx dla HTML, bez wsparcia PHP, ta instalacja PHP i link do Nginx będzie treścią następnego tutoriala (obiecuję za kilka dni).

W każdym razie jest to samouczek dotyczący instalacji i konfiguracji Nginx, aby działał w czystej postaci, to znaczy witryna HTML, mam nadzieję, że Cię zainteresuje.

Wyjaśnię, że tak, wciąż są dobre praktyki, które można wykorzystać, jednak poczekajmy na zakończenie tej serii tutoriali, a wtedy ocenimy końcowy efekt pracy 😉

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.   Nelson powiedział

    Dzięki, bardzo pomocne!

    1.    KZKG ^ Gaara powiedział

      Dziękuję za komentarz

  2.   łowca powiedział

    W backportach jest nginx 1.4 ..

    1.    KZKG ^ Gaara powiedział

      Tak, ale na serwerze produkcyjnym nie używam żadnego z nich 😀

      1.    łowca powiedział

        Mówiąc „to”, masz na myśli najnowszą stabilną i przetestowaną wersję wydaną przez nginx, sprawiasz, że brzmi to tak, jakby była apt-pining z sid. ~ _ ~

        1.    KZKG ^ Gaara powiedział

          Ach, daj spokój, czy to ... na serwerach, których nigdy nie lubiłem używać innych repozytoriów, backportów ani niczego takiego 🙂

      2.    Rafał Castro powiedział

        Zawsze stabilny na serwerach, dowiedziałem się tego lata temu.

        1.    łowca powiedział

          Nginx 1.4 jest stabilny od kwietnia zeszłego roku, w backportach to 1.4.1-3.

          2013-04-24

          Wydana została stabilna wersja nginx-1.4.0, zawierająca wiele nowych funkcji opracowanych w gałęzi 1.3.x - obsługę proxy połączeń WebSocket, zszywanie OCSP, moduł SPDY, filtr gunzip i wiele innych.

          http://nginx.org/en/CHANGES-1.4

          1.    Rafał Castro powiedział

            Masz rację w tym, co mówisz, mój kapelusz jest zdjęty.

  3.   Chinoloco. powiedział

    Dzięki za udostępnienie. Obecnie wprowadzam w życie Twój najstarszy wpis.
    Odpowiem na pytania XD

    1.    KZKG ^ Gaara powiedział

      Dzięki za przeczytanie 🙂
      Jeśli masz jakieś pytania lub wątpliwości, wiesz, jesteśmy tutaj, aby pomóc, jest forum.desdelinux.net, gdzie wspólnie postaramy się dać Ci najlepsze rozwiązanie

      pozdrowienia

      1.    Gibran barrera powiedział

        Mam pytanie Mam LAMP [Linux (Debian Wheezy), Apache, PHP i MySQL] działające na moim serwerze dla WordPress i Owncloud, jak mam migrować do Ngnix, kolejne pytanie brzmi, jaka jest różnica między Ngnix a Lighttpd.

        1.    KZKG ^ Gaara powiedział

          Największą komplikacją lub trudnością migracji z Apache do Nginx są konfiguracje każdej witryny, a konkretnie używany plik .htaccess.

          .Htaccess jest najbardziej skomplikowany podczas przechodzenia na Nginx, ponieważ są to różne konfiguracje, które należy umieścić w Nginx VHost.

          O LightHTTPd i Nginx… Nie wiem, użyłem LightHTTPd tylko raz, wiele lat temu, obecnie nie mam pojęcia, jak idzie jego rozwój, a konkretnie przy użyciu PHP.

  4.   Eliotime3000 powiedział

    NGINX wygląda całkiem prosto w porównaniu do Apache. Czekam na kolejny odcinek, aby móc go uzupełnić o PHP

  5.   Mauritius powiedział

    Czekam na wskazówki, aby zoptymalizować bardziej nginx 😀

    Przy okazji, Gaara, możesz w następnym samouczku uwzględnić, jak zaimplementować obsługę SSL.

    Pozdrowienia.

    1.    KZKG ^ Gaara powiedział

      Wskazówki, które się pojawiają, dotyczą w rzeczywistości optymalizacji przetwarzania PHP, buforowania witryny. Mogę podać przykład konfiguracji, w której używamy DesdeLinux dla Nginx+Wordpress+W3_Total_Cache :)

  6.   Kaiser powiedział

    Dziękuję za dobry wkład.

  7.   Apr4xas powiedział

    A przewodnik po Archlinux kiedy? xD

    1.    KZKG ^ Gaara powiedział

      W Arch było bardzo podobnie, zmieniają się tylko nazwy pakietów, ale ... conf jest prawie identyczny

      Ale kto ma serwer produkcyjny z Arch? 😀

  8.   Apr4xas powiedział

    Witam,

    To znowu ja xD ...

    Śledziłem Twoje kroki, stosując je na maszynie z archlinux i mam następujący problem:

    [abr4xas@Genius www]$ systemctl status nginx.service
    nginx.service - A high performance web server and a reverse proxy server
    Loaded: loaded (/usr/lib/systemd/system/nginx.service; enabled)
    Active: failed (Result: exit-code) since vie 2013-11-15 20:11:35 VET; 1min 13s ago
    Process: 1258 ExecStartPre=/usr/bin/nginx -t -q -g pid /run/nginx.pid; daemon on; master_process on; (code=exited, status=1/FAILURE)

    Wszelkie sugestie 😀

  9.   Rhiz powiedział

    Jo ... xox, chcę tylko serwera wewnętrznego, to znaczy chcę tylko wymienić xampp, czy powinienem to wszystko zrobić?

    1.    KZKG ^ Gaara powiedział

      Jeśli chcesz, możesz to zaimplementować (powtarzam, z tym współpracuje DL), w rzeczywistości mój wirtualny serwer (którego używam do programowania i testowania), mam to samo, co wyjaśniam.

      Oznacza to, że możesz albo usunąć XAMPP i umieścić ten wariant, a będzie działał dobrze, lub jeśli chcesz opuścić XAMPP ... nadal będzie działać dla Ciebie.

      Pozytywnym punktem korzystania z tego, który pokazuję, jest bardzo niskie zużycie sprzętu w porównaniu z Apache, ale na twoim komputerze osobistym, który nie jest hostingiem o wysokim popycie, jest daleki od tego ... jeśli XAMPP działa dobrze, nie rozumiem, dlaczego go usuwać 🙂

  10.   Isaac powiedział

    Mam już uruchomiony serwer Linux (Debian, Nginx, MySQL i PHP). Trudno mi było zmusić PHP do pracy z Nginx, ponieważ byłem przyzwyczajony do prostego serwera WWW Apache.

    Cóż, moje pytanie brzmi: czy ktoś wie, jak mogę skierować zakupioną domenę testową do mojego serwera? Chciałbym wypróbować moją domenę .com, aby zobaczyć, jak to działa, ale nie mam pojęcia, jak to zrobić, ponieważ zawsze korzystałem z adresu NOIP, aby uzyskać do niej dostęp za pomocą noip DUC.

    Mam nadzieję, że ktoś może mi pomóc, dzięki!

  11.   Abraham powiedział

    Otrzymuję to podczas próby połączenia się z twoim ftp:

    cd ~ && wget http://ftp.desdelinux.net/nginx-spawn-fastcgi.tar.gz && tar xf nginx-spawn-fastcgi.tar.gz

    Wysłano żądanie HTTP, oczekiwanie na odpowiedź… 404 Not Found
    2015-11-23 17:46:30 BŁĄD 404: nie znaleziono.

  12.   Ryan powiedział

    Mam serwer działający na CentOS (Gunicorn, Nginx, PHP) kosztowało mnie to dużo pracy, ale utknąłem w tym, że strona internetowa, którą chcę uruchomić, wymaga konfiguracji dostawcy domeny w tym przypadku Go Daddy, Więc w tym momencie nie wiem, jak kontynuować.

  13.   Ricardo powiedział

    Czy mógłbyś mi udostępnić pliki konfiguracyjne, ponieważ nie mogę ich pobrać