Instalacja i konfiguracja Nginx + PHP-fpm w Debianie

Instalacja i konfiguracja Nginx + PHP-fpm w Debianie

Nataliya Oteir Czytaj 8 minuta

Nginx to serwer internetowy, który został wydany w 2004 roku. Serwer ten jest łatwy w użyciu, ale mimo to doskonale radzi sobie z wieloma połączeniami. Cecha ta wynika z jego wewnętrznej architektury. Początkowo został stworzony jako serwer obsługujący statyczną zawartość (tzw. serwer buforujący). W przeciwieństwie do Apache, Nginx nie ma wbudowanego interpretera do obsługi dynamicznych żądań treści.

Wymaga to dalszej interakcji między serwerem WWW a aplikacją. Menedżer procesów PHP-FPM (FastCGI) z powodzeniem rozwiązuje ten problem. Ważną kwestią jest to, że w pracy z PHP spoiwo Nginx + PHP-FPM okazuje się mniej wydajne niż Apache + php_mod.

Jeśli więc twój serwer ma wysokie wymagania wydajnościowe dla PHP, lepiej przyjrzeć się pakietowi apache + php_mod. Inną ważną kwestią jest to, że konfiguracja Nginx wymaga więcej wysiłku niż Apache.

Ten artykuł dotyczy instalacji i prostej konfiguracji serwera Nginx w połączeniu z menedżerem procesów PHP-FPM w Debianie 8. Wszystkie operacje są wykonywane z uprawnieniami użytkownika root.

Najpierw należy dokonać aktualizacji:

apt-get update

Następnie instalujemy Nginx:

apt-get -y install nginx

Po instalacji przetestujemy serwer. Aby to zrobić, wystarczy otworzyć adres przeglądarki internetowej naszego serwera. Otworzy się następująca zawartość:

Jest to standardowa strona wtyczki dla Nginx. Następnym krokiem jest instalacja php5-fpm. To bardzo proste:

apt-get -y install php5-fpm

Następnie należy przeprowadzić konfigurację. Najpierw należy skonfigurować serwer Nginx. Plik konfiguracyjny znajduje się w /etc/nginx/nginx.conf.

Otwórz ten plik. Używamy edytora tekstu vi, ale możesz użyć dowolnego innego, który Ci odpowiada.

vi  /etc/nginx/nginx.conf

Przyjrzyjmy się nieco strukturze samego pliku. Cały plik jest nieco podobny do kodu programu. Zawiera on dyrektywy. Są one podzielone na dwa typy:

  • Proste - ciąg znaków z operatorami zakończonymi symbolem ";". Na przykład: pid /run/nginx.pid;
  • Block - dyrektywa zawierająca dodatkowe parametry umieszczone w nawiasach klamrowych {}.

Inne dyrektywy mogą być ustawione wewnątrz nawiasów klamrowych. W takim przypadku będzie on nazywany kontekstem, a wszystkie dyrektywy, które znajdują się w pliku konfiguracyjnym, ale nie są ujęte w nawiasy klamrowe, znajdują się w kontekście globalnym lub tak zwanym kontekście głównym.

Ciągi oznaczone symbolem # są komentarzami i nie są brane pod uwagę w konfiguracji.

Jak widać w pliku znajduje się dyrektywa:

include /etc/nginx/sites-enabled/*;

Ta dyrektywa mówi, że ten plik konfiguracyjny zawiera wszystkie pliki konfiguracyjne z katalogu /etc/nginx/sites-enabled/directory. Katalog ten zasadniczo zawiera dowiązania symboliczne do konfiguracji wirtualnych hostów (zasadniczo witryn obsługiwanych na serwerze).

Teraz musimy skonfigurować wirtualny host, który będzie odpowiedzialny za nasz najprostszy zasób (niech to będzie test.net). Najpierw utworzymy dla niego katalog. Niech to będzie komenda:

mkdir -p /var/www/test.net/html

Teraz stwórzmy w tym katalogu plik index.html z następującą zawartością:

<html>
   <head>
      <title>Hello World</title>
   </head>
   <body>
      <h>This is a test page.</h>
   </body>
</html>

Teraz mamy zawartość witryny, niech i jedna strona wszystkiego. Dla tej witryny należy utworzyć wirtualny host. Skopiuj domyślny plik dla wirtualnego hosta:

cp /etc/nginx/sites-available/default /etc/nginx/sites-available/test.net

Następnie otwórz go do edycji. Dyrektywa listen ma opcje dla default_server. Tylko jeden blok może być ustawiony z tą wartością, co oznacza, że ten blok będzie obsługiwał zapytania, dla których nie znaleziono nic bardziej odpowiedniego. Dlatego linie

listen 80 default_server;
listen [::]:80 default_server;

należy usunąć z tego pliku. Następnie należy skonfigurować katalog główny, który zawiera zawartość naszej witryny. Aby to zrobić, piszemy dyrektywę root w następujący sposób:

root /var/www/test.net/html;

Poniższa dyrektywa index definiuje pliki, które mają być używane jako pliki indeksu. Kolejność, w jakiej pliki są sprawdzane, odpowiada kolejności w pliku konfiguracyjnym. Ta dyrektywa jest zapisana w następujący sposób:

index index.html index.htm index.nginx-debian.html;

Następująca dyrektywa server_name określa nazwę serwera. Jako wartości określamy nazwę domeny i alias, gdy nazwa domeny jest określona z prefiksem www.

server_name test.net www.test.net;

Następnie wystarczy określić dyrektywę lokalizacji, która ustawia konfigurację witryny na podstawie nazwy URI określonej w żądaniu. W naszym przypadku będzie to wyglądało prosto:

location / {
   try_files $uri $uri/ =404;
}

Oznacza to, że najpierw sprawdzane będą pliki, następnie katalogi, a jeśli nic odpowiedniego nie zostanie znalezione, zwrócony zostanie komunikat Not Found (404).

To wszystko w pliku konfiguracyjnym. Jego ostateczna zawartość jest następująca:

#cat /etc/nginx/sites-available/test.net
server {
     root /var/www/test.net/html;
     index index.html index.htm index.nginx-debian.html;
     server_name test.net www.test.net;
     location / {
           try_files $uri $uri/ =404;
     }
}

Wszystkie inne dyrektywy i ich wartości można przeczytać w oficjalnej dokumentacji Nginx, która znajduje się tutaj http://nginx.org/en/docs/.

Teraz mamy zawartość strony i jej plik konfiguracyjny. Pozostaje go dołączyć. Aby to zrobić, utwórz dowiązanie symboliczne:

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

Uruchom ponownie serwer, aby zmiany zaczęły obowiązywać:

/etc/init.d/nginx restart

Sprawdźmy działanie utworzonego zasobu.

Aby otworzyć stronę, może być konieczne dodanie linii do pliku hosts na komputerze, z którego sprawdzamy:

xxx.xxx.xxx.xxx test.net

Где xxx.xxx.xxx.xxx - это IP-адрес сервера с установленным Nginx. Hosty, находится:

  • C:\Windows\System32\drivers\etc (в Win7);
  • /etc/hosts (w Debianie).

Zainstalowaliśmy Nginx i php5-fpm, a także stworzyliśmy najprostszą witrynę. Następnym krokiem jest skonfigurowanie PHP i zastosowanie go z Nginx.

Najpierw utworzymy stronę z kodem PHP na naszym wirtualnym hoście. Utwórzmy plik /var/www/test.net/html/info.php w następujący sposób:

<?php
phpinfo();
?>

Teraz otwórzmy tę stronę w przeglądarce http://test.net/info.php

Ale co z wykonaniem kodu PHP? Kod PHP nie został wykonany, ponieważ interpreter PHP nie jest skonfigurowany w Nginx. Zróbmy tak.

Otwórzmy nasz plik konfiguracyjny /etc/nginx/sites-available/test.net. Dodaj następującą dyrektywę blokową:

location ~ \.php$ {
try_files $uri =404;
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}

Ta dyrektywa opisuje parametry przetwarzania zapytań przechodzących do plików PHP. Nie będę opisywał każdego parametru i jego wartości. Informacje te można znaleźć w oficjalnej dokumentacji tutaj http://nginx.org/en/docs/dirindex.html

Teraz nasz plik konfiguracyjny wygląda następująco:

server {
root /var/www/test.net/html;
index index.html index.htm index.nginx-debian.html;
server_name test.net www.test.net;
location / {
try_files $uri $uri/ =404;
}
location ~ \.php$ {
try_files $uri =404;
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}

Zapisujemy zmiany w pliku i restartujemy nasz serwer Nginx.

/etc/init.d/nginx restart

Teraz spróbujmy ponownie otworzyć http://test.net/info.php. Wynik powinien wyglądać następująco:

Na zrzucie ekranu zaznaczyłem informację, która wskazuje na użycie menadżera FPM.

W rzeczywistości najprostsza konfiguracja serwera Nginx + PHP-FPM jest kompletna. Najprostsza witryna została utworzona i skonfigurowana do pracy z PHP.

Zobacz poniższy artykuł na temat konfiguracji PHP -FPM.

How useful was this post?

Click on a star to rate it!
Рейтинг: 0/5 - 0 голосов