Innholdsfortegnelse
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