שיעור : שימוש ב-FastCGI או PHP-FPM לניהול ביצועי PHP
הקדמה
כיום, ניהול ביצועים של אתרי PHP הוא חיוני להצלחת כל אתר. FastCGI ו-PHP-FPM הם שני כלים נפוצים לשיפור ביצועי PHP על ידי ניהול הביצועים והסקלאביליות של תהליכי PHP בצורה יעילה יותר. בקורס זה נלמד כיצד להשתמש ב-FastCGI וב-PHP-FPM לניהול ביצועי PHP בצורה מקצועית.
נושא 1: מבוא ל-FastCGI ו-PHP-FPM
מה זה FastCGI?
FastCGI הוא פרוטוקול המאפשר להריץ אפליקציות במקביל לשרת הווב בצורה מהירה ויעילה יותר. זהו פרוטוקול מבוסס רשת שמאפשר לשרת הווב לתקשר עם אפליקציות חיצוניות.
מה זה PHP-FPM?
PHP-FPM (FastCGI Process Manager) הוא מנהל תהליכי FastCGI ל-PHP. הוא משפר את הביצועים של PHP על ידי ניהול חכם של תהליכים ויכולת להתמודד עם עומסים גבוהים.
נושא 2: התקנה והגדרה של PHP-FPM
התקנה של PHP-FPM
כדי להתקין PHP-FPM, השתמשו בפקודה הבאה:
sudo apt-get install php-fpm
הגדרה של PHP-FPM
קובץ ההגדרות הראשי של PHP-FPM נמצא בנתיב /etc/php/7.4/fpm/php-fpm.conf
. בקובץ זה ניתן להגדיר פרמטרים שונים כגון מספר התהליכים והזיכרון המוקצה.
דוגמה לקובץ הגדרות
; קובץ /etc/php/7.4/fpm/php-fpm.conf
[global]
pid = /run/php/php7.4-fpm.pid
error_log = /var/log/php7.4-fpm.log
[www]
listen = /run/php/php7.4-fpm.sock
listen.owner = www-data
listen.group = www-data
pm = dynamic
pm.max_children = 50
pm.start_servers = 5
pm.min_spare_servers = 5
pm.max_spare_servers = 35
pm.max_requests = 500
נושא 3: קונפיגורציה של Nginx לעבודה עם PHP-FPM
הגדרת קובץ הקונפיגורציה של Nginx
כדי להגדיר את Nginx לשימוש עם PHP-FPM, יש לערוך את קובץ הקונפיגורציה של האתר בנתיב /etc/nginx/sites-available/default
.
דוגמה לקובץ הגדרות Nginx
server {
listen 80;
server_name example.com;
root /var/www/html;
index index.php index.html index.htm;
location / {
try_files $uri $uri/ =404;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php7.4-fpm.sock;
}
location ~ /\.ht {
deny all;
}
}
נושא 4: הגדרת מערכת FastCGI
יצירת סקריפט FastCGI
כדי להשתמש ב-FastCGI, יש ליצור סקריפט PHP מיוחד שמטפל בבקשות FastCGI. ניתן להשתמש בסקריפט הבא כדוגמה:
<?php
// fastcgi_example.php
while ($req = getenv('FASTCGI_CHILDREN')) {
echo "FastCGI child process running\n";
}
?>
הגדרת FastCGI ב-Nginx
כדי להגדיר את Nginx לשימוש עם סקריפט FastCGI, יש לערוך את קובץ הקונפיגורציה של האתר ולהוסיף את ההגדרות הבאות:
server {
listen 80;
server_name example.com;
root /var/www/html;
index index.php index.html index.htm;
location / {
try_files $uri $uri/ =404;
}
location ~ \.php$ {
include fastcgi_params;
fastcgi_pass unix:/run/php/php7.4-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
location /fastcgi_example {
fastcgi_pass 127.0.0.1:9000;
include fastcgi_params;
}
location ~ /\.ht {
deny all;
}
}
נושא 5: ניטור ותקלות ב-PHP-FPM
שימוש ב-php-fpm status
כדי לנטר את מצב התהליכים של PHP-FPM, ניתן להשתמש בקובץ סטטוס. יש להגדיר זאת בקובץ ההגדרות של PHP-FPM.
דוגמה להגדרת סטטוס
; קובץ /etc/php/7.4/fpm/pool.d/www.conf
pm.status_path = /status
גישה למידע סטטוס
לאחר הגדרת קובץ הסטטוס, ניתן לגשת למידע דרך הדפדפן:
http://example.com/status
סיכום
בקורס זה למדנו כיצד להשתמש ב-FastCGI וב-PHP-FPM לניהול ביצועי PHP. הבנו את ההתקנה וההגדרה של PHP-FPM, כיצד להגדיר את Nginx לעבודה עם PHP-FPM ו-FastCGI, וראינו דוגמאות לקונפיגורציה וקוד. באמצעות הידע והכלים שהוצגו כאן, תוכלו לשפר את ביצועי האתר שלכם ולוודא שהוא פועל בצורה היעילה ביותר.