Hvernig á að keyra margar vefsíður með mismunandi PHP útgáfum í Nginx


Stundum vilja PHP forritarar byggja og keyra mismunandi vefsíður/forrit með mismunandi útgáfum af PHP á sama vefþjóni. Sem Linux kerfisstjóri þarftu að setja upp umhverfi þar sem þú getur keyrt margar vefsíður með mismunandi PHP útgáfu á einum vefþjóni, þ.e. Nginx.

Í þessari kennslu munum við útskýra hvernig á að setja upp margar útgáfur af PHP og stilla vefþjóninn Nginx til að vinna með þeim í gegnum netþjónablokkirnar (sýndarhýsingar í Apache) í CentOS/RHEL 7 dreifingum með LEMP stafla.

Nginx notar PHP-FPM (standar fyrir FastCGI Process Manager), sem er önnur PHP FastCGI útfærsla með nokkrum auka, gagnlegum eiginleikum fyrir mikið hlaðnar vefsíður.

  1. RHEL 7 þjónn með lágmarks uppsetningu.
  2. Nginx HTTP Server.
  3. PHP 7.1 (til að nota sem sjálfgefin útgáfa) og 5.6.
  4. MariaDB gagnagrunnsþjónn.
  5. IP vistfang netþjóns: 192.168.56.10.
  6. Vefsíður: example1.com og example2.com.

Skref 1: Setja upp og virkja EPEL og Remi Repository

1. Byrjaðu fyrst á því að setja upp og virkja EPEL og Remi geymsluna, sem býður upp á nýjustu útgáfur af PHP stafla á CentOS/RHEL 7 dreifingum.

# 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. Settu næst upp yum-utils pakkann, sem útvíkkar innfædda virkni yum og býður upp á yum-config-manager skipun, sem er notuð til að virkja eða slökkva á Yum geymslum á kerfinu.

# yum install yum-utils

Athugið: Á RHEL 7 geturðu virkjað valfrjálsa rás fyrir suma ósjálfstæði með því að nota eftirfarandi skipun.

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

Skref 2: Uppsetning Nginx vefþjóns

3. Til að setja upp nýjustu útgáfuna af Nginx þurfum við að bæta við opinberu Nginx geymslunni, búa til skrá sem heitir /etc/yum.repos.d/nginx.repo.

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

Bættu eftirfarandi línum við skrá samkvæmt dreifingu þinni.

--------------- 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. Þegar nginx repo hefur verið bætt við geturðu sett upp Nginx með því að nota yum pakkastjórnunarverkfæri eins og sýnt er.

# yum install nginx

Skref 3: Uppsetning MariaDB gagnagrunnsþjóns

5. Til að setja upp nýjustu útgáfuna af MariaDB þurfum við að bæta við opinberu MariaDB geymslunni, búa til skrá sem heitir /etc/yum.repos.d/mariadb.repo.

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

Bættu eftirfarandi línum við skrá samkvæmt dreifingu þinni.

--------------- 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. Þegar MariaDB repo hefur verið bætt við geturðu sett upp MariaDB með því að nota yum pakkastjórnunarverkfæri eins og sýnt er.

# yum install MariaDB-client MariaDB-server

7. Eftir það skaltu tryggja uppsetningu gagnagrunnsþjónsins með því að nota forskriftina hér að neðan. Stilltu rótarlykilorð og svaraðu y og ýttu á [Enter] fyrir restina af næstu spurningum til að slökkva á ytri innskráningu rótnotanda, fjarlægja nafnlausa notendareikninga og prófunargagnagrunn sem allir notendur geta sjálfgefið opnað fyrir. , jafnvel nafnlausir notendur.

# mysql_secure_installation

Skref 4: Setja upp margar útgáfur af PHP

8. Til að setja upp mismunandi útgáfur af PHP fyrir verkefnin þín, notaðu yum-config-manager skipunina til að setja upp margar útgáfur af PHP ásamt flestum nauðsynlegum einingum eins og sýnt er.

# 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. Þegar PHP hefur verið sett upp geturðu notað eftirfarandi skipun til að athuga sjálfgefna útgáfu PHP sem notuð er á þjóninum þínum.

# php -v

Skref 5: Stilla PHP-FPM og PHP56-PHP-FPM

10. Þetta er áhugaverðasti hluti þessarar kennslu, hann útskýrir hvernig þú getur í raun keyrt margar PHP útgáfur á netþjóninum þínum. Hér muntu stilla mismunandi útgáfur af php-fpm sem Nginx mun vinna með. Þú ættir að skilgreina notanda/hóp FastCGI ferlanna sem og höfnin sem þeir munu hlusta á.

Þetta eru eftirfarandi tvær stillingarskrár sem þú ætlar að breyta.

  • php-fpm (sjálfgefið 7.1) – /etc/php-fpm.d/www.conf
  • php56-php-fpm – /opt/remi/php56/root/etc/php-fpm.d/www.conf

Opnaðu skrárnar hér að ofan, stilltu notanda/hóp FastCGI ferla.

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

Sjálfgefin gildi ættu að vera apache, breyttu þeim í nginx eins og sýnt er.

user = nginx
group = nginx

11. Næst skaltu finna hlustunarfæribreyturnar og skilgreina address:port sem FastCGI beiðnir verða mótteknar á.

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

12. Þegar öllum ofangreindum stillingum er lokið þarftu að ræsa og virkja Nginx, MariaDB og PHP-FPM til að ræsa sjálfkrafa við ræsingu kerfisins.

# 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 

Athugið: Ef þú færð einhverjar villur þegar þú byrjar á öðru tilviki PHP, php56-php-fpm, gæti SELinux stefna verið að hindra það í að byrja. Ef SELinux er í framfylgdarham, stilltu það á leyfilega stillingu, reyndu síðan að hefja þjónustuna aftur.

# getenforce
# setenforce 0 

Skref 6: Settu upp vefsíður með heimildum

13. Á þessum tímapunkti geturðu nú búið til nauðsynlegar möppur fyrir vefsíðurnar þínar undir /var/www/html/. Þú þarft einnig að búa til möppur til að geyma annála sem hér segir:

---------------- 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. Stilltu viðeigandi eignarhaldsheimildir á allar möppur.

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

Skref 7: Settu upp Nginx netþjónablokkir fyrir vefsíður

15. Stilltu nú hvernig Nginx mun vinna úr beiðnum á vefsíðurnar þínar með því að nota stillingarskrárnar fyrir netþjónablokk sem ættu að vera staðsettar í /etc/nginx/conf.d/.

Búðu til stillingarskrár fyrir vefsíðurnar þínar sem enda á .conf endingunni.

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

Límdu síðan eftirfarandi stillingar miðlarablokkar í viðkomandi skrár.

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. Gakktu úr skugga um að þú hafir eftirfarandi línu í lokahluta http blokkarinnar í /etc/nginx/nginx.conf. Það hjálpar að innihalda allar stillingarskrár inni í /etc/nginx/conf.d/ möppunni þegar Nginx er í gangi.

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

Skref 8: Prófaðu mismunandi PHP útgáfur

17. Að lokum þarftu að prófa að þjónninn þinn noti tvær útgáfur af PHP. Þú getur búið til mjög einfalt info.php handrit í rótarskrám vefsíðna þinna eins og sýnt er.

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

18. Til að beita öllum breytingunum sem þú hefur gert hér að ofan þarftu að endurræsa Nginx, php-fpm og php56-php-fpm. En þú getur fyrst og fremst athugað hvort Nginx stillingarskrárnar séu fyrir allar setningafræðivillur áður en þú gerir það.

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

19. Það er eitt annað síðasta sem þarf að gera, sérstaklega ef þú ert að keyra netþjóninn þinn á staðnum, þú þarft að setja upp staðbundið DNS með því að nota /etc/hosts skrána eins og sýnt er á skjámyndinni hér að neðan.

192.168.56.10   example1.com   example1
192.168.56.10   example2.com   example2

20. Að lokum skaltu opna vafra og slá inn eftirfarandi vistföng til að staðfesta útgáfur af PHP sem eru uppsettar á kerfinu.

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

Það er það! Nú geturðu sett inn skrár og prófað vefsíður með mismunandi PHP útgáfum. Ef þú hefur einhverjar viðbætur til að gera eða spurningar til að setja fram skaltu nota athugasemdareyðublaðið hér að neðan.