כיצד להגדיר בריכות 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, אשר מכיל את התצורה עבור המאגר המוגדר כברירת מחדל. אם לא עיינתם בקובץ הזה בעבר, סביר להניח שכדאי לכם לעבור עליו ולשנות את ההגדרות בו עבור ההגדרה שלכם, שכן ברירות המחדל הן עבור שרתים בעלי עוצמה נמוכה למדי, אך לעת עתה פשוט צרו עותק שלו כדי שלא נצטרך להתחיל מאפס:
כמובן, החליפו את "mypool" בכל שם שתרצו שהבריכה שלכם תיקרא.
כעת פתחו את הקובץ החדש באמצעות nano או כל עורך טקסט אחר שתעדיפו והתאימו אותו למטרה שלכם. סביר להניח שתרצו לשנות את מספרי תהליכי הצאצא ואולי גם את המשתמש והקבוצה שתחתם המאגר פועל, אך שתי ההגדרות שאתם חייבים לשנות הן שם המאגר והשקע שהוא מאזין לו, אחרת הוא יתנגש עם המאגר הקיים והדברים יפסיקו לעבוד.
שם המאגר נמצא קרוב לראש הקובץ, מוקף בסוגריים מרובעים. כברירת מחדל הוא [www]. שנה זאת לכל מה שתרצה; אני מציע להשתמש באותו שם כמו שנתת לקובץ התצורה, אז לצורך הדוגמה הזו שנה אותו ל-[mypool]. אם לא תשנה זאת, נראה ש-PHP-FPM יטען רק את קובץ התצורה הראשון עם שם זה, מה שסביר להניח שישבש את העניינים.
לאחר מכן עליך לשנות את ה-socket או הכתובת שאתה מאזין לה, המוגדרת על ידי הוראת ה-listen. כברירת מחדל, PHP-FPM משתמש ב-sockets של יוניקס, כך שהוראת ה-listen שלך כנראה תיראה כך:
אתה יכול לשנות אותו לכל שם תקין שתרצה, אבל שוב, אני מציע להישאר עם משהו דומה לשם קובץ התצורה, כך שתוכל למשל להגדיר אותו ל:
בסדר, שמור את הקובץ וצא מעורך הטקסט.
חלק 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 nginx restart
ווואלה, סיימת. אם עשית הכל נכון, המארח הווירטואלי ששינית אמור כעת להשתמש במאגר PHP-FPM החדש ולא לשתף תהליכי צאצא עם מארחים וירטואליים אחרים.
