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
- CentOS 7 vagy RHEL 7 szerver minimális telepítéssel.
- Nginx HTTP szerver.
- PHP 7.1 (alapértelmezett verzióként használandó) és 5.6.
- MariaDB adatbázis-kiszolgáló.
- Szerver IP-címe: 192.168.56.10.
- 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.