Apache2 i PHP dwa bratanki

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.

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

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *

*