Jakiś czas temu przygotowałem poradnik dotyczący przygotowania i konfiguracji serwera WWW (Apache2 + PHP + MySQL + phpMyAdmin) dla np. serwera VPS opartego na systemie Linux Debian (konkretnie jego wersji przeznaczonej dla Raspberry Pi – Raspbian).

Po statystykach, komentarzach, jak i ilości „linków zwrotnych” widzę, że temat dla wielu z Was istotny – dlatego dziś będzie jego kontynuacja, a dokładniej modyfikacja niektórych aspektów pracy związanych w większości z obsługą plików PHP…

Apache2 MPM-Worker (Worker MPM) + PHP(5)-FPM

Zmiana ta ma głównie (choć nie tylko) na celu przyspieszenie działania bardziej rozbudowanych stron, pisanych w PHP – np. WordPress, i należy niniejszą konfiguracje traktować jako „alternatywną” dla opisanej wcześniej.

Od razu dodam, że pozostałe elementy – np. takie jak MySQL, phpMyAdmin – pozostają bez zmian, i nawet jak zdecydujecie się na instalację samego serwera Apache2 i PHP wg tego poradnika, resztę możecie instalować i/lub konfigurować tak jak w „starym” poradniku jest to napisane – zwłaszcza że nie będę dublował treści/informacji.

Instalacja serwera Apache2 + PHP(5)-FPM

Instalację zaczynamy od aktualizacji, po czym:

sudo apt-get install apache2 apache2-utils
sudo apt-get install apache2-mpm-worker
Jeśli macie już zainstalowany serwer Apache2 – instalacja „Apache2 Worker MPM” automatycznie zastąpi „Apache 2 Prefork MPM”

Następnie:

sudo apt-get install php5 php5-fpm php5-imap php5-common php5-curl php5-mcrypt php5-gd

(tu można część modułów odjąć, inne dodać – zależnie od potrzeb)

Raspbian (Raspberry Pi) i libapache2-mod-fastcgi

W przypadku Raspberry Pi i systemu Raspbian (Debian) prawdopodobnie instalacja zostanie przerwana m.in. z powodu braku pakietu „libapache2-mod-fastcgi”, dlatego w powyższej komendzie należy go pominąć:

sudo apt-get install php5 php5-fpm php5-imap php5-common php5-curl php5-mcrypt php5-gd

Modyfikujemy – jeśli jeszcze tak nie macie – plik sources.list zgodnie z tym wpisem, i następnie aktualizujemy system:

sudo apt-get update
sudo apt-get upgrade

 

Następnie:

sudo apt-get install debhelper dpatch libtool cdbs libapr1-dev apache2-threaded-dev

 

I instalujemy „libapache2-mod-fastcgi” ze źródeł:

sudo apt-get -b source libapache-mod-fastcgi
sudo dpkg -i libapache2-mod-fastcgi*.deb

Dalej działamy już standardowo, czyli:

Aktywacja modułu:

sudo a2enmod actions fastcgi alias

Konfiguracja PHP(5)-FPM

Dodajemy obsługę PHP-FPM do wszystkich vHostów (globalnie):

sudo nano /etc/apache2/conf.d/php5-fpm.conf

i wpisujemy:

<IfModule mod_fastcgi.c>
AddHandler php5-fcgi .php
Action php5-fcgi /php5-fcgi
Alias /php5-fcgi /usr/lib/cgi-bin/php5-fcgi
FastCgiExternalServer /usr/lib/cgi-bin/php5-fcgi -socket /var/run/php5-fpm.sock -pass-header Authorization
</IfModule>

<IfModule mod_alias.c>
ScriptAlias /cgi-bin/ /var/www/cgi-bin/
<Directory /var/www/cgi-bin/>
AllowOverride None
Options ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>
</IfModule>

<IfModule mod_actions.c>
Action application/x-httpd-php /cgi-bin/php5
</IfModule>

By uniknąć ew. błędów przy kopiowaniu powyższego kodu możesz pobrać gotowy plik (otwórz, lub prawym klawiszem myszy i „zapisz jako”).

I restart serwera:

sudo service apache2 restart

Można też zrestartować moduł PHP5-FPM:

sudo /etc/init.d/php5-fpm restart

Konfiguracja PHP (php.ini) w tym wariancie znajduje się w pliku:

/etc/php5/fpm/php.ini

Dodatkowy plik konfiguracyjny – czasem i w nim trzeba coś zmienić:

/etc/php5/fpm/pool.d/www.conf

PHP Info – czyli sprawdzamy czy wszystko działa

Jeśli to czysta/nowa instalacja, to można założyć, że jak się wyświetlają strony HTML i PHP to na pewno działa… ;-)

Ale można sprawdzić to bardziej profesjonalnie, w tym celu tworzymy plik „phpinfo.php” o takiej zawartości:

<?php
phpinfo();
?>

I otwieramy go w przeglądarce – powinniśmy zobaczyć stronę z parametrami serwera:

phpinfo_php-fpm

Server API: FPM/FastCGI

Gdzie standardowo (Apache2/PHP-MOD) wygląda to jakoś tak:

phpinfo_apache2-php

Server API: Apache 2.0 Handler

Po teście skasujcie plik – po co kusić los… ;-)

Czy warto?

Można zaoszczędzić trochę pamięci RAM… Na pewno czas wykonywania operacji (głównie chodzi o PHP) będzie niższy o ok 20-50%, a czasem nawet więcej… Ale jeśli macie już postawiony serwer i wszystko działa Wam stabilnie, bez zadyszek – chyba nie ma co, bo zawsze jest ryzyko „usterki” przy tej operacji… Choć „podmiana” nie jest trudna, i jeśli macie chwile czasu… ;-)

Natomiast jeśli dopiero zaczynacie – zdecydowanie warto, tu nawet nie ma co się zastanawiać.

Szybki test – standardowa konfiguracja, rozbudowana strona na WordPressie:

ab_rplb_apache2_php-mod_201407191210

Szybki test – Apache2 MPM-Worker + PHP(5)-FPM, ta sama strona na WordPressie:

ab_rplb_apache2_php-fpm_201407191200

Oba testy dzieli ok 8-10 minut, zostały zrobione na kopii tej strony przeniesionej na testowy serwer VPS (512MB RAM) w DigitalOcean (AMS2). Test był wykonywany z kolejnego testowego serwera – również w DigitalOcean, w tej samej lokalizacji – AMS2.

A dla miłośników „dobrego kina” – wersja wideo poradnika

Nijaki „P” i jego przygody opisane szerzej w komentarzach poniżej skłoniły mnie do nagrania w formie wideo poradnika niniejszego poradnika:

 

(!) Zgłoś błąd na stronie | Lub postaw nam kawę :-)
LUTy dla D-Cinelike (DJI Mini 3 Pro, DJI Avata, OSMO Pocket) od MiniFly
Wdrożenie Omnibusa w sklepie na WooCommerce
Jak (legalnie) latać dronem w Kategorii Otwartej
Patryk