Ինչպես տեղադրել առանձին PHP-FPM-ի ավազաններ NGINX-ում
Հրապարակվել է՝ 15 փետրվարի, 2025 թ., 11:55:26 UTC
Վերջին թարմացումը՝ 12 հունվարի, 2026 թ., 08:30:20 UTC
Այս հոդվածում ես կանդրադառնամ PHP-FPM մի քանի լողավազաններ գործարկելու և NGINX-ը դրանց FastCGI-ի միջոցով միացնելու համար անհրաժեշտ կարգավորման քայլերին, ինչը թույլ կտա վիրտուալ հոսթերի միջև գործընթացների տարանջատում և մեկուսացում։
How to Set Up Separate PHP-FPM Pools in NGINX
Այս գրառման մեջ տեղեկատվությունը հիմնված է Ubuntu Server 14.04 x64-ի վրա աշխատող NGINX 1.4.6 և PHP-FPM 5.5.9 տարբերակների վրա: Այն կարող է վավեր լինել կամ չլինել այլ տարբերակների համար: (Թարմացում. կարող եմ հաստատել, որ Ubuntu Server 24.04, PHP-FPM 8.3 և NGINX 1.24.0 տարբերակների համար այս գրառման բոլոր հրահանգները դեռևս գործում են):
Մի քանի PHP-FPM ենթապրոցեսների լողավազաններ կարգավորելը մի շարք առավելություններ ունի, քան ամեն ինչ նույն լողավազանում աշխատեցնելը։ Անվտանգությունը, տարանջատումը/մեկուսացումը և ռեսուրսների կառավարումը մի քանի հիմնական առավելություններից են։
Անկախ ձեր մոտիվացիայից, այս գրառումը կօգնի ձեզ դա անել :-)
Մաս 1 – Ստեղծեք նոր PHP-FPM լողավազան
Նախ, դուք պետք է գտնեք այն գրացուցակը, որտեղ PHP-FPM-ը պահում է իր լողավազանի կոնֆիգուրացիաները: Ubuntu 14.04-ում սա լռելյայն /etc/php5/fpm/pool.d է: Հավանաբար այնտեղ արդեն կա www.conf անունով ֆայլ, որը պարունակում է լռելյայն լողավազանի կոնֆիգուրացիան: Եթե դուք նախկինում չեք նայել այդ ֆայլը, հավանական է, որ դուք պետք է այն դիտեք և փոփոխեք դրա կարգավորումները ձեր կարգավորման համար, քանի որ լռելյայն արժեքները նախատեսված են բավականին թույլ սերվերի համար, բայց առայժմ պարզապես պատճենեք այն, որպեսզի մենք ստիպված չլինենք սկսել զրոյից:
Իհարկե, «mypool»-ը փոխարինեք այն անվանումով, ինչպես ուզում եք, որ ձեր լողավազանը կոչվի։
Հիմա բացեք նոր ֆայլը՝ օգտագործելով nano կամ ձեր նախընտրած ցանկացած տեքստային խմբագրիչ և կարգավորեք այն ձեր նպատակին համապատասխան։ Դուք հավանաբար կցանկանաք փոփոխել դուստր պրոցեսների համարները և հնարավոր է՝ որ օգտատիրոջ և խմբի ներքո է լողավազանը գործում, բայց երկու կարգավորումները, որոնք դուք անպայման պետք է փոխեք, լողավազանի անունն ու այն սոքեթն են, որին այն լսում է, հակառակ դեպքում այն կհակասի առկա լողավազանի հետ, և ամեն ինչ կդադարի աշխատել։
Ֆայլի վերևի մասում գտնվող լողավազանի անունը գտնվում է քառակուսի փակագծերի մեջ։ Ըստ լռելյայնի՝ այն [www] է։ Փոխեք այն ձեր ուզածով. ես առաջարկում եմ նույն անունը տալ, ինչ դուք անվանեցիք կարգավորման ֆայլը, այնպես որ, այս օրինակի համար փոխեք այն [mypool]-ի։ Եթե չփոխեք այն, PHP-FPM-ը, կարծես, կբեռնի միայն առաջին կարգավորման ֆայլը այդ անունով, ինչը, հավանաբար, կխաթարի աշխատանքը։
Այնուհետև դուք պետք է փոխեք լսվող սոքեթը կամ հասցեն, որը սահմանվում է listen հրահանգով: Ըստ լռելյայնի, PHP-FPM-ը օգտագործում է Unix սոքեթներ, ուստի ձեր listen հրահանգը, հավանաբար, կունենա հետևյալ տեսքը՝
Կարող եք այն փոխել ցանկացած վավեր անվանմամբ, բայց կրկին, խորհուրդ եմ տալիս օգտագործել կարգավորման ֆայլի անվանը նման մի բան, որպեսզի, օրինակ, այն սահմանեք հետևյալ կերպ՝
Լավ, ապա պահպանեք ֆայլը և դուրս եկեք տեքստային խմբագրիչից։
Մաս 2 – NGINX վիրտուալ հոսթի կոնֆիգուրացիայի թարմացում
Հիմա դուք պետք է բացեք NGINX վիրտուալ հոսթի ֆայլը FastCGI կոնֆիգուրացիայով, որը ցանկանում եք փոխել նոր լողավազանի, կամ ավելի ճիշտ՝ միանալ նոր սոքեթին։
Ubuntu 14.04-ում լռելյայնորեն դրանք պահվում են /etc/nginx/sites-available-ում, բայց կարող են սահմանվել նաև այլուր: Դուք հավանաբար ավելի լավ գիտեք, թե որտեղ են գտնվում ձեր վիրտուալ հոսթի կոնֆիգուրացիաները ;-)
Բացեք համապատասխան կարգավորման ֆայլը ձեր նախընտրած տեքստային խմբագրիչում և փնտրեք fastcgi_pass դիրեկտիվը (որը պետք է լինի location համատեքստում), որը սահմանում է PHP-FPM socket-ը: Դուք պետք է փոխեք այս արժեքը այնպես, որ այն համապատասխանի առաջին քայլում կատարված PHP-FPM pool-ի նոր կարգավորմանը, ուստի շարունակելով մեր օրինակը՝ դուք կփոխեք սա հետևյալ կերպ.
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 լողավազանը և չկիսվի դուստր պրոցեսներով որևէ այլ վիրտուալ հոսթի հետ։
