שיעור : שימוש ב-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

גישה למידע סטטוס

לאחר הגדרת קובץ הסטטוס, ניתן לגשת למידע דרך הדפדפן:

סיכום

בקורס זה למדנו כיצד להשתמש ב-FastCGI וב-PHP-FPM לניהול ביצועי PHP. הבנו את ההתקנה וההגדרה של PHP-FPM, כיצד להגדיר את Nginx לעבודה עם PHP-FPM ו-FastCGI, וראינו דוגמאות לקונפיגורציה וקוד. באמצעות הידע והכלים שהוצגו כאן, תוכלו לשפר את ביצועי האתר שלכם ולוודא שהוא פועל בצורה היעילה ביותר.