Nginx में विभिन्न PHP संस्करणों के साथ कई वेबसाइटें कैसे चलाएं


कभी-कभी PHP डेवलपर्स एक ही वेब सर्वर पर PHP के विभिन्न संस्करणों का उपयोग करके विभिन्न वेबसाइटों/एप्लिकेशन को बनाना और चलाना चाहते हैं। लिनक्स सिस्टम प्रशासक के रूप में, आपको एक ऐसे वातावरण की स्थापना करने की आवश्यकता होती है, जहाँ आप एक ही वेब सर्वर पर विभिन्न PHP संस्करण का उपयोग करके कई वेबसाइटें चला सकते हैं अर्थात् Nginx

इस ट्यूटोरियल में, हम आपको समझाएँगे कि PHP के कई संस्करणों को कैसे स्थापित करें और वेब सर्वर Nginx को सर्वर ब्लॉक (अपाचे में वर्चुअल होस्ट) के माध्यम से उनके साथ काम करने के लिए कॉन्फ़िगर करें CentOS/RHEL 7 LEMP स्टैक का उपयोग करके वितरण।

Nginx का उपयोग करता है PHP-FPM ( FastCGI प्रक्रिया प्रबंधक के लिए खड़ा है), जो एक वैकल्पिक PHP FastCGI है - कुछ के लिए कार्यान्वयन अत्यधिक भरी हुई वेबसाइटों के लिए अतिरिक्त, उपयोगी सुविधाएँ।

  1. A CentOS 7 or RHEL 7 server with minimal installation.
  2. Nginx HTTP Server.
  3. PHP 7.1 (to be used as default version) and 5.6.
  4. MariaDB Database Server.
  5. Server IP address: 192.168.56.10.
  6. Websites: example1.com and example2.com.

चरण 1: ईपीईएल और रेमी रिपोजिटरी को स्थापित करना और सक्षम करना

1। EPEL और रेमी रिपॉजिटरी को स्थापित करने और सक्षम करने से सबसे पहले, जो PHP के नवीनतम संस्करण प्रदान करता है। CentOS/RHEL 7 वितरण पर स्टैक।

# yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
# yum install http://rpms.remirepo.net/enterprise/remi-release-7.rpm

2। अगला yum-utils पैकेज स्थापित करें, जो yum की मूल कार्यक्षमता को बढ़ाता है और yum-config-manager कमांड प्रदान करता है, जो सक्षम करने के लिए उपयोग किया जाता है या सिस्टम पर यम रिपॉजिटरी को निष्क्रिय कर दें।

# yum install yum-utils

लाल

# subscription-manager repos --enable=rhel-7-server-optional-rpms

चरण 2: Nginx वेब सर्वर स्थापित करना

3। Nginx के नवीनतम संस्करण को स्थापित करने के लिए, हमें आधिकारिक Nginx रिपॉजिटरी को जोड़ने की जरूरत है, /etc/yum.repos.d/nginx.repo नामक फ़ाइल बनाएं।

# vi /etc/yum.repos.d/nginx.repo

अपने वितरण के अनुसार फ़ाइल करने के लिए निम्न पंक्तियाँ जोड़ें।

--------------- On CentOS 7 --------------- 
[nginx] 
name=nginx repo 
baseurl=http://nginx.org/packages/centos/7/$basearch/ 
gpgcheck=0 
enabled=1 


--------------- On RHEL 7 ---------------
[nginx] 
name=nginx repo 
baseurl=http://nginx.org/packages/rhel/7.x/$basearch/ 
gpgcheck=0 
enabled=1 

4। एक बार nginx रेपो जोड़ दिए जाने के बाद, आप दिखाए गए यम पैकेज प्रबंधक टूल का उपयोग करके Nginx को स्थापित कर सकते हैं।

# yum install nginx

चरण 3: मारियाडीबी डाटाबेस सर्वर स्थापित करना

5। MariaDB के नवीनतम संस्करण को स्थापित करने के लिए, हमें आधिकारिक MariaDB रिपॉजिटरी को जोड़ने की आवश्यकता है, /etc/yum.repos.d/mariadb.repo नामक फ़ाइल बनाएं।

# vi /etc/yum.repos.d/mariadb.repo

अपने वितरण के अनुसार फ़ाइल करने के लिए निम्न पंक्तियाँ जोड़ें।

--------------- On CentOS 7 --------------- 
[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.2/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1


--------------- On RHEL 7 ---------------
[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.2/rhel7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1 

6। एक बार जब MariaDB repo जोड़ दिया गया है, तो आप yum संकुल प्रबंधक टूल का उपयोग करके MariaDB स्थापित कर सकते हैं जैसा कि दिखाया गया है।

# yum install MariaDB-client MariaDB-server

7। बाद में, नीचे दी गई स्क्रिप्ट का उपयोग करके डेटाबेस सर्वर इंस्टॉलेशन को सुरक्षित करें। रूट पासवर्ड सेट करें और y का उत्तर दें और [Enter] दबाएं बाकी के बाद के प्रश्नों के लिए दूरस्थ रूट उपयोगकर्ता लॉगिन को निष्क्रिय करने के लिए, अनाम-उपयोगकर्ता खातों और परीक्षण डेटाबेस को हटा दें, जिसके द्वारा डिफ़ॉल्ट को सभी उपयोगकर्ताओं, यहां तककि अनाम उपयोगकर्ताओं द्वारा भी एक्सेस किया जा सकता है।

# mysql_secure_installation

चरण 4: PHP के कई संस्करणों को स्थापित करना

8। अपनी परियोजनाओं के लिए PHP के विभिन्न संस्करणों को स्थापित करने के लिए, yum-config-manager-प्रबंधक कमांड का उपयोग करके PHP के कई संस्करणों के साथ-साथ दिखाए जाने वाले अधिकांश आवश्यक मॉड्यूल स्थापित करें।

# yum-config-manager --enable remi-php71  [Default]
# yum install php php-common php-fpm
# yum install php-mysql php-pecl-memcache php-pecl-memcached php-gd php-mbstring php-mcrypt php-xml php-pecl-apc php-cli php-pear php-pdo
# yum install php56 php56-php-common php56-php-fpm
# yum install php56-php-mysql php56-php-pecl-memcache php56-php-pecl-memcached php56-php-gd php56-php-mbstring php56-php-mcrypt php56-php-xml php56-php-pecl-apc php56-php-cli php56-php-pear php56-php-pdo

9। PHP इंस्टॉल करने के बाद, आप अपने सर्वर पर उपयोग किए गए PHP के डिफ़ॉल्ट संस्करण की जांच करने के लिए निम्न आदेश का उपयोग कर सकते हैं।

# php -v

चरण 5: PHP-FPM और PHP56-PHP-FPM को कॉन्फ़िगर करना

10। यह इस ट्यूटोरियल का सबसे दिलचस्प हिस्सा है, यह बताता है कि आप वास्तव में अपने सर्वर पर कई PHP संस्करण कैसे चला सकते हैं। यहां, आप php-fpm के विभिन्न संस्करणों को कॉन्फ़िगर करेंगे, जो Nginx के साथ काम करेंगे। आपको FastCGI प्रक्रियाओं के उपयोगकर्ता/समूह के साथ-साथ उन बंदरगाहों को भी परिभाषित करना चाहिए, जिन पर वे सुनेंगे।

ये निम्नलिखित दो कॉन्फ़िगरेशन फ़ाइलें हैं जिन्हें आप संपादित करने जा रहे हैं।

  • php-fpm (default 7.1) – /etc/php-fpm.d/www.conf
  • php56-php-fpm – /opt/remi/php56/root/etc/php-fpm.d/www.conf

ऊपर की फाइलें खोलें, FastCGI प्रक्रियाओं के उपयोगकर्ता/समूह को सेट करें।

# vi /etc/php-fpm.d/www.conf   [PHP 7.1]
# vi /opt/remi/php56/root/etc/php-fpm.d/www.conf  [PHP 5.6] 

डिफ़ॉल्ट मान अपाचे होना चाहिए, उन्हें दिखाए गए अनुसार nginx में बदलें।

user = nginx
group = nginx

11। अगला, सुनो मापदंडों को ढूंढें, और पता: पोर्ट परिभाषित करें जिस पर FastCGI अनुरोध प्राप्त होंगे।

listen = 127.0.0.1:9000	[php-fpm]
listen = 127.0.0.1:9001	[php56-php-fpm]

12। उपरोक्त सभी कॉन्फ़िगरेशन किए जाने के बाद, आपको शुरू करने और सक्षम करने की आवश्यकता है Nginx , MariaDB और PHP-FPM सिस्टम बूट पर ऑटो शुरू करने के लिए।

# systemctl enable nginx 
# systemctl start nginx 

# systemctl enable mariadb 
# systemctl start mariadb 

---------------- PHP 7.1 ---------------- 
# systemctl enable php-fpm 
# systemctl start php-fpm 

---------------- PHP 5.6 ----------------
# systemctl enable php56-php-fpm 
# systemctl start php56-php-fpm 

लाल

# getenforce
# setenforce 0 

चरण 6: अनुमतियों के साथ सेटअप वेबसाइट

13। इस बिंदु पर, अब आप अपनी वेबसाइट के लिए /var/www/html/ के तहत आवश्यक निर्देशिका बना सकते हैं। आपको लॉग को स्टोर करने के लिए निर्देशिका बनाने की भी आवश्यकता है:

---------------- Website 1 ----------------
# mkdir -p /var/www/html/example1.com/ 
# mkdir -p /var/log/nginx/example1.com/ 
 

---------------- Website 2 ----------------
# mkdir -p /var/www/html/example2.com/
# mkdir -p /var/log/nginx/example2.com/ 

14। सभी निर्देशिकाओं पर उपयुक्त स्वामित्व अनुमतियाँ सेट करें।

---------------- Website 1 ----------------
# chown -R root:nginx /var/www/html/example1.com/ 
# chmod -R 755 /var/www/html/example1.com/ 
# chown -R root:nginx /var/log/nginx/example1.com/
# chmod -R 660 /var/log/nginx/example1.com/ 

---------------- Website 2 ----------------
# chown -R root:nginx /var/www/html/example2.com/ 
# chmod -R 755 /var/www/html/example2.com/
# chown -R root:nginx /var/log/nginx/example2.com/ 
# chmod -R 660 /var/log/nginx/example2.com/

चरण 7: वेबसाइट्स के लिए सेटअप नग्नेक्स सर्वर ब्लॉक

15। अब कॉन्फ़िगर करें कि सर्वर ब्लॉक कॉन्फ़िगरेशन फ़ाइलों का उपयोग करके Nginx आपकी वेबसाइट पर अनुरोध कैसे संसाधित करेगा जो /etc/nginx/conf.d/ में स्थित होना चाहिए।

.conf एक्सटेंशन के साथ समाप्त होने वाली अपनी वेबसाइटों के लिए कॉन्फ़िगरेशन फ़ाइलें बनाएँ।

# vi /etc/nginx/conf.d/example1.com.conf
# vi /etc/nginx/conf.d/example2.com.conf

फिर संबंधित फ़ाइलों में निम्न सर्वर ब्लॉक कॉन्फ़िगरेशन पेस्ट करें।

example1 के लिए कॉन्फ़िगरेशन

server {
        listen 80;
        server_name example1.com www.example1.com;

        root   /var/www/html/example1.com/;
        index index.php index.html index.htm;

        #charset koi8-r;
        access_log /var/log/nginx/example1.com/example1_access_log;
        error_log   /var/log/nginx/example1.com/example1_error_log   error;

       location / {
                try_files $uri $uri/ /index.php?$query_string;
        }

       # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
        location ~ \.php$ {

                root    /var/www/html/example1.com/;
                fastcgi_pass   127.0.0.1:9000;	#set port for php-fpm to listen on
                fastcgi_index  index.php;
                fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
                include         fastcgi_params;
                include /etc/nginx/fastcgi_params;

        }
}

example2.com के लिए कॉन्फ़िगरेशन

server {
        listen 80;
        server_name example2.com www.example2.com;

        root    /var/www/html/example2.com/;
        index index.php index.html index.htm;

        #charset koi8-r;
        access_log /var/log/nginx/example2.com/example2_access_log;
        error_log  /var/log/nginx/example2.com/example2_error_log   error;

       location / {
                try_files $uri $uri/ /index.php?$query_string;
        }

       # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
        location ~ \.php$ {

                root    /var/www/html/example2.com/;
                fastcgi_pass   127.0.0.1:9001;	#set port for php56-php-fpm to listen on
	        fastcgi_index  index.php;
                fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
                include         fastcgi_params;
                include /etc/nginx/fastcgi_params;

        }
}

16। सुनिश्चित करें कि http ब्लॉक के समापन भाग में आपके पास निम्न लाइन है /etc/nginx/nginx.conf । जब Nginx चल रहा हो, तो यह /etc/nginx/conf.d/ निर्देशिका के अंदर सभी कॉन्फ़िगरेशन फ़ाइलों को शामिल करने में मदद करता है।

include /etc/nginx/conf.d/*.conf;

चरण 8: विभिन्न PHP संस्करणों का परीक्षण

17। अंत में, आपको यह परीक्षण करने की आवश्यकता है कि आपका सर्वर PHP के दो संस्करणों का उपयोग कर रहा है। आप अपनी वेबसाइट के दस्तावेज़ रूट निर्देशिका में एक बहुत ही बुनियादी info.php स्क्रिप्ट बना सकते हैं जैसा कि दिखाया गया है।

# echo "<?php phpinfo(); ?>" > /var/www/html/example1.com/info.php
# echo "<?php phpinfo(); ?>" > /var/www/html/example2.com/info.php

18। आपके द्वारा ऊपर किए गए सभी परिवर्तनों को लागू करने के लिए, आपको पुनरारंभ करने की आवश्यकता है Nginx , php-fpm और php56-php- एफ पी एम । लेकिन आप सबसे पहले यह जांच सकते हैं कि ऐसा करने से पहले किसी भी सिंटैक्स त्रुटियों के लिए Nginx कॉन्फ़िगरेशन फ़ाइलें।

# nginx -t 
# systemctl restart nginx php-fpm php56-php-fpm

19। ऐसा करने के लिए एक और आखिरी काम है, खासकर यदि आप अपना सर्वर स्थानीय रूप से चला रहे हैं, तो आपको स्थानीय DNS को /etc/host फ़ाइल का उपयोग करके सेटअप करना होगा जैसा कि दिखाया गया है। नीचे स्क्रीन शॉट।

192.168.56.10   example1.com   example1
192.168.56.10   example2.com   example2

20। अंत में, एक वेब ब्राउज़र खोलें और सिस्टम पर स्थापित PHP के संस्करणों को सत्यापित करने के लिए निम्न पते टाइप करें।

http://example1.com/index.php
http://example2.com/index.php

बस! अब आप विभिन्न PHP संस्करणों के साथ फाइल और परीक्षण वेबसाइटों को तैनात कर सकते हैं। यदि आपके पास आगे जोड़ने के लिए कोई प्रश्न या प्रश्न हैं, तो नीचे दिए गए टिप्पणी फ़ॉर्म का उपयोग करें।