Kif Tmexxi Websajts Multipli b'Verżjonijiet PHP Differenti f'Nginx


Xi drabi l-iżviluppaturi PHP jridu jibnu u jmexxu websajts/applikazzjonijiet differenti billi jużaw verżjonijiet differenti tal-PHP fuq l-istess web server. Bħala amministratur tas-sistema Linux, inti mitlub li twaqqaf ambjent fejn tista 'tħaddem websajts multipli billi tuża verżjoni PHP differenti fuq server tal-web wieħed jiġifieri Nginx.

F'dan it-tutorja, aħna nispjegawk kif tinstalla verżjonijiet multipli ta 'PHP u tikkonfigura s-server tal-web Nginx biex taħdem magħhom permezz tal-blokki tas-server (hosts virtwali f'Apache) fid-distribuzzjonijiet CentOS/RHEL 7 bl-użu ta' LEMP stack.

Nginx juża PHP-FPM (jiġifieri FastCGI Process Manager), li hija implimentazzjoni alternattiva ta' PHP FastCGI b'xi karatteristiċi żejda u utli għal websajts mgħobbija ħafna.

  1. Server RHEL 7 b'installazzjoni minima.
  2. Nginx HTTP Server.
  3. PHP 7.1 (li għandu jintuża bħala verżjoni default) u 5.6.
  4. MariaDB Database Server.
  5. Indirizz IP tas-server: 192.168.56.10.
  6. Siti web: example1.com u example2.com.

Pass 1: Installazzjoni u Attivazzjoni tar-Repożitorju ta' EPEL u Remi

1. L-ewwel ibda billi tinstalla u tippermetti r-repożitorju EPEL u Remi, li joffri l-aħħar verżjonijiet tal-munzell PHP fuq distribuzzjonijiet 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. Sussegwentement installa l-pakkett yum-utils, li jestendi l-funzjonalitajiet nattivi ta 'yum u jipprovdi kmand yum-config-manager, li jintuża biex jippermetti jew jiskonnettja r-repożitorji Yum fis-sistema.

# yum install yum-utils

Nota: Fuq RHEL 7 tista 'tippermetti l-kanal fakultattiv għal xi dipendenzi billi tuża l-kmand li ġej.

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

Pass 2: Installazzjoni ta 'Nginx Web Server

3. Biex tinstalla l-aħħar verżjoni ta 'Nginx, irridu nżidu r-repożitorju uffiċjali ta' Nginx, noħolqu fajl bl-isem /etc/yum.repos.d/nginx.repo.

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

Żid il-linji li ġejjin għall-fajl skont id-distribuzzjoni tiegħek.

--------------- 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. Ladarba nginx repo tkun ġiet miżjuda, tista 'tinstalla Nginx billi tuża l-għodda tal-maniġer tal-pakketti yum kif muri.

# yum install nginx

Pass 3: Installazzjoni ta' MariaDB Database Server

5. Biex tinstalla l-aħħar verżjoni ta 'MariaDB, għandna bżonn inżidu r-repożitorju uffiċjali ta' MariaDB, noħolqu fajl bl-isem /etc/yum.repos.d/mariadb.repo.

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

Żid il-linji li ġejjin għall-fajl skont id-distribuzzjoni tiegħek.

--------------- 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. Ladarba MariaDB repo tkun ġiet miżjuda, inti tista 'tinstalla MariaDB billi tuża għodda ta' maniġer tal-pakketti yum kif muri.

# yum install MariaDB-client MariaDB-server

7. Wara, assigura l-installazzjoni tas-server tad-database billi tuża l-iskript hawn taħt. Issettja password root u wieġeb y u agħfas [Enter] għall-bqija tal-mistoqsijiet sussegwenti biex tiddiżattiva l-login remot tal-utent root, neħħi l-kontijiet tal-utent anonimu u tittestja database li b'mod awtomatiku tista' tiġi aċċessata mill-utenti kollha , anke utenti anonimi.

# mysql_secure_installation

Pass 4: Installazzjoni ta 'Verżjonijiet Multipli ta' PHP

8. Biex tinstalla verżjonijiet differenti ta 'PHP għall-proġetti tiegħek, uża l-kmand yum-config-manager biex tinstalla verżjonijiet multipli ta' PHP flimkien mal-biċċa l-kbira tal-moduli meħtieġa kif muri.

# 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. Ladarba installat PHP, tista 'tuża l-kmand li ġej biex tivverifika l-verżjoni default ta' PHP użata fuq is-server tiegħek.

# php -v

Pass 5: Konfigurazzjoni PHP-FPM u PHP56-PHP-FPM

10. Din hija l-aktar parti interessanti ta 'dan it-tutorja, tispjega kif tista' attwalment tħaddem verżjonijiet multipli PHP fuq is-server tiegħek. Hawnhekk, inti ser tikkonfigura l-verżjonijiet differenti ta 'php-fpm li Nginx se jaħdem magħhom. Għandek tiddefinixxi l-utent/grupp tal-proċessi FastCGI kif ukoll il-portijiet li se jisimgħu fuqhom.

Dawn huma ż-żewġ fajls ta 'konfigurazzjoni li ġejjin li se teditja.

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

Iftaħ il-fajls ta 'hawn fuq, issettja l-utent/grupp ta' proċessi 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] 

Il-valuri default għandhom ikunu apache, ibdelhom għal nginx kif muri.

user = nginx
group = nginx

11. Sussegwentement, sib il-parametri jisimgħu, u ddefinixxi l-indirizz:port li fih se jiġu riċevuti t-talbiet FastCGI.

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

12. Ladarba ssir il-konfigurazzjoni kollha ta 'hawn fuq, għandek bżonn tibda u tippermetti Nginx, MariaDB u PHP-FPM biex jibdew awtomatikament fil-boot tas-sistema.

# 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 

Attenzjoni: F'każ li jkollok xi żbalji waqt li tibda t-tieni istanza ta' PHP, php56-php-fpm, politika SELinux tista' tkun qed timblokkaha milli tibda. Jekk SELinux jinsab fil-modalità ta' infurzar, issettjah għall-modalità permissiva, imbagħad ipprova tibda s-servizz għal darb'oħra.

# getenforce
# setenforce 0 

Pass 6: Issettja Websajts b'Permessi

13. F'dan il-punt, issa tista 'toħloq id-direttorji meħtieġa għall-websajts tiegħek taħt /var/www/html/. Għandek bżonn ukoll toħloq direttorji biex taħżen zkuk kif ġej:

---------------- 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. Issettja l-permessi xierqa tas-sjieda fuq id-direttorji kollha.

---------------- 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/

Pass 7: Issettja Nginx Server Blocks għal Websajts

15. Issa kkonfigurat kif Nginx se tipproċessa t-talbiet lill-websajts tiegħek billi tuża l-fajls tal-konfigurazzjoni tal-blokk tas-server li għandhom ikunu jinsabu f'/etc/nginx/conf.d/.

Oħloq il-fajls tal-konfigurazzjoni għall-websajts tiegħek li jispiċċaw bl-estensjoni .conf.

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

Imbagħad waħħal il-konfigurazzjonijiet tal-blokk tas-server li ġejjin fil-fajls rispettivi.

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. Kun żgur li għandek il-linja li ġejja fil-parti tal-għeluq tal-blokk http f'/etc/nginx/nginx.conf. Jgħin biex jinkludi l-fajls tal-konfigurazzjoni kollha ġewwa d-direttorju /etc/nginx/conf.d/ meta Nginx ikun qed jaħdem.

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

Pass 8: Ittestjar ta' Verżjonijiet PHP differenti

17. Fl-aħħarnett, trid tittestja li s-server tiegħek qed juża ż-żewġ verżjonijiet tal-PHP. Tista 'toħloq skript info.php bażiku ħafna fid-direttorji tal-għeruq tad-dokumenti tal-websajts tiegħek kif muri.

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

18. Biex tapplika l-bidliet kollha li għamilt hawn fuq, għandek bżonn terġa 'tibda Nginx, php-fpm u php56-php-fpm. Imma l-ewwelnett tista 'tiċċekkja li l-fajls tal-konfigurazzjoni Nginx għal kwalunkwe żbalji ta' sintassi qabel tagħmel dan.

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

19. Hemm l-aħħar ħaġa oħra li tagħmel, speċjalment jekk qed tmexxi s-server tiegħek lokalment, trid issettja d-DNS lokali billi tuża l-fajl /etc/hosts kif muri fl-iscreen shot hawn taħt.

192.168.56.10   example1.com   example1
192.168.56.10   example2.com   example2

20. Fl-aħħarnett, iftaħ web browser u ttajpja l-indirizzi li ġejjin biex tivverifika l-verżjonijiet tal-PHP installati fis-sistema.

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

Dak hu! Issa tista' tuża fajls u tittestja websajts b'verżjonijiet PHP differenti. Jekk għandek xi żidiet x'tagħmel jew mistoqsijiet x'tressaq, uża l-formola tal-kummenti hawn taħt.