V tomto příspěvku bych chtěl dát ucelený návod, jak si na vašem PC či serveru nainstalovat jednoduše webový server v operačním systému Debian GNU/Linux, kde poběží webový server Apache, PHP (Hypertext Preprocessor), FPM (FastCGI Process Manager) a databázový server MariaDB (fork MySQL).
Proč (ne)zvolit FPM?
Varianta FPM je dle mého názoru jedna z nejvhodnějších variant pro menší webové servery. V systémovém výpisu procesů lze snadno identifikovat procesy jednotlivých domén, jednoduše se u nich mění verze PHP i další nastavení. Zkrátka to bez většího úsilí přináší spoustu praktických výhod.
U větších serverů pak již pravděpodobně dává větší smysl zvolit (Fast)CGI, kdy v různých konfiguracích procesů v rámci FPM by mohlo docházet k daleko větší spotřebě prostředků serveru, případně jeho přetěžování. Vždy ale záleží na konkrétní konfiguraci a co přesně je na serveru provozováno za služby.
Provozovat server jen s Apache modulem mod_php dává smysl pravděpodobně asi jen u nějakého Docker kontejneru či podobné služby, ale pro běžný webový server mi to smysl nedává.
Nastavení repozitářů
Jako první si na serveru nadefinujeme repozitáře, odkud budeme jednotlivé balíky instalovat. V tomto návodu budu vycházet z verze Debianu bookworm a pro PHP budu používat ještě repozitáře Ondřeje Surého, kdy ve stabilní verzi Debianu nejsou dostupné novější a třeba ani starší verze PHP, mezi kterými chci mít možnost přepínat. V příkazech to může vypadat nějak takto:
Instalace základních balíků
Jako další krok nainstalujeme všechny potřebné balíky pro Apache, PHP (verze 5.6, 7.0, 7.1, 7.2, 7.3, 7.4, 8.1, 8.2 a 8.3), FPM a MariaDB. Uděláme to tak, že si vytvoříme soubor se seznamem balíků a ten pak předhodíme programu apt:
Nastavení PHP modulů a konfigurace
Nyní začneme s konfigurací PHP a to konkrétně tím, že povolíme jednotlivé moduly a konfiguraci:
Nastavení suexec
Jelikož uživatele webu budeme v dalším postupu používat, tak si jej můžeme vytvořit a rovnou jej zahrnout do nastavení suexecu ve virtualhostu. Uživatele vytvoříme jednoduše např. takto:
Do konfigurace virtualhosta pak můžeme přidat:
Konfigurace poolů
V rámci nastavení FPM si samozřejmě budeme definovat pro každou doménu její pool, kde se dá definovat nastavení uživatele, socketu, individuální nastavení pro danou doménu apod. Nejdříve smažeme nastavení předdefinované v základní instalaci:
Následně již můžeme nastavit pool pro konkrétní doménu a to pro všechny verze PHP, kdy pak bude snadné mezi jednotlivými verzemi přepínat a vše bude již přednastavené. Nejdříve vytvoříme konfigurační soubor pro všechny verze PHP a pak rovnou budeme tyto soubory editovat, např. takto:
Obsah souborů může vypadat nějak takto (5.6-fpm samozřejmě vždy přepíšeme na odpovídající verzi PHP):
Nastavení pro VirtualHost
Jak zahrnout nastavení FPM do konfigurace virtualhosta? Já používám obdobné nastavení jako toto:
Jednoduchý základní virtualhost (který zatím nepočítá se SSL a dalším nastavením, které si můžete uzpůsobit dle svého) by tedy pak mohl vypadat nějak takto:
Spuštění služeb
Až budeme mít vše nastavené, tak samozřejmě stačí všechny služby nastartovat: