Weboldal keresés

Több webhely futtatása különböző PHP-verziókkal az Nginxben


Néha a PHP-fejlesztők különböző webhelyeket/alkalmazásokat szeretnének létrehozni és futtatni a PHP különböző verzióinak felhasználásával ugyanazon a webszerveren. Linux rendszergazdaként be kell állítania egy olyan környezetet, ahol több webhelyet futtathat különböző PHP-verziókkal egyetlen webszerveren, azaz az Nginx-en.

Ebben az oktatóanyagban elmagyarázzuk, hogyan telepítheti a PHP több verzióját, és hogyan konfigurálhatja az Nginx webszervert, hogy működjön velük a szerverblokkokon keresztül (virtuális gazdagépek az Apache-ban) CentOS/RHEL 7 disztribúciók LEMP verem használatával.

Olvassa el még: Pyenv – Több Python-verzió telepítése adott projekthez

Az Nginx a PHP-FPM-et használja (a FastCGI Process Manager rövidítése), amely egy alternatív PHP FastCGI implementáció néhány extra, hasznos funkciók az erősen terhelt webhelyekhez.

Tesztkörnyezet beállítás

  1. CentOS 7 vagy RHEL 7 szerver minimális telepítéssel.
  2. Nginx HTTP szerver.
  3. PHP 7.1 (alapértelmezett verzióként használandó) és 5.6.
  4. MariaDB adatbázis-kiszolgáló.
  5. Szerver IP-címe: 192.168.56.10.
  6. Webhelyek: example1.com és example2.com.

1. lépés: Az EPEL és a Remi Repository telepítése és engedélyezése

1. Először is telepítse és engedélyezze az EPEL és Remi adattárat, amelyek a PHP legújabb verzióit kínálják. halmozzon fel CentOS/RHEL 7 disztribúciókat.

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. Ezután telepítse a yum-utils csomagot, amely kiterjeszti a yum natív funkcióit, és biztosítja a yum-config-manager parancsot, amely lehetővé teszi vagy tiltsa le a Yum adattárakat a rendszeren.

yum install yum-utils

Megjegyzés: Az RHEL 7 rendszeren a következő paranccsal engedélyezheti az opcionális csatornát bizonyos függőségek számára.

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

2. lépés: Az Nginx webszerver telepítése

3. Az Nginx legújabb verziójának telepítéséhez hozzá kell adnunk a hivatalos Nginx-tárat, és létre kell hoznunk egy /etc/yum.repos.d/nginx.repo nevű fájlt.

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

Adja hozzá a következő sorokat a fájlhoz a disztribúciójának megfelelően.

--------------- 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. Az nginx repo hozzáadása után telepítheti az Nginx-et a yum csomagkezelő eszközzel az ábrán látható módon.

yum install nginx

3. lépés: A MariaDB Database Server telepítése

5. A MariaDB legújabb verziójának telepítéséhez hozzá kell adnunk a hivatalos MariaDB adattárat, és létre kell hoznunk egy /etc/yum.repos.d/mariadb.repo nevű fájlt.

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

Adja hozzá a következő sorokat a fájlhoz a disztribúciójának megfelelően.

--------------- 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. A MariaDB repo hozzáadása után telepítheti a MariaDB-t a yum csomagkezelő eszközzel az ábrán látható módon.

yum install MariaDB-client MariaDB-server

7. Ezt követően biztosítsa az adatbázis-kiszolgáló telepítését az alábbi szkript segítségével. Állítson be egy root jelszót, és válaszoljon az y válaszra, majd nyomja meg az [Enter] billentyűt a további kérdésekhez a távoli root felhasználói bejelentkezés letiltásához, az anonim felhasználói fiókok eltávolításához és az adatbázis teszteléséhez, amely alapértelmezés szerint minden felhasználó hozzáférhet, még a névtelen felhasználók is.

mysql_secure_installation

Olvassa el még: 12 MySQL/MariaDB biztonsági bevált gyakorlat Linuxhoz

4. lépés: A PHP több verziójának telepítése

8. A PHP különböző verzióinak projektjeihez való telepítéséhez használja a yum-config-manager parancsot a PHP több verziójának telepítéséhez a legtöbb szükséges modullal együtt, az ábra szerint.

Telepítse a PHP 7.1-es verzióját

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

Telepítse a PHP 5.6-os verzióját

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. A PHP telepítése után a következő paranccsal ellenőrizheti a szerverén használt PHP alapértelmezett verzióját.

php -v

5. lépés: A PHP-FPM és a PHP56-PHP-FPM konfigurálása

10. Ez az oktatóanyag legérdekesebb része, amely elmagyarázza, hogyan futtathat több PHP-verziót a szerveren. Itt beállíthatja a php-fpm különböző verzióit, amelyekkel az Nginx működni fog. Meg kell határoznia a FastCGI folyamatok felhasználóját/csoportját, valamint azokat a portokat, amelyeken figyelni fognak.

Ez a következő két konfigurációs fájl, amelyeket szerkeszteni fog.

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

Nyissa meg a fenti fájlokat, állítsa be a FastCGI folyamatok felhasználóját/csoportját.

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

Az alapértelmezett értékeknek apachenak kell lenniük, módosítsa őket nginx értékre az ábrán látható módon.

user = nginx
group = nginx

11. Ezután keresse meg a figyelési paramétereket, és határozza meg azt a cím:portot, amelyen a FastCGI-kérelmek érkeznek.

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

12. Ha az összes fenti konfigurációt elvégezte, el kell indítania és engedélyeznie kell az Nginx, MariaDB és PHP-FPM funkciót. hogy automatikusan elinduljon a rendszer indításakor.

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 

Figyelem: Ha bármilyen hibát észlel a PHP második példányának (php56-php-fpm) indításakor, előfordulhat, hogy egy SELinux házirend blokkolja az elejétől. Ha a SELinux kényszerítő módban van, állítsa megengedő módba, majd próbálja meg újra elindítani a szolgáltatást.

getenforce
setenforce 0 

6. lépés: Webhelyek beállítása engedélyekkel

13. Ezen a ponton a /var/www/html/ alatt létrehozhatja a webhelyeihez szükséges könyvtárakat. A naplók tárolására könyvtárakat is létre kell hoznia az alábbiak szerint:

---------------- 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. Állítsa be a megfelelő tulajdonosi engedélyeket az összes könyvtárban.

---------------- 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. lépés: Állítsa be az Nginx szerverblokkokat webhelyekhez

15. Most állítsa be, hogyan dolgozza fel az Nginx a webhelyeihez intézett kéréseket a szerverblokk konfigurációs fájljaival, amelyeknek a következő helyen kell lenniük: /etc/nginx/conf.d/.

Hozza létre a .conf kiterjesztéssel végződő konfigurációs fájlokat webhelyei számára.

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

Ezután illessze be a következő szerverblokk-konfigurációkat a megfelelő fájlba.

Weboldal 1

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;

        }
}

Weboldal 2

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. Győződjön meg arról, hogy a következő sor szerepel a http blokk záró részében a /etc/nginx/nginx.conf fájlban. Segít, ha az Nginx futásakor az összes konfigurációs fájlt felveheti az /etc/nginx/conf.d/ könyvtárba.

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

8. lépés: Különböző PHP-verziók tesztelése

17. Végül tesztelnie kell, hogy a szervere a PHP két verzióját használja-e. A képen látható módon létrehozhat egy nagyon egyszerű info.php szkriptet webhelyei gyökérkönyvtáraiban.

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

18. A fenti módosítások alkalmazásához újra kell indítania az Nginx, php-fpm és php56-php- fpmre. De először is ellenőrizheti, hogy az Nginx konfigurációs fájljaiban vannak-e szintaktikai hibák, mielőtt ezt megtenné.

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

19. Van még egy utolsó teendő, különösen, ha helyileg futtatja a kiszolgálót, be kell állítania a helyi DNS-t az /etc/hosts fájl segítségével, ahogy az a képernyőkép lent.

192.168.56.10   example1.com   example1
192.168.56.10   example2.com   example2

20. Végül nyisson meg egy webböngészőt, és írja be a következő címeket a rendszerre telepített PHP verzióinak ellenőrzéséhez.

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

Ez az! Mostantól telepíthet fájlokat és tesztelhet webhelyeket különböző PHP-verziókkal. Ha bármilyen kiegészítése van, vagy kérdése van, használja az alábbi megjegyzés űrlapot.