GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Führen Sie mehrere Versionen von PHP für verschiedene Domains in NGNIX aus

Ich habe kürzlich das EduExpression WordPress-Plugin für einen Kunden gekauft, um eine Prüfungssoftware einzurichten. Ich konnte das Plugin ohne große Probleme installieren und konfigurieren. Das Problem trat jedoch auf, als auf das Schüler-Login zugegriffen wurde – die Plug-in-Seite wurde leer, als der Schüler versuchte, eine Prüfung abzulegen. Nun, ich habe eine Unterstützung, oder? Ich habe das Support-Team kontaktiert und sie sagten, das Plugin funktioniert nicht mit PHP 7.1 und es unterstützt nur PHP 5.6. Das ist mein Fehler – weil ich meinen Server mit PHP 7.1 eingerichtet hatte und alle meine Client-Websites auf PHP 7.1 liefen. Damit EduExpression funktioniert, muss ich die PHP 5.6-Version einrichten. Ein Downgrade von PHP ist nie eine gute Option, aber ich musste dies tun, damit dieses Plugin für den Client funktioniert. Wie wäre es also, PHP 5.6 nur für eine bestimmte Domain einzurichten und den Rest auf PHP 7.1 laufen zu lassen? Nun, in diesem Tutorial erkläre ich, wie Sie mehrere Versionen der PHP-Umgebung einrichten und eine bestimmte Version von PHP mit einer bestimmten Domain in NGINX verknüpfen.

Umfeld

Betriebssystem:CentOS 7, Webserver:Nginx, PHP:v7.1 (Standard), PHP FastCGI:PHP-FPM

Hinweis:Die obige Umgebung ist bereits eingerichtet und wird erfolgreich ausgeführt.

Schritt 1 :Mehrere Versionen von PHP installieren, dh PHPv5.6 zusammen mit PHP7.1

Hier verwende ich yum Befehl, um mehrere Versionen von PHP zusammen mit den erforderlichen Modulen zu installieren, wie unten gezeigt:

Installieren der PHP5.6-Version

# yum install php56 php56-php-common 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

Installieren Sie PHP-FPM für die Version PHP 5.6

PHP auf Nginx funktioniert über PHP-FPM (FastCGI Process Manager). PHP-FPM ist eine alternative PHP-FastCGI-Implementierung mit einigen zusätzlichen Funktionen, die für Websites jeder Größe nützlich sind, insbesondere für stark frequentierte Websites.

# yum install php56-php-fpm

Nun, wir haben PHP 5.6 installiert, aber wir sollten sicherstellen, dass die Standardversion von PHP immer noch 7.1 ist.

# php -v
PHP 7.1.22 (cli) (built: Sep 12 2018 07:22:13) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.1.0, Copyright (c) 1998-2018 Zend Technologies
 with Zend OPcache v7.1.22, Copyright (c) 1999-2018, by Zend Technologies

Konfiguriere PHP-FPM und PHP56-PHP-FPM

Der wichtigste Teil dieses Tutorials besteht darin, zwei verschiedene PHP-FPM für zwei PHP-Versionen zu konfigurieren. Hier werden wir zwei verschiedene Versionen von PHP-FPM konfigurieren, mit denen Nginx arbeiten wird. Die Hauptsache während der Konfiguration ist der Benutzer/die Gruppe von FastCGI-Prozessen und die Ports, auf denen sie lauschen.

PHP-FPM (Standard 7.1) Konfigurationsdatei

/etc/php-fpm.d/www.conf

Stellen Sie sicher, dass der Benutzer/die Gruppe auf nginx eingestellt ist (Standardwert ist Apache).

user = nginx
group = nginx

Suchen Sie den Listen-Parameter und legen Sie ihn auf Port 9000 fest, auf dem FastCGI-Anfragen empfangen werden.

listen = 127.0.0.1:9000	[php-fpm]
PHP56-PHP-FPM-Konfigurationsdatei

/opt/remi/php56/root/etc/php-fpm.d/www.conf

Stellen Sie sicher, dass der Benutzer/die Gruppe nginx festgelegt hat (Standardwert ist Apache).

user = nginx
group = nginx

Suchen Sie den Listen-Parameter und setzen Sie ihn auf Port 9001, auf dem FastCGI-Anfragen empfangen werden.

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

Aktivieren Sie PHP-FPM, PHP56-PHP-FPM und NGINX automatischer Start beim Systemstart auf CentOS 7

Nachdem Sie die obigen Konfigurationen abgeschlossen haben, müssen Sie PHP-FPM, PHP56-PHP-FPM und Nginx so aktivieren, dass sie beim Systemstart automatisch gestartet werden.

# systemctl enable nginx

# systemctl enable php-fpm

# systemctl enable php56-php-fpm
Schalten Sie SELinux aus

#sudo setenforce 0

Domains mit entsprechendem PHP-FPM für PHP-Ausführungen konfigurieren

Öffnen Sie die entsprechende Domänenkonfigurationsdatei von Nginx (/etc/nginx/conf.d/ ) und suchen Sie nach der Zeile fastcgi_pass und ändern Sie es entsprechend, um die richtige PHP-Version zu verknüpfen, die es ausführen muss.

Domäne 1 Nginx-Konfigurationsdatei:/etc/nginx/conf.d/example1.conf

server {
 listen :80;
 server_name example1.com;
 server_name www.example1.com;

 root /home/example1/public_html;
 index index.php index.html index.htm;

 location / {
      try_files $uri $uri/ /index.php?q=$uri$args;
 }
 location ~ \.php$ {
      try_files $uri =404;
      fastcgi_pass 127.0.0.1:9000;
      fastcgi_index index.php;
      fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
      fastcgi_param SCRIPT_NAME $fastcgi_script_name;
      include fastcgi_params;
 }
}

Nginx-Konfigurationsdatei für Domäne 2: /etc/nginx/conf.d/example2.conf

server {
 listen :80;
 server_name example2.com;
 server_name www.example2.com;

 root /home/example2/public_html;
 index index.php index.html index.htm;

 location / {
       try_files $uri $uri/ /index.php?q=$uri$args;
 }
 location ~ \.php$ {
       try_files $uri =404;
       fastcgi_pass 127.0.0.1:9001;
       fastcgi_index index.php;
       fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
       fastcgi_param SCRIPT_NAME $fastcgi_script_name;
       include fastcgi_params;
 }
}

Überprüfen Sie die Nginx-Konfigurationsdateien auf Syntaxfehler, bevor Sie Nginx neu starten

# nginx -t

Starten Sie Nginx, PHP-fpm, PHp56-PHP-FPM neu

# systemctrl restart nginx, php-fpm php56-php-fpm

Testen Sie verschiedene PHP-Versionen für verschiedene Domains

Erstellen Sie verschiedene phpinfo Dateien unter den zwei unterschiedlichen Domänen-Root-Verzeichnissen

# echo "<?php phpinfo(); ?>" > /home/example1/public_html/info.php

# echo "<?php phpinfo(); ?>" > /home/example2/public_html/info.php

Öffnen Sie nun info.php im Browser, um example1.com mit PHP 7.1 und example2.com mit PHP 5.6 zu überprüfen.

http://example1.com/info.php

http://example2.com/info.php

Das ist es! Ich habe gerade das EduExpression-Plugin auf example2.com bereitgestellt, das auf PHP 5.6 läuft.


Linux
  1. nginx - 413 Anforderungsentität zu groß

  2. Konfigurieren von Apache für Magento, um verschiedene Store-Ansichten von verschiedenen URLs/Domains anzuzeigen.

  3. Erstellen Sie mit Conda eine virtuelle Umgebung für verschiedene Python-Versionen

  4. Mehrere Versionen von PHP in Plesk

  5. Wie überprüfe ich, ob auf Ubuntu 12.04 LTS mehrere PHP-Versionen installiert sind?

So wechseln Sie zwischen mehreren PHP-Versionen in Ubuntu

So führen Sie ein Python-Skript in PHP aus

So installieren Sie mehrere PHP-Versionen unter Ubuntu 20.04, 18.04, 20.10

So führen Sie verschiedene PHP-Versionen auf demselben Server aus

So installieren Sie verschiedene PHP-Versionen (5.6, 7.x und 8.0) in Ubuntu

Hosten Sie mehrere Websites mit unterschiedlichen PHP-Versionen auf Ubuntu 18.04 VPS