כיצד להגדיר בריכות PHP-FPM נפרדות ב-NGINX
פורסם: 15 בפברואר 2025 בשעה 11:54:35 UTC
במאמר זה, אני עובר על שלבי התצורה הדרושים להפעלת מספר בריכות PHP-FPM ולחבר אליהן NGINX באמצעות FastCGI, מה שמאפשר הפרדת תהליכים ובידוד בין מארחים וירטואליים.
How to Set Up Separate PHP-FPM Pools in NGINX
המידע בפוסט זה מבוסס על NGINX 1.4.6 ו-PHP-FPM 5.5.9 הפועלים על Ubuntu Server 14.04 x64. זה עשוי להיות תקף עבור גרסאות אחרות או לא. (עדכון: אני יכול לאשר שנכון ל-Ubuntu Server 24.04, PHP-FPM 8.3 ו-NGINX 1.24.0, כל ההוראות בפוסט הזה עדיין עובדות)
ישנם מספר יתרונות להגדרה של מספר רב של מאגרי תהליכים ילדים של PHP-FPM במקום להפעיל הכל באותו מאגר. אבטחה, הפרדה/בידוד וניהול משאבים עולים בראש ככמה עיקריים.
לא משנה מה המוטיבציה שלך, הפוסט הזה יעזור לך לעשות את זה :-)
חלק 1 - הגדר מאגר PHP-FPM חדש
ראשית, עליך לאתר את הספרייה שבה PHP-FPM מאחסן את תצורות המאגר שלה. באובונטו 14.04, זה /etc/php5/fpm/pool.d כברירת מחדל. כנראה שכבר יש שם קובץ בשם www.conf , שמכיל את התצורה של מאגר ברירת המחדל. אם לא הסתכלת על הקובץ הזה לפני, רוב הסיכויים שכדאי לך לעבור עליו ולשנות את ההגדרות בו עבור ההגדרה שלך מכיוון שברירות המחדל הן עבור שרת עם עוצמה נמוכה למדי, אבל לעת עתה פשוט צור עותק שלו כדי שלא נצטרך להתחיל מאפס:
כמובן, החליפו את "mypool" בכל מה שתרצו לקרוא לבריכה שלכם.
כעת פתח את הקובץ החדש באמצעות ננו או כל עורך טקסט שאתה מעדיף והתאם אותו כך שיתאים למטרה שלך. סביר להניח שתרצה להתאים את מספרי תהליך הילד ואולי באיזה משתמש וקבוצה פועלת הבריכה, אבל שתי ההגדרות שאתה בהחלט חייב לשנות הן שם הבריכה והשקע שאליו היא מקשיבה, אחרת זה יתנגש עם הבריכה הקיימת והדברים יפסיקו לעבוד.
שם הבריכה נמצא בסמוך לראש הקובץ, מוקף בסוגריים מרובעים. כברירת מחדל זה [www] . שנה את זה למה שאתה רוצה; אני מציע את אותו השם של קובץ התצורה, אז למען הדוגמה הזו שנה אותו ל- [mypool] . אם לא תשנה את זה, נראה ש-PHP-FPM יטען רק את קובץ התצורה הראשון עם השם הזה, מה שעשוי לשבור דברים.
לאחר מכן עליך לשנות את השקע או הכתובת שאליהם אתה מאזין, המוגדרים על ידי הוראת ההאזנה . כברירת מחדל, PHP-FPM משתמש בשקעי Unix כך שהנחיית ההאזנה שלך כנראה תיראה כך:
אתה יכול לשנות אותו לכל שם חוקי שתרצה, אבל שוב, אני מציע להישאר עם משהו דומה לשם קובץ התצורה, כך שאתה יכול למשל להגדיר אותו ל:
בסדר אז, שמור את הקובץ וצא מעורך הטקסט.
חלק 2 - עדכן את תצורת המארח הווירטואלי של NGINX
כעת עליך לפתוח את קובץ המארח הוירטואלי של NGINX עם תצורת FastCGI שברצונך לשנות למאגר חדש - או ליתר דיוק, להתחבר לשקע החדש.
כברירת מחדל באובונטו 14.04, אלה מאוחסנים תחת /etc/nginx/sites-available, אך ניתן להגדיר אותם גם במקום אחר. אתה כנראה יודע הכי טוב היכן ממוקמות תצורות המארח הווירטואלי שלך ;-)
פתח את קובץ התצורה הרלוונטי בעורך הטקסט המועדף עליך וחפש את ההנחיה fastcgi_pass (שחייבת להיות בהקשר של מיקום) המגדירה את שקע PHP-FPM. עליך לשנות ערך זה כך שיתאים לתצורת מאגר ה-PHP-FPM החדשה שביצעת בשלב הראשון, אז אם תמשיך בדוגמה שלנו, תשנה את זה ל:
fastcgi_pass unix:/var/run/php5-fpm-mypool.sock;
לאחר מכן שמור וסגור גם את הקובץ. כמעט סיימת עכשיו.
חלק 3 - הפעל מחדש את PHP-FPM ו-NGINX
כדי להחיל את שינויי התצורה שביצעת, הפעל מחדש גם את PHP-FPM וגם את NGINX. יכול להיות שזה מספיק לטעון מחדש במקום להפעיל מחדש , אבל אני מוצא שזה קצת פוגע, תלוי באילו הגדרות ישתנו. במקרה הספציפי, רציתי שתהליכי הילד הישנים של PHP-FPM ימותו מיד, אז היה צורך בהפעלה מחדש של PHP-FPM, אבל עבור NGINX ייתכן שהטעינה מחדש תספיק. נסה זאת בעצמך.
sudo service nginx restart
והואלה, סיימת. אם עשית הכל נכון, המארח הווירטואלי ששינית צריך כעת להשתמש במאגר ה-PHP-FPM החדש ולא לשתף תהליכים צאצאים עם מארחים וירטואליים אחרים.