Ինչպես տեղադրել առանձին PHP-FPM-ի ավազաններ NGINX-ում
Հրապարակվել է՝ 15 փետրվարի, 2025 թ., 11:55:26 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 pool
Նախ պետք է գտնել այն թղթապանակը, որտեղ PHP-FPM-ը պահում է իր ավազանի կոնֆիգուրացիաները: Ubuntu 14.04-ում սա /etc/php5/fpm/pool.d ըստ նախնականի: Հավանաբար այնտեղ արդեն կա www.conf կոչվող ֆայլ, որը պարունակում է նախնական ավազանի կոնֆիգուրացիան։ Եթե դուք չեք նայել այդ ֆայլը նախքան հնարավորությունները, դուք պետք է անցնել այն եւ tweak պարամետրերը դրա մեջ ձեր setup համար, քանի որ դեֆոլտները բավականին ենթակա սերվերի համար, բայց հիմա պարզապես պատճենել այն, այնպես որ մենք պետք չէ սկսել սկավառակից.
Իհարկե, «mypool»-ը փոխարինեք նրանով, ինչ ուզում եք, որ ձեր ավազանը կոչվի:
Այժմ բացեք նոր ֆայլը նանոյի կամ ցանկացած տեքստային խմբագրիչի միջոցով եւ հարմարեցրեք այն ձեր նպատակին համապատասխան: Դուք հավանաբար կցանկանաք փոխել երեխայի մշակման համարները եւ հավանաբար, թե որ օգտագործողի եւ խմբի տակ է վազում ավազանը, բայց այն երկու պարամետրերը, որոնք դուք բացարձակապես պետք է փոխեք, ավազանի անունն են եւ այն պարանոցը, որը նա լսում է, հակառակ դեպքում այն կհակառակվի գոյություն ունեցող ավազանի հետ եւ ամեն ինչ կդադարի աշխատել:
Ավազանի անվանումը գտնվում է ֆայլի վերեւի մասում, փակցված է քառակուսի փակագծերով: Նախնական համաձայնությամբ այն [www]է: Փոխեք սա ինչ ուզում եք, Առաջարկում եմ նույնը, ինչ դուք անվանեցիք կոնֆիգուրացիոն ֆայլը, ուստի հանուն այս օրինակի փոխեք այն [mypool] : Եթե չփոխեք այն, թվում է, որ PHP-FPM-ը կբեռնի միայն առաջին կոնֆիգուրացիոն ֆայլը այդ անունով, որը, ամենայն հավանականությամբ, կկոտրի իրերը:
Այնուհետեւ անհրաժեշտ է փոխել ձեր լսած կոճակը կամ հասցեն, որը սահմանվում է լսարանի հրահանգով: Նախնական տվյալներով PHP-FPM օգտագործում է Unix sockets այնպես, որ ձեր լսարանի հրահանգը հավանաբար նման կլինի հետեւյալին.
Դուք կարող եք փոխել այն ինչ որ վավերական անուն դուք ցանկանում եք, բայց կրկին, ես առաջարկում եմ կպչել մի բան, որը նման է կոնֆիգուրացիոն ֆայլանունը, այնպես որ դուք կարող եք, օրինակ, սահմանել այն.
Alrightythen, պահպանեք ֆայլը եւ դուրս գրեք տեքստային խմբագրիչից:
Մաս 2 – Թարմացնել NGINX վիրտուալ host configuration
Այժմ դուք պետք է բացել NGINX վիրտուալ host ֆայլը FastCGI կոնֆիգուրացիայի հետ, որը ցանկանում եք փոխել նոր pool – կամ ավելի շուտ, միացնել նոր socket.
Ubuntu 14.04-ի դեֆոլտի միջոցով սրանք պահվում են /etc/nginx/sites-available-ի տակ, բայց կարող են սահմանվել նաեւ այլ վայրերում: Դուք հավանաբար լավագույնս գիտեք, թե որտեղ են գտնվում ձեր վիրտուալ հյուրընկալող կոնֆիգուրացիաները ;-)
Բացեք համապատասխան կոնֆիգուրացիոն ֆայլը ձեր սիրած տեքստային խմբագրիչում եւ փնտրեք fastcgi_pass հրահանգը (որը պետք է լինի տեղակայման համատեքստում) php-FPM socket սահմանող: Դուք պետք է փոխեք այս արժեքը, որպեսզի այն համապատասխանի նոր 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
Եվ voila, դու ավարտվում ես: Եթե դուք ամեն ինչ ճիշտ եք արել, ապա ձեր կողմից ձեւափոխված վիրտուալ հյուրընկալողը պետք է այժմ օգտագործի նոր PHP-FPM ավազանը եւ չկիսվի մանկական պրոցեսորներով որեւէ այլ վիրտուալ հյուրընկալի հետ: