Miklix

כיצד להגדיר בריכות PHP-FPM נפרדות ב-NGINX

פורסם: 15 בפברואר 2025 בשעה 11:54:35 UTC
עודכן לאחרונה: 12 בינואר 2026 בשעה 8:30:14 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" בכל שם שתרצו שהבריכה שלכם תיקרא.

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

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

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

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 (שחייבת להיות בהקשר של מיקום) המגדירה את ה-socket של PHP-FPM. עליכם לשנות ערך זה כך שיתאים לתצורת מאגר PHP-FPM החדשה שיצרתם בשלב הראשון, כך שבהמשך לדוגמה שלנו תשנו זאת ל:

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