Jak nastavit samostatné fondy PHP-FPM v NGINX
Vydáno: 15. února 2025 v 11:49:14 UTC
V tomto článku projdu konfigurační kroky potřebné ke spuštění více fondů PHP-FPM a připojení NGINX k nim prostřednictvím FastCGI, což umožňuje oddělení procesů a izolaci mezi virtuálními hostiteli.
How to Set Up Separate PHP-FPM Pools in NGINX
Informace v tomto příspěvku jsou založeny na NGINX 1.4.6 a PHP-FPM 5.5.9 běžících na Ubuntu Server 14.04 x64. Může a nemusí platit pro jiné verze. (Aktualizace: Mohu potvrdit, že od Ubuntu Server 24.04, PHP-FPM 8.3 a NGINX 1.24.0 všechny pokyny v tomto příspěvku stále fungují)
Nastavování více poolů podřízených procesů PHP-FPM má řadu výhod spíše než spouštění všeho ve stejném fondu. Zabezpečení, oddělení/izolace a správa zdrojů se vynořují na mysl jako několik hlavních.
Bez ohledu na to, jaká je vaše motivace, tento příspěvek vám to pomůže :-)
Část 1 – Nastavení nového fondu PHP-FPM
Nejprve musíte najít adresář, kde PHP-FPM ukládá své konfigurace fondu. Na Ubuntu 14.04 je to ve výchozím nastavení /etc/php5/fpm/pool.d. Pravděpodobně již existuje soubor s názvem www.conf , který obsahuje konfiguraci pro výchozí fond. Pokud jste se na tento soubor dříve nedívali, je pravděpodobné, že byste si jej měli projít a upravit v něm nastavení pro své nastavení, protože výchozí hodnoty jsou pro poměrně poddimenzovaný server, ale zatím si jen vytvořte jeho kopii, abychom nemuseli začínat od nuly:
Samozřejmě nahraďte „mypool“ jakkoli chcete, aby se váš bazén jmenoval.
Nyní otevřete nový soubor pomocí nano nebo libovolného textového editoru, který dáváte přednost, a upravte jej tak, aby vyhovoval vašemu účelu. Pravděpodobně budete chtít vyladit čísla podřízených procesů a možná, pod kterým uživatelem a skupinou fond běží, ale dvě nastavení, která bezpodmínečně musíte změnit, jsou název fondu a soket, kterému naslouchá, jinak bude v konfliktu se stávajícím fondem a věci přestanou fungovat.
Název fondu je v horní části souboru uzavřen v hranatých závorkách. Ve výchozím nastavení je to [www] . Změňte to na cokoliv chcete; Navrhuji totéž, co jste pojmenovali konfigurační soubor, takže pro tento příklad jej změňte na [mypool] . Pokud to nezměníte, zdá se, že PHP-FPM načte pouze první konfigurační soubor s tímto názvem, což pravděpodobně pokazí věci.
Poté musíte změnit soket nebo adresu, kterou posloucháte, což je definováno direktivou listen . Ve výchozím nastavení používá PHP-FPM Unixové sokety, takže vaše direktiva naslouchání bude pravděpodobně vypadat takto:
Můžete jej změnit na jakýkoli platný název, který chcete, ale opět doporučuji držet se něčeho podobného názvu konfiguračního souboru, takže jej můžete nastavit například na:
Dobře, pak uložte soubor a ukončete textový editor.
Část 2 – Aktualizace konfigurace virtuálního hostitele NGINX
Nyní musíte otevřít soubor virtuálního hostitele NGINX s konfigurací FastCGI, kterou chcete změnit na nový fond – nebo spíše se připojit k novému soketu.
Ve výchozím nastavení na Ubuntu 14.04 jsou tyto uloženy v /etc/nginx/sites-available, ale lze je definovat i jinde. Pravděpodobně nejlépe víte, kde se nacházejí konfigurace vašeho virtuálního hostitele ;-)
Otevřete příslušný konfigurační soubor ve svém oblíbeném textovém editoru a vyhledejte direktivu fastcgi_pass (která musí být v kontextu umístění) definující socket PHP-FPM. Tuto hodnotu musíte změnit tak, aby odpovídala nové konfiguraci fondu PHP-FPM, kterou jste provedli v prvním kroku, takže v pokračování našeho příkladu byste to změnili na:
fastcgi_pass unix:/var/run/php5-fpm-mypool.sock;
Poté uložte a zavřete i tento soubor. Už jste skoro hotovi.
Část 3 – Restartujte PHP-FPM a NGINX
Chcete-li použít změny konfigurace, které jste provedli, restartujte PHP-FPM i NGINX. Možná bude stačit znovu načíst místo restartu , ale zdá se mi, že je to trochu naražené, v závislosti na tom, která nastavení se změní. V konkrétním případě jsem chtěl, aby staré podřízené procesy PHP-FPM okamžitě zemřely, takže bylo potřeba restartovat PHP-FPM, ale pro NGINX může stačit opětovné načtení. Vyzkoušejte si to sami.
sudo service nginx restart
A voila, máte hotovo. Pokud jste vše udělali správně, virtuální hostitel, který jste upravili, by nyní měl používat nový fond PHP-FPM a nesdílet podřízené procesy s žádnými jinými virtuálními hostiteli.