Od stabilnego i szybkiego serwera zależy od losu strony. Jego powolna praca i częste spadki mogą odstraszyć zarówno odwiedzających, jak i wyszukiwarki. Ten ostatni obniży także ocenę miejsca hamowania w wynikach wyszukiwania i nie znajdzie się w pierwszej dziesiątce, ale, powiedzmy, w pierwszej 100 dla wszystkich zapytań.
Używanie mnóstwa nginx i php-fpm do konserwacji strony pozwala zwiększyć szybkość ich pracy, a także stabilność systemu jako całości. Ponadto, odmawiając użycia Apache, upraszczamy nieco system, a nawet go chronimy. W końcu, jeśli nie ma apache, to atakujący nie będzie mógł użyć na przykład pliku .htaccess do własnych celów.
Pakiet nginx + php-fpm jest dość łatwy do skonfigurowania i jest obsługiwany przez wiele popularnych CMSów: WordPress, MODX, DLE, różne frameworki. Wszystko to może działać bez dużego apache.
Instalując serwer WWW, nie obywa się bez tworzenia użytkowników. Najlepiej byłoby utworzyć osobnego użytkownika dla każdej witryny. Możemy więc chronić inne witryny, jeśli jeden z użytkowników zostanie zhackowany. Przykłady w tym artykule zostały napisane z uwzględnieniem faktu, że użytkownik utworzył użytkowników zgodnie z instrukcjami .
Najpierw zainstaluj podstawowe moduły: php-fpm, mysql, curl, GD. Cała reszta jest indywidualną koniecznością.
# aptitude install nginx php5-fpm php5-mysqlnd php5-curl php5-gd
Pliki konfiguracyjne znajdują się w katalogu / etc / php5 / fpm / .
Treść artykułu:
- Настраиваем php-пул для обслуживания запросов 1 Skonfiguruj pulę php do zgłoszeń serwisowych
- Обработка php скриптов посредством nginx 2 Przetwarzanie skryptów php za pomocą nginx
Konfigurujemy pulę php do obsługi żądań
Początkowo php-fpm ma tylko jedną pulę o nazwie www. Wykorzystamy go jako podstawę dla innych pul.
Otwórz plik konfiguracyjny /etc/php5/fpm/pool.d/www.conf , rozważ kilka zmiennych i wybierz dla nich wartości.
Pierwsza zmienna to nazwa puli. Jest on ujęty w nawiasy kwadratowe i nie może pokrywać się z nazwą żadnego użytkownika istniejącego w systemie.
[www]
Następnie podajemy nazwę użytkownika i jego grupę, w której katalogu domowym znajduje się strona.
użytkownik = nazwa użytkownika group = www-data
Określ, że pula powinna działać jako gniazdo uniksowe. Zmienna pula $ zostanie zastąpiona nazwą.
listen = /var/run/php-$pool.sock
Określamy użycie trybu statycznego, w którym określona liczba procesów puli jest tworzona podczas uruchamiania fpm. Obsługują wszystkie przychodzące żądania.
pm = static
Dlaczego taki wybór? :) Jest to najbardziej ekonomiczna opcja. Każdy proces puli będzie zajmował ilość pamięci RAM przydzielonej zmiennej memory_limit plus kilka megabajtów na każdy podłączony moduł, pamięć podręczną itp. W wersji statycznej wszystkie żądania będą przetwarzane tylko przez utworzone procesy, a nowe nie będą generowane (i zajmą cenną pamięć). W rezultacie uzyskujemy stałe zużycie pamięci.
Określ wymaganą liczbę procesów obsługujących żądania. Jest wybierany w zależności od obciążenia.
pm.max_children = 3
Zalecam dodanie następujących parametrów na końcu pliku konfiguracyjnego puli.
Katalog do umieszczania plików tymczasowych:
php_admin_value [upload_tmp_dir] = "/ var / www / username / tmp"
Katalog do przechowywania plików sesji:
php_admin_value [session.save_path] = "/ var / www / username / sessions"
Ze względów bezpieczeństwa dostęp do tych katalogów powinien być dostępny tylko dla użytkownika, z uprawnieniami, od których uruchamiana jest pula php-fpm. Ponadto nie używaj tego samego katalogu do przechowywania plików sesji i plików tymczasowych.
Limit pamięci dla uruchamiania skryptów powinien być wybrany na podstawie wymagań strony. Aby rozpocząć:
php_admin_value [memory_limit] = 50M
Określ wymagany parametr, który eliminuje lukę :
php_admin_value [cgi.fix_pathinfo] = 0
Zmienne sendmail_path i open_basedir nie są specjalnie wskazane. Zostaną przekazane jako parametry fast-cgi w pliku konfiguracyjnym nginx. W związku z tym dla każdej konkretnej witryny można zdefiniować własne ustawienia. :)
Po określeniu wszystkich niezbędnych parametrów należy ponownie załadować konfigurację php-fpm za pomocą polecenia:
# ponowne uruchomienie usługi php5-fpm
Przetwarzanie skryptów php za pomocą nginx
Pozostaje skonfigurować nginx do pracy z php-fpm. Gotowa konfiguracja
serwer { nazwa_serwera example.com ; słuchaj 80; access_log / var / log / nginx / example.com .access.log; error_log / var / log / nginx / example.com .error.log; charset utf-8; index index.php; root / var / www location / { try_files $ uri $ uri / /index.php$args; } location ~ \ .php $ { try_files $ uri = 404; fastcgi_pass unix: /run/php-www.sock; fastcgi_index index.php; to fastcgi_params; fastcgi_param SCRIPT_FILENAME $ katalog_dokumentu $ fastcgi_script_name; fastcgi_param PHP_VALUE "sendmail_path = / usr / sbin / sendmail -t -i -fmail@example.com"; fastcgi_param PHP_ADMIN_VALUE "open_basedir = / var / www / example.com /: / var / save_path /: / var / tmp_dir /"; } }
example.com zamień na swoją domenę.
Opis parametrów :
try_files $uri =404;
wyświetli błąd 404 w przeglądarce użytkownika, zamiast komunikatu, podanego w pliku wejściowym , na wypadek wystąpienia tego błędu.
fastcgi_pass
- ścieżka do gniazda php-fpm.
fastcgi_pass unix: /run/php-www.sock;
Poniższa zmienna ustawia ścieżkę do sendmaila i parametr określający adres e-mail administratora witryny. Zamień mail@example.com na własny .
fastcgi_param PHP_VALUE "sendmail_path = / usr / sbin / sendmail -t -i -fmail@example.com";
Lista katalogów dla open_basedir: katalog z witryną, katalog do zapisywania plików tymczasowych, katalog plików sesji.
fastcgi_param PHP_ADMIN_VALUE "open_basedir = / var / www / example.com /: / var / save_path /: / var / tmp_dir /";
Jeśli potrzebujesz przekazać kilka parametrów, powinieneś zrobić to w ten sposób:
fastcgi_param PHP_ADMIN_VALUE "sendmail_path = / usr / sbin / sendmail -t -i -fmail@example.com \ nopen_basedir = / var / www / example.com /: / var / save_path /: / var / tmp_dir /";
Jak widać, parametry są oddzielone podziałem wierszy: \ n .
Zapisujemy wszystkie wprowadzone przez nas zmiany i ponownie uruchamiamy nginx.
# przeładowanie usługi nginx
Zrastite nie działa, nie znajduje example.com
Dzień dobry Dyrektywa root w konfiguracji httpd ze średnikiem powinna prawdopodobnie zostać zamknięta ... a sama konfiguracja powinna być umieszczona w / etc / nginx / sites-enabled z nazwą adresu strony.
Po co tworzyć użytkowników dla każdej witryny osobno?
Co to znaczy, że jeden użytkownik został zhackowany, a inne witryny będą bezpieczne?
Czy muszę tworzyć różnych użytkowników, jeśli pracuję w systemie tylko jeden, zaloguj się do systemu przez SSH za pośrednictwem certyfikatu.
DB również nie wygląda w Internecie.
Dziękuję.
"Pozostaje skonfigurować nginx do pracy z php-fpm. Gotowy config "
i gdzie go wstawić?