NGINX ਵਿੱਚ ਵੱਖਰੇ PHP-FPM ਪੂਲ ਕਿਵੇਂ ਸੈੱਟਅੱਪ ਕਰੀਏ
ਪ੍ਰਕਾਸ਼ਿਤ: 19 ਮਾਰਚ 2025 9:27:05 ਬਾ.ਦੁ. 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 ਆਪਣੀਆਂ ਪੂਲ ਕਾਨਫਿਗਰੇਸ਼ਨਾਂ ਨੂੰ ਸਟੋਰ ਕਰਦਾ ਹੈ। Ubuntu 14.04 'ਤੇ, ਇਹ ਡਿਫ਼ਾਲਟ ਰੂਪ ਵਿੱਚ /etc/php5/fpm/pool.d ਹੁੰਦਾ ਹੈ। ਸ਼ਾਇਦ ਉੱਥੇ ਪਹਿਲਾਂ ਹੀ ਇੱਕ ਫਾਈਲ ਹੋਵੇ ਜਿਸ ਦਾ ਨਾਮ www.conf ਹੋਵੇ, ਜੋ ਡਿਫ਼ਾਲਟ ਪੂਲ ਲਈ ਕਾਨਫਿਗਰੇਸ਼ਨ ਰੱਖਦੀ ਹੈ। ਜੇ ਤੁਸੀਂ ਪਹਿਲਾਂ ਇਸ ਫਾਈਲ ਨੂੰ ਨਹੀਂ ਦੇਖਿਆ ਤਾਂ ਇਹ ਮੰਨਣਾ ਚਾਹੀਦਾ ਹੈ ਕਿ ਤੁਸੀਂ ਇਸ ਨੂੰ ਦੇਖ ਕੇ ਇਸ ਵਿੱਚ ਕੁਝ ਸੈਟਿੰਗਾਂ ਨੂੰ ਅਪਣੇ ਸੈਟਅਪ ਲਈ ਢਾਲੋ, ਕਿਉਂਕਿ ਡਿਫ਼ਾਲਟ ਇੱਕ ਕਾਫੀ ਥੋੜ੍ਹੇ ਸਮਰੱਥ ਸਰਵਰ ਲਈ ਹੁੰਦੇ ਹਨ, ਪਰ ਅਜੇ ਲਈ ਇਸ ਦੀ ਇੱਕ ਕਾਪੀ ਬਣਾ ਲਓ ਤਾਂ ਕਿ ਸਾਨੂੰ ਸਿੱਧਾ ਸ਼ੁਰੂ ਨਾ ਕਰਨਾ ਪਏ:
ਬਿਲਕੁਲ, “mypool” ਨੂੰ ਤੁਸੀਂ ਜੋ ਵੀ ਆਪਣੇ ਪੂਲ ਦਾ ਨਾਮ ਰੱਖਣਾ ਚਾਹੁੰਦੇ ਹੋ ਉਸ ਨਾਲ ਬਦਲੋ।
ਹੁਣ ਨਵੀਂ ਫਾਈਲ ਨੂੰ nano ਜਾਂ ਆਪਣੇ ਮਨਪਸੰਦ ਟੈਕਸਟ ਐਡੀਟਰ ਨਾਲ ਖੋਲ੍ਹੋ ਅਤੇ ਇਸ ਨੂੰ ਆਪਣੇ ਮਕਸਦ ਲਈ ਢਾਲੋ। ਤੁਹਾਨੂੰ ਸ਼ਾਇਦ ਬੱਚੇ ਪ੍ਰੋਸੈਸ ਨੰਬਰਾਂ ਅਤੇ ਸੰਭਵ ਤੌਰ 'ਤੇ ਉਹ ਯੂਜ਼ਰ ਅਤੇ ਗਰੁੱਪ ਬਦਲਣੀ ਚਾਹੀਦੀ ਹੈ ਜਿਹਦੇ ਅਧੀਨ ਪੂਲ ਚੱਲਦਾ ਹੈ, ਪਰ ਦੋ ਸੈਟਿੰਗਾਂ ਜੋ ਤੁਹਾਨੂੰ ਬਿਲਕੁਲ ਬਦਲਣੀਆਂ ਚਾਹੀਦੀਆਂ ਹਨ ਉਹ ਹਨ ਪੂਲ ਦਾ ਨਾਮ ਅਤੇ ਉਸ ਸਾਕਟ ਨੂੰ ਜੋ ਇਹ ਸੁਣ ਰਿਹਾ ਹੈ, ਨਹੀਂ ਤਾਂ ਇਹ ਮੌਜੂਦਾ ਪੂਲ ਨਾਲ ਟਕਰਾਅ ਕਰੇਗਾ ਅਤੇ ਚੀਜ਼ਾਂ ਕੰਮ ਕਰਨਾ ਬੰਦ ਕਰ ਦਿਓਂਗੀਆਂ।
ਪੂਲ ਦਾ ਨਾਮ ਫਾਈਲ ਦੇ ਉਪਰਲੇ ਹਿੱਸੇ ਵਿੱਚ ਹੁੰਦਾ ਹੈ, ਜੋ ਵਰਗੇ ਬ੍ਰੈਕਟਾਂ ਵਿੱਚ ਲਿਖਿਆ ਜਾਂਦਾ ਹੈ। ਡਿਫ਼ਾਲਟ ਰੂਪ ਵਿੱਚ ਇਹ [www] ਹੁੰਦਾ ਹੈ। ਇਸ ਨੂੰ ਤੁਸੀਂ ਜੋ ਵੀ ਚਾਹੁੰਦੇ ਹੋ, ਉਸ ਨਾਲ ਬਦਲੋ; ਮੈਂ ਇਹ ਸਲਾਹ ਦਿੰਦਾ ਹਾਂ ਕਿ ਇਸ ਨੂੰ ਫਾਈਲ ਦੇ ਨਾਮ ਨਾਲ ਮਿਲਾ ਕੇ ਰੱਖੋ, ਤਾਂ ਜੋ ਇਸ ਉਦਾਹਰਨ ਦੇ ਲਈ ਇਸ ਨੂੰ [mypool] ਵਿੱਚ ਬਦਲ ਦਿਓ। ਜੇ ਤੁਸੀਂ ਇਸ ਨੂੰ ਨਹੀਂ ਬਦਲਦੇ, ਤਾਂ ਲੱਗਦਾ ਹੈ ਕਿ PHP-FPM ਸਿਰਫ਼ ਪਹਿਲੀ ਕਾਨਫਿਗਰੇਸ਼ਨ ਫਾਈਲ ਨੂੰ ਲੋਡ ਕਰੇਗਾ ਜਿਸਦਾ ਨਾਮ ਉਹ ਹੈ, ਜੋ ਸ਼ਾਇਦ ਚੀਜ਼ਾਂ ਨੂੰ ਟੁੱਟਦਾ ਹੈ।
ਫਿਰ ਤੁਹਾਨੂੰ ਉਸ ਸਾਕਟ ਜਾਂ ਐਡਰੈੱਸ ਨੂੰ ਬਦਲਣਾ ਪਏਗਾ ਜਿਸਨੂੰ ਤੁਸੀਂ ਸੁਣ ਰਹੇ ਹੋ, ਜੋ listen ਡਾਇਰੈਕਟਿਵ ਦੁਆਰਾ ਪਰਿਭਾਸ਼ਿਤ ਕੀਤਾ ਜਾਂਦਾ ਹੈ। ਡਿਫ਼ਾਲਟ ਰੂਪ ਵਿੱਚ, PHP-FPM ਯੂਨਿਕਸ ਸਾਕਟਸ ਦੀ ਵਰਤੋਂ ਕਰਦਾ ਹੈ ਇਸ ਲਈ ਤੁਹਾਡਾ listen ਡਾਇਰੈਕਟਿਵ ਸ਼ਾਇਦ ਇਸ ਤਰ੍ਹਾਂ ਦਿਸੇਗਾ:
ਤੁਸੀਂ ਇਸਨੂੰ ਕਿਸੇ ਵੀ ਵੈਧ ਨਾਮ ਨਾਲ ਬਦਲ ਸਕਦੇ ਹੋ, ਪਰ ਫਿਰ ਵੀ, ਮੈਂ ਇਹ ਸਲਾਹ ਦਿੰਦਾ ਹਾਂ ਕਿ ਫਾਈਲ ਦੇ ਨਾਮ ਨਾਲ ਕੁਝ ਮਿਲਦਾ ਜੁਲਦਾ ਰੱਖੋ, ਤਾਂ ਕਿ ਤੁਸੀਂ ਇਸਨੂੰ ਉਦਾਹਰਨ ਵਜੋਂ ਇਸ ਤਰ੍ਹਾਂ ਸੈੱਟ ਕਰ ਸਕਦੇ ਹੋ:
ਠੀਕ ਹੈ, ਫਾਈਲ ਨੂੰ ਸੇਵ ਕਰੋ ਅਤੇ ਟੈਕਸਟ ਐਡੀਟਰ ਤੋਂ ਬਾਹਰ ਨਿਕਲ ਜਾਓ।
ਭਾਗ 2 – NGINX ਵਰਚੁਅਲ ਹੋਸਟ ਕਾਨਫਿਗਰੇਸ਼ਨ ਨੂੰ ਅਪਡੇਟ ਕਰੋ
ਹੁਣ ਤੁਹਾਨੂੰ NGINX ਵਰਚੁਅਲ ਹੋਸਟ ਫਾਈਲ ਨੂੰ ਖੋਲ੍ਹਣਾ ਪਏਗਾ ਜਿਸ ਵਿੱਚ ਫਾਸਟਸੀਜੀ ਆਰਥਿਕ ਬਦਲਾਅ ਹੈ ਜੋ ਤੁਸੀਂ ਨਵੇਂ ਪੂਲ ਨਾਲ ਜੋੜਨਾ ਚਾਹੁੰਦੇ ਹੋ – ਜਾਂ ਬਿਲਕੁਲ, ਨਵੇਂ ਸਾਕਟ ਨਾਲ ਜੁੜਨਾ।
Ubuntu 14.04 'ਤੇ ਡਿਫ਼ਾਲਟ ਰੂਪ ਵਿੱਚ ਇਹ ਫਾਈਲਾਂ /etc/nginx/sites-available ਵਿੱਚ ਸਟੋਰ ਕੀਤੀਆਂ ਜਾਂਦੀਆਂ ਹਨ, ਪਰ ਇਹ ਕਿਸੇ ਹੋਰ ਥਾਂ ਵੀ ਪਰਿਭਾਸ਼ਿਤ ਕੀਤੀ ਜਾ ਸਕਦੀਆਂ ਹਨ। ਤੁਸੀਂ ਸ਼ਾਇਦ ਸਭ ਤੋਂ ਵਧੀਆ ਜਾਣਦੇ ਹੋ ਕਿ ਤੁਹਾਡੀਆਂ ਵਰਚੁਅਲ ਹੋਸਟ ਕਾਨਫਿਗਰੇਸ਼ਨ ਕਿੱਥੇ ਹਨ ;-)
ਆਪਣੇ ਮਨਪਸੰਦ ਟੈਕਸਟ ਐਡੀਟਰ ਵਿੱਚ ਸੰਬੰਧਤ ਕਾਨਫਿਗਰੇਸ਼ਨ ਫਾਈਲ ਨੂੰ ਖੋਲ੍ਹੋ ਅਤੇ fastcgi_pass ਡਾਇਰੈਕਟਿਵ ਨੂੰ ਲੱਭੋ (ਜੋ ਕਿ ਇੱਕ ਸਥਾਨ ਸੰਦੇਸ਼ ਵਿੱਚ ਹੋਣਾ ਚਾਹੀਦਾ ਹੈ) ਜੋ PHP-FPM ਸਾਕਟ ਨੂੰ ਪਰਿਭਾਸ਼ਿਤ ਕਰਦਾ ਹੈ। ਤੁਸੀਂ ਇਸ ਮੁੱਲ ਨੂੰ ਬਦਲਣਾ ਚਾਹੀਦਾ ਹੈ ਤਾਂ ਜੋ ਇਹ ਨਵੇਂ 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 ਪੂਲ ਦਾ ਇਸਤੇਮਾਲ ਕਰ ਰਿਹਾ ਹੋਵੇਗਾ ਅਤੇ ਕਿਸੇ ਹੋਰ ਵਰਚੁਅਲ ਹੋਸਟ ਨਾਲ ਬੱਚੇ ਪ੍ਰੋਸੈਸ ਸਾਂਝੇ ਨਹੀਂ ਕਰੇਗਾ।