Miklix

כיצד להגדיר בריכות 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 , שמכיל את התצורה של מאגר ברירת המחדל. אם לא הסתכלת על הקובץ הזה לפני, רוב הסיכויים שכדאי לך לעבור עליו ולשנות את ההגדרות בו עבור ההגדרה שלך מכיוון שברירות המחדל הן עבור שרת עם עוצמה נמוכה למדי, אבל לעת עתה פשוט צור עותק שלו כדי שלא נצטרך להתחיל מאפס:

sudo cp www.conf mypool.conf

כמובן, החליפו את "mypool" בכל מה שתרצו לקרוא לבריכה שלכם.

כעת פתח את הקובץ החדש באמצעות ננו או כל עורך טקסט שאתה מעדיף והתאם אותו כך שיתאים למטרה שלך. סביר להניח שתרצה להתאים את מספרי תהליך הילד ואולי באיזה משתמש וקבוצה פועלת הבריכה, אבל שתי ההגדרות שאתה בהחלט חייב לשנות הן שם הבריכה והשקע שאליו היא מקשיבה, אחרת זה יתנגש עם הבריכה הקיימת והדברים יפסיקו לעבוד.

שם הבריכה נמצא בסמוך לראש הקובץ, מוקף בסוגריים מרובעים. כברירת מחדל זה [www] . שנה את זה למה שאתה רוצה; אני מציע את אותו השם של קובץ התצורה, אז למען הדוגמה הזו שנה אותו ל- [mypool] . אם לא תשנה את זה, נראה ש-PHP-FPM יטען רק את קובץ התצורה הראשון עם השם הזה, מה שעשוי לשבור דברים.

לאחר מכן עליך לשנות את השקע או הכתובת שאליהם אתה מאזין, המוגדרים על ידי הוראת ההאזנה . כברירת מחדל, PHP-FPM משתמש בשקעי Unix כך שהנחיית ההאזנה שלך כנראה תיראה כך:

listen = /var/run/php5-fpm.sock

אתה יכול לשנות אותו לכל שם חוקי שתרצה, אבל שוב, אני מציע להישאר עם משהו דומה לשם קובץ התצורה, כך שאתה יכול למשל להגדיר אותו ל:

listen = /var/run/php5-fpm-mypool.sock

בסדר אז, שמור את הקובץ וצא מעורך הטקסט.


חלק 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 php5-fpm restart
sudo service nginx restart

והואלה, סיימת. אם עשית הכל נכון, המארח הווירטואלי ששינית צריך כעת להשתמש במאגר ה-PHP-FPM החדש ולא לשתף תהליכים צאצאים עם מארחים וירטואליים אחרים.

שתפו בבלוסקישתפו בפייסבוקשתפו בלינקדאיןשתפו ב-Tumblrשתפו ב-Xשתפו בלינקדאיןהצמד בפינטרסט

מיקל בנג כריסטנסן

על המחבר

מיקל בנג כריסטנסן
מיקל הוא היוצר והבעלים של miklix.com. יש לו למעלה מ-20 שנות ניסיון כמתכנת מחשבים/מפתח תוכנה מקצועי וכיום הוא מועסק במשרה מלאה בתאגיד IT אירופאי גדול. כשהוא לא כותב בלוג, הוא מבלה את זמנו הפנוי במגוון עצום של תחומי עניין, תחביבים ופעילויות, שעשויים לבוא לידי ביטוי במידה מסוימת במגוון הנושאים המכוסים באתר זה.