Kā palaist vairākas vietnes ar dažādām PHP versijām


Dažreiz PHP izstrādātāji vēlas izveidot un palaist dažādas vietnes/lietojumprogrammas, izmantojot dažādas PHP versijas vienā un tajā pašā tīmekļa serverī. Kā Linux sistēmas administratoram jums ir jāiestata vide, kurā vienā tīmekļa serverī, t.i., Nginx, varat palaist vairākas vietnes, izmantojot dažādu PHP versiju.

Šajā apmācībā mēs jums paskaidrosim, kā instalēt vairākas PHP versijas un konfigurēt tīmekļa serveri Nginx darbam ar tiem, izmantojot serveru blokus (virtuālos resursdatorus Apache) CentOS/RHEL 7 izplatījumos, izmantojot LEMP steku.

Nginx izmanto PHP-FPM (apzīmē FastCGI procesu pārvaldnieku), kas ir alternatīva PHP FastCGI ieviešana ar dažām papildu, noderīgām funkcijām ļoti ielādētām vietnēm.

  1. RHEL 7 serveris ar minimālu instalēšanu.
  2. Nginx HTTP serveris.
  3. PHP 7.1 (jāizmanto kā noklusējuma versija) un 5.6.
  4. MariaDB datu bāzes serveris.
  5. Servera IP adrese: 192.168.56.10.
  6. Vietnes: example1.com un example2.com.

1. darbība: EPEL un Remi repozitorija instalēšana un iespējošana

1. Vispirms sāciet instalēt un iespējot EPEL un Remi repozitoriju, kas piedāvā jaunākās PHP kaudzes versijas CentOS/RHEL 7 izplatījumos.

# 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. Pēc tam instalējiet paketi yum-utils, kas paplašina yum vietējās funkcijas un nodrošina komandu yum-config-manager, kuru izmanto, lai sistēmā iespējotu vai atspējotu Yum krātuves.

# yum install yum-utils

Piezīme: RHEL 7 varat iespējot izvēles kanālu dažām atkarībām, izmantojot šādu komandu.

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

2. darbība: Nginx tīmekļa servera instalēšana

3. Lai instalētu jaunāko Nginx versiju, mums jāpievieno oficiālā Nginx repozitorijs, jāizveido fails ar nosaukumu /etc/yum.repos.d/nginx.repo.

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

Pievienojiet failam šādas rindas atbilstoši savam izplatījumam.

--------------- 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. Kad nginx repo ir pievienots, varat instalēt Nginx, izmantojot yum pakotņu pārvaldnieka rīku, kā parādīts.

# yum install nginx

3. solis: MariaDB datu bāzes servera instalēšana

5. Lai instalētu jaunāko MariaDB versiju, mums jāpievieno oficiālā MariaDB krātuve, jāizveido fails ar nosaukumu /etc/yum.repos.d/mariadb.repo.

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

Pievienojiet failam šādas rindas atbilstoši savam izplatījumam.

--------------- 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. Kad MariaDB repo ir pievienots, varat instalēt MariaDB, izmantojot yum pakotņu pārvaldnieka rīku, kā parādīts.

# yum install MariaDB-client MariaDB-server

7. Pēc tam nodrošiniet datu bāzes servera instalēšanu, izmantojot zemāk esošo skriptu. Iestatiet saknes paroli un atbildiet uz y un nospiediet taustiņu [Enter], lai atlikušie turpmākie jautājumi atspējotu attālo root lietotāja pieteikšanos, noņemtu anonīmu lietotāju kontus un testa datu bāzi, kurai pēc noklusējuma var piekļūt visi lietotāji , pat anonīmi lietotāji.

# mysql_secure_installation

4. darbība. Vairāku PHP versiju instalēšana

8. Lai projektiem instalētu dažādas PHP versijas, izmantojiet komandu yum-config-manager, lai instalētu vairākas PHP versijas kopā ar visvairāk nepieciešamajiem moduļiem, kā parādīts.

# 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. Pēc PHP instalēšanas jūs varat izmantot šādu komandu, lai pārbaudītu jūsu serverī izmantoto noklusējuma PHP versiju.

# php -v

5. darbība: PHP-FPM un PHP56-PHP-FPM konfigurēšana

10. Šī ir šīs apmācības visinteresantākā daļa, tajā ir paskaidrots, kā jūs faktiski varat palaist vairākas PHP versijas savā serverī. Šeit jūs konfigurēsit dažādas php-fpm versijas, ar kurām Nginx strādās. Jums jādefinē FastCGI procesu lietotājs/grupa, kā arī porti, kurus viņi klausīsies.

Šie ir divi tālāk norādītie konfigurācijas faili, kurus rediģēsit.

  • php-fpm (noklusējums 7.1) - /etc/php-fpm.d/www.conf
  • php56-php-fpm - /opt/remi/php56/root/etc/php-fpm.d/www.conf

Atveriet iepriekš minētos failus, iestatiet FastCGI procesu lietotāju/grupu.

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

Noklusējuma vērtībām jābūt apache, nomainiet tās uz nginx, kā parādīts.

user = nginx
group = nginx

11. Pēc tam atrodiet klausīšanās parametrus un definējiet adresi: ports, kurā tiks saņemti FastCGI pieprasījumi.

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

12. Kad visas iepriekš minētās konfigurācijas ir izdarītas, jums jāsāk un jāaktivizē Nginx, MariaDB un PHP-FPM automātiska palaišana sistēmas sāknēšanas laikā.

# 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 

Uzmanību: Ja, palaižot PHP otro instanci, rodas kādas kļūdas, php56-php-fpm, SELinux politika varētu bloķēt tā palaišanu. Ja SELinux ir izpildes režīmā, iestatiet to atļautajā režīmā un pēc tam mēģiniet vēlreiz sākt pakalpojumu.

# getenforce
# setenforce 0 

6. darbība: iestatiet vietnes ar atļaujām

13. Šajā brīdī jūs varat izveidot nepieciešamos direktorijus savām vietnēm zem/var/www/html /. Jums arī jāizveido direktoriji žurnālu glabāšanai šādi:

---------------- 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. Visiem direktorijiem iestatiet atbilstošās īpašumtiesību atļaujas.

---------------- 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. darbība: iestatiet Nginx servera blokus vietnēm

15. Tagad konfigurējiet, kā Nginx apstrādās pieprasījumus jūsu vietnēm, izmantojot servera bloka konfigurācijas failus, kuriem jāatrodas /etc/nginx/conf.d/.

Izveidojiet konfigurācijas failus savām vietnēm, kas beidzas ar paplašinājumu .conf .

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

Pēc tam attiecīgajos failos ielīmējiet šādas servera bloka konfigurācijas.

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. Pārliecinieties, vai http/aizvēršanas sadaļā /etc/nginx/nginx.conf ir šāda rinda. Tas palīdz iekļaut visus konfigurācijas failus direktorijā /etc/nginx/conf.d/, kad darbojas Nginx.

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

8. solis: dažādu PHP versiju pārbaude

17. Visbeidzot, jums jāpārbauda, vai jūsu serveris izmanto abas PHP versijas. Jūs varat izveidot ļoti vienkāršu info.php skriptu savu vietņu dokumentu saknes direktorijos, kā parādīts.

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

18. Lai lietotu visas iepriekš veiktās izmaiņas, restartējiet Nginx, php-fpm un php56-php-fpm. Bet vispirms to varat pārbaudīt, vai Nginx konfigurācijas failos nav sintakses kļūdu.

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

19. Ir vēl viena pēdējā lieta, kas jādara, it īpaši, ja serveri palaižat lokāli, jums jāiestata vietējais DNS, izmantojot/etc/hosts failu, kā parādīts zemāk redzamajā ekrānuzņēmumā.

192.168.56.10   example1.com   example1
192.168.56.10   example2.com   example2

20. Visbeidzot, atveriet tīmekļa pārlūkprogrammu un ierakstiet šādas adreses, lai pārbaudītu sistēmā instalētās PHP versijas.

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

Tieši tā! Tagad jūs varat izvietot failus un pārbaudīt vietnes ar dažādām PHP versijām. Ja jums ir kādi papildinājumi vai jautājumi, kurus varat izvirzīt, izmantojiet zemāk esošo komentāru veidlapu.