Hvordan konfigurere PHP-FPM med NGINX

Hvordan konfigurere PHP-FPM med NGINX

PHP-FPM (FastCGI Process Manager) er en hurtig og pålidelig måde at køre PHP-applikationer på. Det er en erstatning for den traditionelle mod_php-modul, som er kendt for at være langsommere og mindre effektiv. Når du konfigurerer PHP-FPM med NGINX, kan du forbedre ydeevnen og stabiliteten af dine PHP-drevne websteder betydeligt.

Forudsætninger

Før du begynder, skal du sikre dig, at du har følgende:

* En Linux-server med NGINX og PHP installeret
* PHP-FPM-pakken installeret
* En simpel PHP-applikation, som du kan bruge til at teste konfigurationen

Installation

1. Installer PHP-FPM (hvis det ikke allerede er installeret):


sudo apt-get install php7.4-fpm

2. Kopier standardkonfigurationsfilen:


sudo cp /etc/php/7.4/fpm/php-fpm.conf /etc/php/7.4/fpm/php-fpm-nginx.conf

3. Rediger konfigurationsfilen:


sudo nano /etc/php/7.4/fpm/php-fpm-nginx.conf

og lav følgende ændringer:

* Indstil user og group til den bruger og gruppe, som NGINX kører som (normalt www-data):

user = www-data
group = www-data

* Indstil listen til den socket, som NGINX vil kommunikere med PHP-FPM på:

listen = /run/php/php7.4-fpm.sock

* Indstil pm til fastcgi (fork er ikke understøttet af NGINX):

pm = dynamic

* Indstil pm.max_children til antallet af PHP-FPM-arbejdsprocesser, du vil bruge:

pm.max_children = 5

* Indstil pm.start_servers til antallet af PHP-FPM-arbejdsprocesser, der skal startes ved opstart:

pm.start_servers = 2

* Indstil pm.min_spare_servers til det mindste antal ledige PHP-FPM-arbejdsprocesser, der skal være tilgængelige:

pm.min_spare_servers = 1

* Indstil pm.max_spare_servers til det maksimale antal ledige PHP-FPM-arbejdsprocesser, der kan være tilgængelige:

pm.max_spare_servers = 3

4. Gem og luk konfigurationsfilen.

NGINX-konfiguration

1. Opret en ny serverblok i NGINX-konfigurationsfilen:


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. Gem og luk NGINX-konfigurationsfilen.

Genstart tjenester

1. Genstart PHP-FPM:


sudo systemctl restart php7.4-fpm.service

2. Genstart NGINX:


sudo systemctl restart nginx.service

Test konfigurationen

1. Åbn din webbrowser og gå til dit PHP-websted.
2. Opret en simpel PHP-fil, f.eks. info.php, med følgende indhold:

php
<?php
phpinfo();
?>

3. Naviger til info.php i din webbrowser.
4. Kontroller, at PHP-oplysningerne vises, hvilket bekræfter, at PHP-FPM er konfigureret korrekt med NGINX.

Avancerede indstillinger

FastCGI-indstillinger

* fastcgi_buffers: Antallet og størrelsen af ​​buffere, der bruges til at gemme FastCGI-anmodninger og -svar.
* fastcgi_buffer_size: Størrelsen på hver buffer i fastcgi_buffers.
* fastcgi_connect_timeout: Timeout-værdien for at oprette forbindelse til PHP-FPM.
* fastcgi_send_timeout: Timeout-værdien for at sende anmodninger til PHP-FPM.
* fastcgi_read_timeout: Timeout-værdien for at læse svar fra PHP-FPM.

PHP-FPM-indstillinger

* pm.max_requests: Det maksimale antal anmodninger, som en PHP-FPM-arbejdsproces kan håndtere, før den genstartes.
* pm.process_idle_timeout: Tidsperioden, som en PHP-FPM-arbejdsproces kan være inaktiv, før den afsluttes.
* php_admin_value[memory_limit]: PHP-hukommelsesgrænsen for hver PHP-script.
* php_admin_value[max_execution_time]: Den maksimale udførelsestid for hvert PHP-script.

Konklusion

Konfiguration af PHP-FPM med NGINX er en kraftfuld måde at forbedre ydeevnen og stabiliteten af ​​dine PHP-websteder på. Ved at følge trinene skitseret i denne artikel kan du nemt konfigurere en effektiv og pålidelig PHP-FPM-konfiguration, der opfylder dine specifikke behov. Husk at justere indstillingerne baseret på dit særlige websteds trafikmønstre og ressourcekrav for at opnå optimal ydeevne.

Ofte stillede spørgsmål (FAQ)

1. Hvad er fordelene ved at bruge PHP-FPM med NGINX?

* Forbedret ydeevne og stabilitet
* Reduceret hukommelsesforbrug
* Øget skalerbarhed
* Bedre fejlhåndtering

2. Hvordan ved jeg, om PHP-FPM er konfigureret korrekt?

* Tjek PHP-oplysningerne på dit websted (opret en info.php-fil og naviger til den)
* Brug php-fpm -t-kommandoen for at kontrollere konfigurationssyntaksen

3. Hvordan kan jeg justere PHP-FPM-ydeevnen?

* Juster pm-indstillingerne (f.eks. max_children, start_servers, min_spare_servers)
* Juster memory_limit og max_execution_time i php.ini
* Overvåg ydeevnen ved hjælp af værktøjer som php-fpm-status

4. Hvad skal jeg gøre, hvis PHP-FPM ikke fungerer?

* Tjek fejl-loggen (/var/log/php-fpm.log)
* Kontrollér, om PHP-FPM-socketen eksisterer (/run/php/php7.4-fpm.sock)
* Genstart PHP-FPM og NGINX-tjenesterne

5. Hvordan kan jeg sikre PHP-FPM-konfigurationen?

* Brug en stærk bruger og gruppe
* Begræns adgangen til socketen
* Indstil php_admin_flag[disable_functions] til at deaktivere farlige PHP-funktioner

6. Er der alternative måder at køre PHP på med NGINX?

* mod_php: Traditionelt PHP-modul med lavere ydeevne
* HHVM: Alternativ PHP-runtime med høj ydeevne

7. Hvilke værktøjer kan jeg bruge til at overvåge PHP-FPM?

* php-fpm-status: PHP-FPM-statusside
* Prometheus: Metrikindsamlings- og overvågningssystem
* Grafana: Dashboards og visualiseringsplatform

8. Hvor kan jeg finde yderligere oplysninger om PHP-FPM-konfiguration?

* PHP-FPM-dokumentation
* NGINX-dokumentation om FastCGI
* [Linuxize-vejledning om konfiguration af PHP-FPM](https://linuxize.com/post/how-to-configure-php-fpm