Nginx-ൽ വ്യത്യസ്uത PHP പതിപ്പുകളുള്ള ഒന്നിലധികം വെബ്uസൈറ്റുകൾ എങ്ങനെ പ്രവർത്തിപ്പിക്കാം


ചിലപ്പോൾ PHP ഡെവലപ്പർമാർ ഒരേ വെബ് സെർവറിൽ PHP യുടെ വ്യത്യസ്ത പതിപ്പുകൾ ഉപയോഗിച്ച് വ്യത്യസ്ത വെബ്uസൈറ്റുകൾ/ആപ്ലിക്കേഷനുകൾ നിർമ്മിക്കാനും പ്രവർത്തിപ്പിക്കാനും ആഗ്രഹിക്കുന്നു. ഒരു ലിനക്സ് സിസ്റ്റം അഡ്uമിനിസ്uട്രേറ്റർ എന്ന നിലയിൽ, ഒരൊറ്റ വെബ് സെർവറിൽ, അതായത് Nginx-ൽ വ്യത്യസ്ത PHP പതിപ്പുകൾ ഉപയോഗിച്ച് നിങ്ങൾക്ക് ഒന്നിലധികം വെബ്uസൈറ്റുകൾ പ്രവർത്തിപ്പിക്കാൻ കഴിയുന്ന ഒരു അന്തരീക്ഷം നിങ്ങൾ സജ്ജീകരിക്കേണ്ടതുണ്ട്.

ഈ ട്യൂട്ടോറിയലിൽ, LEMP സ്റ്റാക്ക് ഉപയോഗിച്ച് CentOS/RHEL 7 വിതരണങ്ങളിലെ സെർവർ ബ്ലോക്കുകൾ (അപ്പാച്ചെയിലെ വെർച്വൽ ഹോസ്റ്റുകൾ) വഴി PHP-യുടെ ഒന്നിലധികം പതിപ്പുകൾ എങ്ങനെ ഇൻസ്റ്റാൾ ചെയ്യാമെന്നും വെബ് സെർവർ Nginx കോൺഫിഗർ ചെയ്യാമെന്നും ഞങ്ങൾ നിങ്ങളെ വിശദീകരിക്കും.

Nginx, PHP-FPM ഉപയോഗിക്കുന്നു (FastCGI പ്രോസസ് മാനേജർ എന്നതിന്റെ അർത്ഥം), ഇത് ഒരു ബദൽ PHP FastCGI നടപ്പിലാക്കൽ ആണ്, കൂടുതൽ ലോഡുചെയ്uത വെബ്uസൈറ്റുകൾക്ക് ചില അധിക ഉപയോഗപ്രദമായ സവിശേഷതകൾ.

  1. കുറഞ്ഞ ഇൻസ്റ്റാളേഷനുള്ള ഒരു RHEL 7 സെർവർ.
  2. Nginx HTTP സെർവർ.
  3. PHP 7.1 (സ്ഥിര പതിപ്പായി ഉപയോഗിക്കും) കൂടാതെ 5.6.
  4. MariaDB ഡാറ്റാബേസ് സെർവർ.
  5. സെർവർ IP വിലാസം: 192.168.56.10.
  6. വെബ്സൈറ്റുകൾ: example1.com, example2.com.

ഘട്ടം 1: EPEL, Remi Repository എന്നിവ ഇൻസ്റ്റാൾ ചെയ്യുകയും പ്രവർത്തനക്ഷമമാക്കുകയും ചെയ്യുക

1. CentOS/RHEL 7 വിതരണങ്ങളിൽ PHP സ്റ്റാക്കിന്റെ ഏറ്റവും പുതിയ പതിപ്പുകൾ വാഗ്ദാനം ചെയ്യുന്ന EPEL, Remi റിപ്പോസിറ്ററി എന്നിവ ഇൻസ്റ്റാൾ ചെയ്ത് പ്രവർത്തനക്ഷമമാക്കിക്കൊണ്ട് ആദ്യം ആരംഭിക്കുക.

# 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 റിപ്പോസിറ്ററികൾ പ്രവർത്തനക്ഷമമാക്കാനോ പ്രവർത്തനരഹിതമാക്കാനോ ഉപയോഗിക്കുന്നു.

# yum install yum-utils

ശ്രദ്ധിക്കുക: RHEL 7-ൽ താഴെ പറയുന്ന കമാൻഡ് ഉപയോഗിച്ച് നിങ്ങൾക്ക് ചില ഡിപൻഡൻസികൾക്കായി ഓപ്ഷണൽ ചാനൽ പ്രവർത്തനക്ഷമമാക്കാം.

# 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 repo ചേർത്തുകഴിഞ്ഞാൽ, കാണിച്ചിരിക്കുന്നതുപോലെ yum പാക്കേജ് മാനേജർ ടൂൾ ഉപയോഗിച്ച് നിങ്ങൾക്ക് Nginx ഇൻസ്റ്റാൾ ചെയ്യാം.

# yum install nginx

ഘട്ടം 3: MariaDB ഡാറ്റാബേസ് സെർവർ ഇൻസ്റ്റാൾ ചെയ്യുന്നു

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. അതിനുശേഷം, ചുവടെയുള്ള സ്ക്രിപ്റ്റ് ഉപയോഗിച്ച് ഡാറ്റാബേസ് സെർവർ ഇൻസ്റ്റാളേഷൻ സുരക്ഷിതമാക്കുക. ഒരു റൂട്ട് പാസ്uവേഡ് സജ്ജീകരിച്ച് y എന്നതിന് ഉത്തരം നൽകുക, വിദൂര റൂട്ട് യൂസർ ലോഗിൻ പ്രവർത്തനരഹിതമാക്കുന്നതിനും അജ്ഞാത-ഉപയോക്തൃ അക്കൗണ്ടുകൾ നീക്കം ചെയ്യുന്നതിനും സ്ഥിരസ്ഥിതിയായി എല്ലാ ഉപയോക്താക്കൾക്കും ആക്uസസ് ചെയ്യാൻ കഴിയുന്ന ഡാറ്റാബേസ് ടെസ്റ്റ് ചെയ്യുന്നതിനും തുടർന്നുള്ള ചോദ്യങ്ങൾക്ക് [Enter] അമർത്തുക. , അജ്ഞാത ഉപയോക്താക്കൾ പോലും.

# mysql_secure_installation

ഘട്ടം 4: PHP-യുടെ ഒന്നിലധികം പതിപ്പുകൾ ഇൻസ്റ്റാൾ ചെയ്യുന്നു

8. നിങ്ങളുടെ പ്രോജക്റ്റുകൾക്കായി PHP യുടെ വ്യത്യസ്ത പതിപ്പുകൾ ഇൻസ്റ്റാൾ ചെയ്യാൻ, കാണിച്ചിരിക്കുന്നതുപോലെ ആവശ്യമായ മൊഡ്യൂളുകൾക്കൊപ്പം PHP യുടെ ഒന്നിലധികം പതിപ്പുകൾ ഇൻസ്റ്റാൾ ചെയ്യാൻ yum-config-manager കമാൻഡ് ഉപയോഗിക്കുക.

# 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 പതിപ്പുകൾ എങ്ങനെ പ്രവർത്തിപ്പിക്കാനാകുമെന്ന് ഇത് വിശദീകരിക്കുന്നു. ഇവിടെ, നിങ്ങൾ Nginx പ്രവർത്തിക്കുന്ന php-fpm-ന്റെ വ്യത്യസ്ത പതിപ്പുകൾ കോൺഫിഗർ ചെയ്യും. FastCGI പ്രക്രിയകളുടെ ഉപയോക്താവ്/ഗ്രൂപ്പും അവർ കേൾക്കുന്ന പോർട്ടുകളും നിങ്ങൾ നിർവ്വചിക്കണം.

നിങ്ങൾ എഡിറ്റ് ചെയ്യാൻ പോകുന്ന ഇനിപ്പറയുന്ന രണ്ട് കോൺഫിഗറേഷൻ ഫയലുകൾ ഇവയാണ്.

  • php-fpm (സ്ഥിരസ്ഥിതി 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. അടുത്തതായി, ലിസൻ പാരാമീറ്ററുകൾ കണ്ടെത്തി, ഫാസ്റ്റ്സിജിഐ അഭ്യർത്ഥനകൾ സ്വീകരിക്കുന്ന വിലാസം: പോർട്ട് നിർവചിക്കുക.

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 

ശ്രദ്ധിക്കുക: PHP, php56-php-fpm ന്റെ രണ്ടാമത്തെ ഉദാഹരണം ആരംഭിക്കുമ്പോൾ നിങ്ങൾക്ക് എന്തെങ്കിലും പിശകുകൾ ഉണ്ടായാൽ, ഒരു SELinux നയം അത് ആരംഭിക്കുന്നതിൽ നിന്ന് തടഞ്ഞേക്കാം. SELinux എൻഫോഴ്uസിംഗ് മോഡിലാണെങ്കിൽ, അത് അനുവദനീയമായ മോഡിലേക്ക് സജ്ജമാക്കുക, തുടർന്ന് ഒരിക്കൽ കൂടി സേവനം ആരംഭിക്കാൻ ശ്രമിക്കുക.

# getenforce
# setenforce 0 

ഘട്ടം 6: അനുമതികളോടെ വെബ്uസൈറ്റുകൾ സജ്ജീകരിക്കുക

13. ഈ ഘട്ടത്തിൽ, നിങ്ങൾക്ക് ഇപ്പോൾ /var/www/html/ എന്നതിന് കീഴിൽ നിങ്ങളുടെ വെബ്uസൈറ്റുകൾക്ക് ആവശ്യമായ ഡയറക്uടറികൾ സൃഷ്uടിക്കാം. ഇനിപ്പറയുന്ന രീതിയിൽ ലോഗുകൾ സംഭരിക്കുന്നതിന് നിങ്ങൾ ഡയറക്ടറികൾ സൃഷ്ടിക്കേണ്ടതുണ്ട്:

---------------- 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: വെബ്uസൈറ്റുകൾക്കായി Nginx സെർവർ ബ്ലോക്കുകൾ സജ്ജീകരിക്കുക

15. /etc/nginx/conf.d/-ൽ സ്ഥിതി ചെയ്യുന്ന സെർവർ ബ്ലോക്ക് കോൺഫിഗറേഷൻ ഫയലുകൾ ഉപയോഗിച്ച് Nginx നിങ്ങളുടെ വെബ്uസൈറ്റുകളിലേക്കുള്ള അഭ്യർത്ഥനകൾ എങ്ങനെ പ്രോസസ്സ് ചെയ്യുമെന്ന് ഇപ്പോൾ കോൺഫിഗർ ചെയ്യുക.

.conf വിപുലീകരണത്തിൽ അവസാനിക്കുന്ന നിങ്ങളുടെ വെബ്uസൈറ്റുകൾക്കായി കോൺഫിഗറേഷൻ ഫയലുകൾ സൃഷ്uടിക്കുക.

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

തുടർന്ന് ഇനിപ്പറയുന്ന സെർവർ ബ്ലോക്ക് കോൺഫിഗറേഷനുകൾ ബന്ധപ്പെട്ട ഫയലുകളിൽ ഒട്ടിക്കുക.

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;

        }
}
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. /etc/nginx/nginx.conf എന്നതിലെ http ബ്ലോക്കിന്റെ ക്ലോസിംഗ് ഭാഗത്ത് നിങ്ങൾക്ക് ഇനിപ്പറയുന്ന വരി ഉണ്ടെന്ന് ഉറപ്പാക്കുക. Nginx പ്രവർത്തിക്കുമ്പോൾ /etc/nginx/conf.d/ ഡയറക്uടറിക്കുള്ളിൽ എല്ലാ കോൺഫിഗറേഷൻ ഫയലുകളും ഉൾപ്പെടുത്താൻ ഇത് സഹായിക്കുന്നു.

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

ഘട്ടം 8: വ്യത്യസ്uത PHP പതിപ്പുകൾ പരിശോധിക്കുന്നു

17. അവസാനമായി, നിങ്ങളുടെ സെർവർ PHP യുടെ രണ്ട് പതിപ്പുകൾ ഉപയോഗിക്കുന്നുണ്ടോ എന്ന് പരിശോധിക്കേണ്ടതുണ്ട്. കാണിച്ചിരിക്കുന്നതുപോലെ നിങ്ങളുടെ വെബ്uസൈറ്റുകളുടെ ഡോക്യുമെന്റ് റൂട്ട് ഡയറക്uടറികളിൽ നിങ്ങൾക്ക് വളരെ അടിസ്ഥാനപരമായ ഒരു info.php സ്uക്രിപ്റ്റ് സൃഷ്uടിക്കാനാകും.

# 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-fpm എന്നിവ പുനരാരംഭിക്കേണ്ടതുണ്ട്. എന്നാൽ അങ്ങനെ ചെയ്യുന്നതിനുമുമ്പ് ഏതെങ്കിലും വാക്യഘടന പിശകുകൾക്കായി Nginx കോൺഫിഗറേഷൻ ഫയലുകൾ നിങ്ങൾക്ക് ആദ്യം പരിശോധിക്കാം.

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

19. അവസാനമായി മറ്റൊരു കാര്യം കൂടി ചെയ്യാനുണ്ട്, പ്രത്യേകിച്ചും നിങ്ങൾ പ്രാദേശികമായി സെർവർ പ്രവർത്തിപ്പിക്കുകയാണെങ്കിൽ, ചുവടെയുള്ള സ്ക്രീൻ ഷോട്ടിൽ കാണിച്ചിരിക്കുന്നതുപോലെ /etc/hosts ഫയൽ ഉപയോഗിച്ച് ലോക്കൽ DNS സജ്ജീകരിക്കേണ്ടതുണ്ട്.

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 പതിപ്പുകൾ ഉപയോഗിച്ച് ഫയലുകൾ വിന്യസിക്കാനും വെബ്uസൈറ്റുകൾ പരിശോധിക്കാനും കഴിയും. നിങ്ങൾക്ക് എന്തെങ്കിലും കൂട്ടിച്ചേർക്കലുകളോ മുന്നോട്ട് വയ്ക്കാനുള്ള ചോദ്യങ്ങളോ ഉണ്ടെങ്കിൽ, ചുവടെയുള്ള അഭിപ്രായ ഫോം ഉപയോഗിക്കുക.