யுனிக்ஸ் அல்லது டி.சி.பி/ஐபி சாக்கெட்டைப் பயன்படுத்தி என்ஜிஎன்எக்ஸ் ஐ PHP-FPM உடன் இணைப்பது எப்படி
என்ஜிஎன்எக்ஸ் வலை சேவையகம் (தலைகீழ் ப்ராக்ஸியாக) ஃபாஸ்ட் சிஜிஐ நெறிமுறை மூலம் (பின்தளத்தில் பயன்பாட்டு சேவையகமாக) PHP பயன்பாடுகளுக்கு சேவை செய்கிறது. என்ஜிஎன்எக்ஸ் PHP-FPM (FastCGI செயல்முறை மேலாளர்) ஐப் பயன்படுத்துகிறது, இது ஒரு மாற்று PHP FastCGI செயலாக்கமாகும், இது பின்னணியில் ஒரு டீமனாக இயங்குகிறது, CGI கோரிக்கைகளை கேட்கிறது. அதிக சுமை கொண்ட வலைத்தளங்கள் அல்லது வலை பயன்பாடுகளை இயக்குவதற்காக வடிவமைக்கப்பட்ட கூடுதல் அம்சங்களுடன் இது வருகிறது, ஆனால் இது எந்த அளவிலான தளங்களுக்கும் பயன்படுத்தப்படலாம்.
ஃபாஸ்ட்கிஜி வள குளங்களின் உள்ளமைவை PHP-FPM ஆதரிப்பது மட்டுமல்லாமல், இது பல FastCGI இன்டர்னல்களை மேம்படுத்துகிறது மற்றும் பிழை அறிக்கையிடல், ஸ்கிரிப்ட் முடித்தல் மற்றும் பலவற்றை அதிகரிக்கிறது. இது PHP அரக்கமயமாக்கல், செயல்முறை மேலாண்மை, கோரிக்கைகள் வரக்கூடிய செயல்முறைகளின் மாறும் எண், பிழை தலைப்பு, துரிதப்படுத்தப்பட்ட பதிவேற்ற ஆதரவு மற்றும் பலவற்றைக் கொண்டுள்ளது.
NGINX இலிருந்து FastCGI கோரிக்கைகளை ஏற்க, PHP-FPM ஒரு TCP/IP சாக்கெட் அல்லது யுனிக்ஸ் டொமைன் சாக்கெட்டில் கேட்கலாம். fastcgi_pass
கட்டளையைப் பயன்படுத்தி, PHP-FPM உடன் இணைக்க (ப்ராக்ஸி கோரிக்கைகள்) என்ஜிஎன்எக்ஸ் எந்த முகவரியைப் பயன்படுத்த விரும்புகிறது.
இந்த வழிகாட்டி PHP-FPM ஐப் பயன்படுத்தி சேவையக PHP பயன்பாடுகளுக்கு NGINX ஐ எவ்வாறு கட்டமைப்பது என்பதை விளக்குகிறது. என்ஜிஎன்எக்ஸை PHP-FPM உடன் இணைக்க TCP/IP சாக்கெட் அல்லது யுனிக்ஸ் டொமைன் சாக்கெட்டை எப்போது பயன்படுத்த வேண்டும் என்பதை இது விவரிக்கிறது.
இந்த வழிகாட்டி உங்கள் லினக்ஸ் கணினியில் NGINX மற்றும் PHP-FPM நிறுவப்பட்டிருப்பதாகக் கருதுகிறது, இல்லையெனில், காண்க:
- CentOS 8 இல் LEMP சேவையகத்தை நிறுவுவது எப்படி
- உபுண்டு 20.04 சேவையகத்தில் LEMP அடுக்கு PhpMyAdmin ஐ எவ்வாறு நிறுவுவது
- RHEL 8 இல் NGINX, MySQL/MariaDB மற்றும் PHP ஐ எவ்வாறு நிறுவுவது
- டெபியன் 10 சேவையகத்தில் LEMP ஐ எவ்வாறு நிறுவுவது
யுனிக்ஸ் டொமைன் (அல்லது ஐபிசி) சாக்கெட்டுகள் என்பது ஒரே இயக்க முறைமையில் இயங்கும் செயல்முறைகளுக்கு இடையில் திறமையான தரவு பரிமாற்றத்தை அனுமதிக்கும் இடை-செயல்முறை தொடர்பு (ஐபிசி) ஆகும், அதே நேரத்தில் டிசிபி/ஐபி (அல்லது இணைய டொமைன்) சாக்கெட்டுகள் ஒரு பிணையத்தில் தொடர்பு கொள்ள செயல்முறைகளை அனுமதிக்கின்றன.
ஒரு ஐபி முகவரி மற்றும் துறைமுகத்தால் (எ.கா. 127.0.0.1:9000) ஒரு சேவையகத்தை அடையாளம் காணும் TCP/IP சாக்கெட் போலல்லாமல், நீங்கள் ஒரு கோப்பு பாதை பெயரைப் பயன்படுத்தி ஒரு சேவையகத்தை யுனிக்ஸ் டொமைன் சாக்கெட்டுடன் பிணைக்கலாம் (எ.கா./ரன்/php-fpm/www. சாக்), இது கோப்பு முறைமையில் தெரியும்.
யுனிக்ஸ் டொமைன் சாக்கெட் என்பது ஒரு சிறப்பு வகை கோப்பு - கோப்பு மற்றும் அடைவு அனுமதிகள் அதற்கு பொருந்தும் (வேறு எந்த வகை யுனிக்ஸ் கோப்பையும் போல) மற்றும் ஹோஸ்டில் எந்த செயல்முறைகளை கோப்பில் படிக்கலாம் மற்றும் எழுதலாம் என்பதை கட்டுப்படுத்த பயன்படுத்தலாம், (இதனால் பின்தளத்தில் சேவையகத்துடன் தொடர்பு கொள்ளுங்கள்).
இந்த வழியில், யுனிக்ஸ் டொமைன் சாக்கெட் பாதுகாப்பானது, ஏனெனில் உள்ளூர் ஹோஸ்டில் உள்ள செயல்முறைகள் மட்டுமே இதைப் பயன்படுத்த முடியும். ஃபயர்வால் போன்ற கூடுதல் பாதுகாப்பு நடவடிக்கைகள் செயல்படுத்தப்படாவிட்டால், ஒரு டி.சி.பி/ஐ.பி சாக்கெட் இணையத்திற்கு பாதுகாப்பு ஆபத்தை ஏற்படுத்தும்.
முக்கியமாக, யுனிக்ஸ் டொமைன் சாக்கெட்டைப் பயன்படுத்துவது செயல்திறன் தொடர்பாக டி.சி.பி/ஐ.பி சாக்கெட்டைப் பயன்படுத்துவதைப் போன்றதல்ல, பல சோதனைகள் மற்றும் வரையறைகளை யுனிக்ஸ் டொமைன் சாக்கெட்டுகள் வேகமாக நிரூபிக்கின்றன. யுனிக்ஸ் டொமைன் சாக்கெட்டுகளின் முக்கிய குறைபாடு என்னவென்றால், அவை குறைவாக அளவிடக்கூடியவை, அவை ஒரே இயக்க முறைமைக்கு (ஓஎஸ்) உள்ள இடை-செயல்முறை தகவல்தொடர்புக்கு மட்டுமே துணைபுரிகின்றன.
ஒரு வள பூல் உள்ளமைவு கோப்பில் PHP-FPM கேட்கும் முகவரியை நீங்கள் கட்டமைக்க முடியும். PHP-FPM உடன், நீங்கள் வெவ்வேறு அமைப்புகளுடன் பல செயல்முறைகளை இயக்க முடியும் என்பதை நினைவில் கொள்க. இயல்புநிலை பூல் www
என அழைக்கப்படுகிறது.
வள பூல் உள்ளமைவு கோப்பின் இருப்பிடம் லினக்ஸ் கணினியில் PHP மற்றும் PHP-FPM நிறுவப்பட்டிருக்கும் முறையைப் பொறுத்தது (இது இயல்புநிலை/ஒற்றை பதிப்பு அல்லது ஒரே நேரத்தில் பல பதிப்புகள்).
எடுத்துக்காட்டாக, CentOS 8 இல், ஒற்றை பதிப்பில், அனைத்து PHP உள்ளமைவு கோப்புகளும் /etc
கோப்பகத்தில் அமைந்துள்ளன மற்றும் இயல்புநிலை PHP-FPM பூல் (www)
உள்ளமைவு கோப்பு /etc/php-fpm.d/www.conf:
அனைத்து PHP உள்ளமைவு கோப்புகளையும் பட்டியலிட, பின்வரும் ls கட்டளையைப் பயன்படுத்தவும்.
# ls /etc/php*
உபுண்டு 20.04 இல், PHP உள்ளமைவு கோப்புகள் /etc/php/
அடைவு மற்றும் இயல்புநிலை PHP-FPM பூல் (www)
உள்ளமைவு கோப்பில் அமைந்துள்ளன /etc/php/
:
$ ls /etc/php/7.4/
யுனிக்ஸ் டொமைன் சாக்கெட்டில் கேட்க PHP-FPM ஐ கட்டமைக்கிறது
யுனிக்ஸ் டொமைன் சாக்கெட்டில் கேட்க PHP-FPM ஐ உள்ளமைக்க, உங்களுக்கு பிடித்த உரை திருத்தியைப் பயன்படுத்தி உங்கள் இயல்புநிலை PHP-FPM பூல் உள்ளமைவு கோப்பைத் திறக்கவும்.
$ sudo vim /etc/php/7.4/fpm/pool.d/www.conf #Ubuntu/Debian OR # vim /etc/php-fpm.d/www.conf #CentOS/RHEL/Fedora
பின்னர் கேட்கும் கட்டளையைத் தேடி, பின்வருமாறு யுனிக்ஸ் டொமைன் சாக்கெட்டின் கோப்பு பாதை பெயராக அமைக்கவும். பெரும்பாலான நிறுவல்கள் முன்னிருப்பாக யுனிக்ஸ் டொமைன் சாக்கெட்டைப் பயன்படுத்துகின்றன என்பதை நினைவில் கொள்க.
listen = /run/php/php7.4-fpm.sock #Ubuntu/Debian OR listen = /run/php-fpm/www.sock #CentOS/RHEL/Fedora
நீங்கள் யுனிக்ஸ் டொமைன் சாக்கெட்டைப் பயன்படுத்தினால், என்ஜிஎன்எக்ஸ் வலை சேவையகத்திலிருந்து இணைப்புகளை அனுமதிக்க, கோப்பிற்கான பொருத்தமான படிக்க/எழுத அனுமதிகளையும் அமைக்க வேண்டும். இயல்பாக, என்ஜிஎன்எக்ஸ் சென்டோஸ்/ஆர்ஹெச்எல்/ஃபெடோராவில் பயனர் மற்றும் குழு என்ஜின்க்ஸாகவும், உபுண்டு மற்றும் டெபியனில் www-data ஆகவும் இயங்குகிறது.
எனவே, listen.owner
மற்றும் listen.group
அளவுருக்களைக் கண்டுபிடித்து அதற்கேற்ப அவற்றை அமைக்கவும். மேலும், listen.mode
அளவுருவைப் பயன்படுத்தி பயன்முறையை 0660 ஆக அமைக்கவும்.
------------- On Debian and Ubuntu ------------- listen.owner = www-data listen.group = www-data listen.mode = 0660 ------------- On CentOS/RHEL and Fedora ------------- listen.owner = nginx listen.group = nginx listen.mode = 0660
யுனிக்ஸ் டொமைன் சாக்கெட் கோப்பில் அனுமதிகள் சரியாக அமைக்கப்படவில்லை என்றால், என்ஜிஎன்எக்ஸ் மோசமான நுழைவாயில் பிழையை அளிக்கக்கூடும் என்பதை நினைவில் கொள்க.
ஒரு TCP/IP சாக்கெட்டில் கேட்க PHP-FPM ஐ கட்டமைக்கிறது
யுனிக்ஸ் டொமைன் சாக்கெட் ஒரு டி.சி.பி/ஐ.பி சாக்கெட்டை விட வேகமானது என்றாலும், முந்தையது குறைவாக அளவிடக்கூடியது, ஏனெனில் இது ஒரே ஓஎஸ்ஸில் இடை-செயல்முறை தகவல்தொடர்புகளை மட்டுமே ஆதரிக்க முடியும். NGINX மற்றும் பின்தளத்தில் பயன்பாட்டு சேவையகம் (PHP-FPM) வெவ்வேறு கணினிகளில் இயங்கினால், இணைப்புகளுக்கான TCP/IP சாக்கெட்டில் கேட்க நீங்கள் PHP-FPM ஐ உள்ளமைக்க வேண்டும்.
PHP-FPM பூல் உள்ளமைவு கோப்பில், கேளுங்கள் குறியீடு> முகவரியை பின்வருமாறு அமைக்கவும். நீங்கள் தேர்ந்தெடுத்த துறைமுகம் அதே கணினியில் மற்றொரு செயல்முறை அல்லது சேவையால் பயன்படுத்தப்படவில்லை என்பதை உறுதிப்படுத்தவும்.
listen = 127.0.0.1:3000
PHP-FPM பயன்பாட்டு சேவையகத்துடன் வேலை செய்ய NGINX ஐ கட்டமைக்கிறது
PHP-FPM கேட்கும் முகவரியை நீங்கள் கட்டமைத்தவுடன், அந்த முகவரி வழியாக NGINX ஐ ப்ராக்ஸி கோரிக்கைக்கு கட்டமைக்க வேண்டும், fastcgi_pass
உள்ளமைவு அளவுருவைப் பயன்படுத்தி, ஒரு மெய்நிகர் சேவையக தொகுதி உள்ளமைவு கோப்பில்.
எடுத்துக்காட்டாக, உங்கள் வலைத்தளத்திற்கான உள்ளமைவு கோப்பு /etc/nginx/conf.d/example.com.conf எனில், அதைத் திருத்துவதற்குத் திறக்கவும்.
# vim /etc/nginx/conf.d/example.com.conf
.php
கோப்புகளை செயலாக்குவதற்கான இருப்பிடம் குறியீடு> தொகுதியைத் தேடுங்கள் மற்றும்
fastcgi_pass
அளவுருவை பின்வருமாறு அமைக்கவும், யுனிக்ஸ் கேட்க PHP-FPM ஐ நீங்கள் கட்டமைத்திருந்தால் டொமைன் சாக்கெட்.
fastcgi_pass unix:/run/php/php7.4-fpm.sock #Ubuntu/Debian OR fastcgi_pass unix:/run/php-fpm/www.sock #CentOS/RHEL/Fedora
அல்லது ஒரு TCP/IP சாக்கெட்டில் கேட்க PHP-FPM ஐ நீங்கள் கட்டமைத்திருந்தால் TCP/IP முகவரியைப் பயன்படுத்தவும். பின்தளத்தில் பயன்பாட்டு சேவையகம் (PHP-FPM) ஒரு தனி சேவையகத்தில் இயங்கினால் (10.42.0.10 ஐ PHP-FPM FastCGI சேவையகம் இயங்கும் இயந்திரத்தின் ஐபி முகவரியுடன் மாற்றவும்).
fastcgi_pass 10.42.0.10:3000;
முக்கியமானது: CentOS 8 இல், PHP-FPM என்பது /etc/nginx/conf.d/php-fpm.conf கோப்பில், ஒரு அப்ஸ்ட்ரீம் தொகுதிக்குள், php-fpm என்ற பெயருடன் ஒரு அப்ஸ்ட்ரீம் சேவையகமாக வரையறுக்கப்படுகிறது.
பூல் உள்ளமைவு கோப்பில், கேட்க PHP-FPM உள்ளமைக்கப்பட்ட முகவரியைப் பொறுத்து நீங்கள் இங்கே மாற்றங்களைச் செய்யலாம். இயல்புநிலை உள்ளமைவு யுனிக்ஸ் டொமைன் சாக்கெட்டை சுட்டிக்காட்டுகிறது.
upstream php-fpm { server unix:/run/php-fpm/www.sock; }
உங்கள் தளத்தின் சேவையக தடுப்பு கோப்பில், காட்டப்பட்டுள்ளபடி fastcgi_pass
அளவுருவை அமைக்கவும்.
fastcgi_pass php-fpm;
PHP-FPM மற்றும் NGINX உள்ளமைவுகளில் மாற்றங்களைச் செய்தபின், அவற்றின் உள்ளமைவு தொடரியல் பின்வருமாறு சரியானது என்பதை சரிபார்க்கவும்.
------------- On Debian and Ubuntu ------------- $ sudo php-fpm -t $ sudo nginx -t ------------- On CentOS/RHEL and Fedora ------------- # php-fpm -t # nginx -t
கட்டளை வெளியீடு பிரதான உள்ளமைவு கோப்பை மட்டுமே காண்பிக்கும் போது, மற்ற அனைத்து உள்ளமைவு கோப்புகளும் சேர்க்கப்பட்டு சரிபார்க்கப்படுகின்றன.
அடுத்து, systemctl கட்டளையைப் பயன்படுத்தி மாற்றங்களைப் பயன்படுத்த இரண்டு சேவைகளை மறுதொடக்கம் செய்ய வேண்டும்.
------------- On Debian and Ubuntu ------------- $ sudo systemctl restart nginx $ sudo systemctl restart php7.4-fpm ------------- On CentOS/RHEL and Fedora ------------- # systemctl restart nginx # systemctl restart php-fpm
உங்களுக்கு ஏதேனும் பிழைகள் ஏற்பட்டால், பூனை கட்டளையைப் பயன்படுத்தி NGINX மற்றும் PHP-FPM பதிவு கோப்புகளை சரிபார்க்கலாம்.
------------- On Debian and Ubuntu ------------- $ cat /var/log/nginx/error.log $ cat /var/log/php7.4-fpm.log ------------- On CentOS/RHEL and Fedora ------------- $ cat /var/log/nginx/error.log $ cat /var/log/php-fpm/www-error.log
உங்களுக்காக நாங்கள் வைத்திருப்பது அவ்வளவுதான். கேள்விகளைக் கேட்க கீழேயுள்ள கருத்துப் பகுதியைப் பயன்படுத்தலாம். மேலும் தகவலுக்கு, PHP-FPM ஆவணங்களைப் பார்க்கவும்.