NGINX дээр тусад нь PHP-FPM Pools хэрхэн тохируулах талаар
Нийтэлсэн: 2025 оны гуравдугаар сарын 19 21:27:00 (UTC)
Хамгийн сүүлд шинэчлэгдсэн: 2026 оны нэгдүгээр сарын 12 08:30:30 (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 виртуал хостын тохиргоог шинэчлэх
Одоо та шинэ цөөрөм рүү өөрчлөхийг хүссэн FastCGI тохиргоотой NGINX виртуал хост файлыг нээх хэрэгтэй - эсвэл шинэ сокет руу холбогдох хэрэгтэй.
Ubuntu 14.04 дээр анхдагчаар эдгээр нь /etc/nginx/sites-available санд хадгалагддаг боловч өөр газар тодорхойлж болно. Та виртуал хостын тохиргоо хаана байрлаж байгааг хамгийн сайн мэдэх байх ;-)
Дуртай текст засварлагч дээрээ холбогдох тохиргооны файлыг нээгээд PHP-FPM сокетийг тодорхойлсон fastcgi_pass удирдамжийг (байршлын контекстэд байх ёстой) хайна уу. Та энэ утгыг нэгдүгээр алхам дээр хийсэн шинэ 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
За, та дууслаа. Хэрэв та бүх зүйлийг зөв хийсэн бол таны өөрчилсөн виртуал хост одоо шинэ PHP-FPM санг ашиглаж, хүүхдийн процессуудыг бусад виртуал хостуудтай хуваалцахгүй байх ёстой.
