Silnik PHP jest prawie nierozłączną częścią każdej instalacji Apache2, dzięki niemu możemy korzystać z dobrodziejstw takich jak różnego rodzaju CMS (np. WordPress, Joomla, Drupala). Jednak nie będziemy korzystać z najprostszej postaci PHP, który do instalacji wymaga takich komend:
apt-get install php7.3 libapache2-mod-php7.3
systemctl restart apache2
Będziemy za to korzystać z bardziej rozbudowanego systemy dzięki PHP-FPM, za którego pomocą będziemy mogli część zapytań przechowywać w pamięci podręcznej i odwoływać się do niej, jeżeli serwer zostanie poproszony o te same dane. Pięknie sprawdza się to przy aplikacjach typu CMS.
W takim razie, wiecie już dlaczego php-fpm, dlatego zaczynajmy.
- Instalacja pakietu i najczęściej wykorzystywanych rozszerzeń (
apt-get install php7.3-fpm php7.3-curl php7.3-mysql php7.3-xmlrpc php7.3-bcmath php7.3-mbstring php7.3-xml
2. Konfiguracja
a2enmod proxy_fcgi setenvif
a2enmod actions alias proxy_fcgi setenvif
nano /etc/apache2/site-enabled/nasza_strona.conf
# przed zamknięciem </VirtualHost> dodajmy:
<FilesMatch ".+\.ph(ar|p|tml)$">
SetHandler "proxy:unix:/run/php/php7.3-fpm.sock|fcgi://localhost/"
</FilesMatch>
# zapiszmy plik i uruchommy komendę
a2enconf php7.3-fpm
3. Sprawdźmy czy php nam działa
nano /var/www/nazwa_strony/public_html/info.php
# wpiszmy tam
<?php phpinfo(INFO_MODULES); ?>
# za pomocą przeglądarki wejdźmy na
https://nasza_domena/info.php
# jeżeli wyświetliła się strona z informacjami o naszej instalacji
4. Osobna konfiguracja dla każdej strony
nano /etc/php/7.3/fpm/pool.d/nazwa_strony.conf
# wpiszmy w nim
[nazwa]
user = www-data
group = www-data
listen = /run/php/php7.3-twoja_nazwa.sock
listen.owner = www-data
listen.group = www-data
pm = dynamic
pm.max_children = 5
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 3
chdir = /var/www/twoja_strona/public_html/
5. Zmieńmy konfiguracje w Apache2 dla naszej strony
nano /etc/apache2/site-enabled/nasza_strona.conf
# Zmieńmy linijkę zaczynająca się od SetHandler na:
SetHandler "proxy:unix:/run/php/php7.3-twoja_nazwa.sock|fcgi://localhost/"
6. Zrestartujmy obie usługi
systemctl restart php7.3-fpm
systemctl restart apache2
7. Zweryfikujmy, że strona nadal działa
# otwórzmy ponownie naszą stronę, a na niej /info.php
https://nasza_domena/info.php
W ten sposób każda nasza strona jest zarządzana przez osobne procesy, które po samej nazwie wiadomo, do której strony przypisać. Dzięki temu rozwiązaniu możemy optymalizować poszczególne strony pod kątem ilości uruchamianych procesów, czasie oczekiwania na zakończenie operacji php oraz wiele, wiele innych.