Konfigurer PHP-FPM med NGINX: Komplett guide for nybegynnere


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)