Konfigurere PHP-FPM med NGINX for Optimal Ytelse
PHP-FPM (FastCGI Process Manager) fremstår som en rask og pålitelig løsning for å drifte PHP-applikasjoner. Den fungerer som et overlegent alternativ til den mer tradisjonelle mod_php-modulen, som ofte er kjent for sin lavere hastighet og effektivitet. Ved å konfigurere PHP-FPM i samspill med NGINX, kan man oppnå en markant forbedring i ytelsen og stabiliteten til dine PHP-drevne nettsider.
Nødvendige Forberedelser
Før du starter, sørg for at du har følgende på plass:
* En Linux-server med NGINX og PHP installert.
* PHP-FPM-pakken er installert på serveren.
* En enkel PHP-applikasjon som kan benyttes for å verifisere konfigurasjonen.
Installasjonsprosedyre
1. Installer PHP-FPM (hvis det ikke allerede er gjort):
sudo apt-get install php7.4-fpm
2. Lag en kopi av standard konfigurasjonsfil:
sudo cp /etc/php/7.4/fpm/php-fpm.conf /etc/php/7.4/fpm/php-fpm-nginx.conf
3. Rediger konfigurasjonsfilen:
sudo nano /etc/php/7.4/fpm/php-fpm-nginx.conf
Gjør de følgende justeringene:
* Sett user
og group
til brukeren og gruppen NGINX kjører som (normalt www-data
):
user = www-data
group = www-data
* Sett listen
til socket-en som NGINX vil kommunisere med PHP-FPM via:
listen = /run/php/php7.4-fpm.sock
* Sett pm
til dynamic (fork støttes ikke av NGINX):
pm = dynamic
* Konfigurer pm.max_children
til ønsket antall PHP-FPM-arbeidsprosesser:
pm.max_children = 5
* Juster pm.start_servers
til antall PHP-FPM-arbeidsprosesser som skal startes ved oppstart:
pm.start_servers = 2
* Definer pm.min_spare_servers
til det minimale antall ledige PHP-FPM-arbeidsprosesser som skal være tilgjengelige:
pm.min_spare_servers = 1
* Bestem pm.max_spare_servers
til det maksimale antall ledige PHP-FPM-arbeidsprosesser som kan være tilgjengelige:
pm.max_spare_servers = 3
4. Lagre og avslutt konfigurasjonsfilen.
NGINX-Konfigurasjon
1. Opprett en ny serverblokk i NGINX-konfigurasjonsfilen:
server {
listen 80;
server_name example.com;
root /var/www/example.com;
location / {
try_files $uri $uri/ /index.php$is_args$args;
}
location ~ \.php$ {
fastcgi_pass unix:/run/php/php7.4-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $request_filename;
include fastcgi_params;
}
}
2. Lagre og avslutt NGINX-konfigurasjonsfilen.
Omstart av Tjenester
1. Start PHP-FPM på nytt:
sudo systemctl restart php7.4-fpm.service
2. Start NGINX på nytt:
sudo systemctl restart nginx.service
Verifisering av Konfigurasjonen
1. Åpne nettleseren din og naviger til ditt PHP-nettsted.
2. Opprett en enkel PHP-fil, for eksempel info.php
, med følgende innhold:
<?php
phpinfo();
?>
3. Naviger til info.php
i nettleseren din.
4. Bekreft at PHP-informasjonen vises korrekt, noe som indikerer at PHP-FPM er satt opp riktig med NGINX.
Avanserte Innstillinger
FastCGI-Parameter
* fastcgi_buffers: Antallet og størrelsen på buffere som benyttes for å lagre FastCGI-forespørsler og -responser.
* fastcgi_buffer_size: Størrelsen på hver enkelt buffer i fastcgi_buffers
.
* fastcgi_connect_timeout: Tidsbegrensningen for å etablere en forbindelse til PHP-FPM.
* fastcgi_send_timeout: Tidsbegrensningen for å sende forespørsler til PHP-FPM.
* fastcgi_read_timeout: Tidsbegrensningen for å lese responser fra PHP-FPM.
PHP-FPM-Innstillinger
* pm.max_requests: Det maksimale antall forespørsler en PHP-FPM-arbeidsprosess kan håndtere før den blir omstartet.
* pm.process_idle_timeout: Tidsperioden en PHP-FPM-arbeidsprosess kan være inaktiv før den avsluttes.
* php_admin_value[memory_limit]: PHP-minnegrensen for hvert enkelt PHP-skript.
* php_admin_value[max_execution_time]: Den maksimale utførelsestiden for hvert PHP-skript.
Oppsummering
Konfigurering av PHP-FPM i kombinasjon med NGINX er en effektiv metode for å optimalisere ytelsen og stabiliteten til dine PHP-nettsider. Ved å følge trinnene beskrevet i denne veiledningen, kan du enkelt sette opp en robust og pålitelig PHP-FPM-konfigurasjon som tilfredsstiller dine unike behov. Husk å tilpasse innstillingene basert på nettsidens spesifikke trafikk- og ressurskrav for å oppnå optimal ytelse.
Ofte Stilte Spørsmål (FAQ)
1. Hva er fordelene med å bruke PHP-FPM sammen med NGINX?
* Forbedret ytelse og stabilitet
* Redusert minneforbruk
* Økt skalerbarhet
* Bedre feilhåndtering
2. Hvordan kan jeg være sikker på at PHP-FPM er korrekt konfigurert?
* Verifiser PHP-informasjonen på din nettside (lag en info.php
-fil og naviger til den)
* Bruk php-fpm -t
-kommandoen for å sjekke konfigurasjonssyntaksen
3. Hvordan kan jeg finjustere PHP-FPM-ytelsen?
* Juster pm
-innstillingene (f.eks. max_children
, start_servers
, min_spare_servers
)
* Modifiser memory_limit
og max_execution_time
i php.ini
* Overvåk ytelsen ved bruk av verktøy som php-fpm-status
4. Hva bør jeg gjøre hvis PHP-FPM ikke fungerer?
* Se i feilloggen (/var/log/php-fpm.log
)
* Sjekk om PHP-FPM-socket-en eksisterer (/run/php/php7.4-fpm.sock
)
* Start PHP-FPM og NGINX-tjenestene på nytt
5. Hvordan kan jeg sikre PHP-FPM-konfigurasjonen?
* Benytt en sterk bruker og gruppe
* Begrens tilgangen til socket-en
* Sett php_admin_flag[disable_functions]
for å deaktivere farlige PHP-funksjoner
6. Finnes det alternative metoder for å kjøre PHP med NGINX?
* mod_php: Tradisjonell PHP-modul med lavere ytelse
* HHVM: Alternativ PHP-runtime med høy ytelse
7. Hvilke verktøy kan jeg bruke for å overvåke PHP-FPM?
* php-fpm-status: PHP-FPM-statusside
* Prometheus: System for innsamling og overvåking av metrikk
* Grafana: Dashbord og visualiseringsplattform
8. Hvor kan jeg finne ytterligere informasjon om PHP-FPM-konfigurasjon?
* PHP-FPM Dokumentasjon
* NGINX Dokumentasjon om FastCGI
* [Linuxize Veiledning om konfigurering av PHP-FPM](https://linuxize.com/post/how-to-configure-php-fpm)