So führen Sie mehrere Websites mit unterschiedlichen PHP -Versionen in Nginx aus

So führen Sie mehrere Websites mit unterschiedlichen PHP -Versionen in Nginx aus

Manchmal möchten PHP -Entwickler verschiedene Websites/Anwendungen mit verschiedenen Versionen von PHP auf demselben Webserver erstellen und ausführen. Als Linux -Systemadministrator müssen Sie eine Umgebung einrichten, in der Sie mehrere Websites mit einer verschiedenen PHP -Version auf einem einzelnen Webserver i ausführen können.e. Nginx.

In diesem Tutorial erklären wir Ihnen, wie Sie mehrere Versionen installieren können Php und konfigurieren Sie den Webserver Nginx mit ihnen über die Serverblöcke (virtuelle Hosts in Apache) in der Arbeiten in der Arbeit CentOS/Rhel 7 Verteilungen mit Lemp Stapel.

Lesen Sie auch: Pyenv - Installieren Sie mehrere Python -Versionen für ein bestimmtes Projekt

Nginx Verwendet PHP-FPM (steht für FASTCGI -Prozessmanager), was eine Alternative ist PHP FASTCGI Implementierung mit einigen zusätzlichen, nützlichen Funktionen für stark geladene Websites.

Testumgebungsaufbau

  1. Ein CentOS 7 oder RHEL 7 -Server mit minimaler Installation.
  2. Nginx HTTP Server.
  3. Php 7.1 (als Standardversion verwendet werden) und 5.6.
  4. Mariadb -Datenbankserver.
  5. Server IP Adresse: 192.168.56.10.
  6. Websites: Beispiel 1.com Und Beispiel2.com.

Schritt 1: Installieren und Aktivieren von EPEL- und REMI -Repository

1. Beginnen Sie zunächst mit der Installation und Aktivierung des Epel Und Remi Repository, das die neuesten Versionen der anbietet Php Stapel an CentOS/Rhel 7 Verteilungen.

# yum install https: // dl.Fedoraproject.org/pub/epel/epel-release-latest-7.Keinarch.rpm # yum install http: // rpms.Remirepo.Net/Enterprise/Remi-Release-7.Drehzahl 

2. Als nächstes installieren Sie die yum-utils Paket, das die nativen Funktionen von Yum erweitert und bietet yum-config-Manager Befehl, mit dem Yum -Repositories auf dem System aktiviert oder deaktiviert werden.

# yum install yum-utils 

Notiz: An Rhel 7 Sie können den optionalen Kanal für einige Abhängigkeiten über den folgenden Befehl aktivieren.

# Abonnement-Manager-Repos-auf 

Schritt 2: Installieren von NGINX -Webserver

3. Um die neueste Version von NGINX zu installieren, müssen wir das offizielle Nginx -Repository hinzufügen. Erstellen Sie eine Datei mit dem Namen /etc/yum.Repos.d/nginx.Repo.

# vi /etc /yum.Repos.d/nginx.Repo 

Fügen Sie die folgenden Zeilen hinzu, die nach Ihrer Verteilung einreichen.

--------------- Auf Centos 7 --------------- [nginx] name = nginx repo baseUrl = http: // nginx.org/pakete/centos/7/$ basearch/gpgcheck = 0 aktiviert = 1 --------------- Auf Rhel 7 --------------- [nginx] name = nginx repo baseUrl = http: // nginx.org/pakete/rhel/7.x/ $ basearch/ gpgcheck = 0 aktiviert = 1 

4. Sobald Nginx Repo hinzugefügt wurde, können Sie Nginx mit Yum Package Manager -Tool wie gezeigt installieren.

# yum install nginx installieren 

Schritt 3: Installieren Sie den MariADB -Datenbankserver

5. Um die neueste Version von MariADB zu installieren, müssen wir das offizielle Mariadb -Repository hinzufügen und eine Datei namens erstellen /etc/yum.Repos.D/Mariadb.Repo.

# vi /etc /yum.Repos.D/Mariadb.Repo 

Fügen Sie die folgenden Zeilen hinzu, die nach Ihrer Verteilung einreichen.

--------------- Auf 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 --------------- Auf 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. Sobald Mariadb Repo hinzugefügt wurde, können Sie Mariadb mit Yum Paket Manager -Tool wie gezeigt installieren.

# Yum Installation Mariadb-Client Mariadb-Server 

7. Sichern Sie anschließend die Installation der Datenbankserver mithilfe des folgenden Skripts. Legen Sie ein Stammkennwort ein und beantworten Sie y und drücke [Eingeben] Für den Rest der nachfolgenden Fragen zum Deaktivieren der Remote-Root-Benutzeranmeldung entfernen Sie die Konten von Anonymous-User und testen Sie die Datenbank, auf die standardmäßig von allen Benutzern zugegriffen werden kann, auch von anonymen Benutzern.

# Mysql_secure_installation 

Lesen Sie auch: 12 MySQL/Mariadb Security Best Practices für Linux

Schritt 4: Installieren mehrerer Versionen von PHP

8. Um verschiedene Versionen von PHP für Ihre Projekte zu installieren, verwenden Sie yum-config-Manager Befehl zur Installation mehrerer Versionen von PHP zusammen mit den meisten erforderlichen Modulen wie gezeigt.

Installieren Sie Php 7.1 Version

# yum-config-Manager-ANABLE REMI-PHP71 [Standard] # YUM-Installation von PHP-Common PHP-FPM # YUM INSTALT PHP-MYSQL PHP-PECL-MEMCache PHP-PECL-MEMCACHED PHP-GD PHP-MBRING PHP-MCRYPT PHP-XML PHP-PECL-APC PHP-CLI PHP-PEAR PHP-PDO 

Installieren Sie PHP 5.6 Version

# 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. Nach dem Installieren von PHP können Sie den folgenden Befehl verwenden, um die Standardversion von PHP zu überprüfen, die auf Ihrem Server verwendet werden.

# Php -v 
Überprüfen Sie die Standard -PHP -Version

Schritt 5: Konfigurieren von PHP-FPM und PHP56-PHP-FPM

10. Dies ist der interessanteste Teil dieses Tutorials. Es wird erläutert, wie Sie mehrere PHP -Versionen auf Ihrem Server ausführen können. Hier konfigurieren Sie die verschiedenen Versionen von PHP-FPM dass nginx mit arbeiten wird. Sie sollten den Benutzer/die Gruppe der FastCGI -Prozesse sowie die Ports definieren, auf die sie sich anhören.

Dies sind die folgenden zwei Konfigurationsdateien, die Sie bearbeiten möchten.

  • PHP-FPM (Standard 7.1) - /etc /php -fpm.D/www.Conf
  • PHP56-PHP-FPM - /opt/remi/php56/root/etc/php-fpm.D/www.Conf

Öffnen Sie die obigen Dateien und legen Sie die Benutzer/Gruppe von FastCGI -Prozessen fest.

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

Die Standardwerte sollten sein Apache, Ändern Sie sie zu nginx wie gezeigt.

user = nginx Group = nginx 

11. Finden Sie als nächstes die Hörenparameter und definieren Sie die Adresse: Port auf welche Fastcgi -Anfragen empfangen werden.

Hören = 127.0.0.1: 9000 [PHP-FPM] Hören = 127.0.0.1: 9001 [PHP56-PHP-FPM] 

12. Sobald die oben genannte Konfiguration abgeschlossen ist, müssen Sie starten und aktivieren Nginx, Mariadb Und PHP-FPM automatisch beim Systemstiefel automatisch starten.

# SystemCTL aktivieren nginx # systemctl start nginx # systemctl aktivieren mariadb # systemctl start mariadb ---------------- Php 7.1 ---------------- # Systemctl aktivieren PHP-FPM # SystemCTL Start PHP-FPM ---------------- Php 5.6 ---------------- # systemctl aktivieren PHP56-PHP-FPM # systemctl starten php56-PHP-FPM 

Aufmerksamkeit: Falls Sie Fehler erhalten, während Sie die zweite Instanz von PHP beginnen, PHP56-PHP-FPM, Eine Selinux -Richtlinie könnte es vom Start blockieren. Wenn Selinux in ist Durchsetzung des Modus, Stellen Sie es auf Zulassungsmodus, Versuchen Sie dann noch einmal mit dem Service zu starten.

# Getenforce # setEnforce 0 

Schritt 6: Setzen Sie Websites mit Berechtigungen ein

13. Zu diesem Zeitpunkt können Sie jetzt die erforderlichen Verzeichnisse für Ihre Websites unter erstellen /var/www/html/. Sie müssen auch Verzeichnisse erstellen, um Protokolle wie folgt zu speichern:

---------------- Website 1 ---------------- # Mkdir -p/var/www/html/example11.com/ # mkdir -p/var/log/nginx/Beispiel11.com/ ---------------- Website 2 ---------------- # Mkdir -p/var/www/html/example2.com/ # mkdir -p/var/log/nginx/example2.com/ 

14. Legen Sie die entsprechenden Eigentumsberechtigungen für alle Verzeichnisse fest.

---------------- Website 1 ---------------- # Chown -r root: nginx/var/www/html/Beispiel11.com/ # chmod -r 755/var/www/html/Beispiel1.com/ # chown -r root: nginx/var/log/nginx/Beispiel11.com/ # chmod -r 660/var/log/nginx/Beispiel11.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/ 

Schritt 7: Setup Nginx -Serverblöcke für Websites einrichten

15. Konfigurieren Sie nun, wie NGINX Anforderungen an Ihren Websites mithilfe der Server -Block -Konfigurationsdateien verarbeitet, die sich befinden sollten /etc/nginx/conf.D/.

Erstellen Sie die Konfigurationsdateien für Ihre Websites, die mit enden .Conf Verlängerung.

# vi/etc/nginx/conf.D/Beispiel1.com.conf # vi/etc/nginx/conf.D/Beispiel2.com.Conf 

Fügen Sie dann die folgenden Server -Block -Konfigurationen in die jeweiligen Dateien ein.

Website 1

Konfiguration zum Beispiel1.com
Server Listen 80; server_name Beispiel1.com www.Beispiel 1.com; root/var/www/html/Beispiel11.com/; Indexindex.PHP -Index.HTML -Index.HTM; #Charset Koi8-R; access_log/var/log/nginx/Beispiel111.com/example1_access_log; ERROR_LOG/VAR/LOG/NGINX/EXEME111.com/example1_error_log error; location / try_files $ uri $ uri / / Index.Php?$ query_string;  # Übergeben Sie die PHP -Skripte an den FastCGI -Server, der 127 zuhört.0.0.1: 9000 Standort ~ \.php $ root/var/www/html/example11.com/; FASTCGI_PASS 127.0.0.1: 9000; #Set-Port für PHP-FPM zum Anhören des Fastcgi_index-Index.PHP; fastcgi_param script_filename $ document_root $ fastcgi_script_name; FASTCGI_PARAMS einschließen; include/etc/nginx/fastcgi_params;  

Website 2

Konfiguration für Beispiel2.com
Server Listen 80; Server_Name Beispiel2.com www.Beispiel2.com; root/var/www/html/example2.com/; Indexindex.PHP -Index.HTML -Index.HTM; #Charset Koi8-R; access_log/var/log/nginx/example2.com/example2_access_log; ERROR_LOG/VAR/LOG/NGINX/SEHRSBILD22.com/example2_error_log error; location / try_files $ uri $ uri / / Index.Php?$ query_string;  # Übergeben Sie die PHP -Skripte an den FastCGI -Server, der 127 zuhört.0.0.1: 9000 Standort ~ \.php $ root/var/www/html/example2.com/; FASTCGI_PASS 127.0.0.1: 9001; #Set-Port für PHP56-PHP-FPM, um den FastCGI_Index-Index anzuhören.PHP; fastcgi_param script_filename $ document_root $ fastcgi_script_name; FASTCGI_PARAMS einschließen; include/etc/nginx/fastcgi_params;  

16. Stellen Sie sicher, dass Sie die folgende Zeile im schließen Teil des HTTP -Blocks in haben /etc/nginx/nginx.Conf. Es hilft dabei, alle Konfigurationsdateien in die zu enthalten /etc/nginx/conf.D/ Verzeichnis, wenn Nginx ausgeführt wird.

Inhaftieren/etc/nginx/conf.D/*.conf; 

Schritt 8: Testen verschiedener PHP -Versionen

17. Schließlich müssen Sie testen, dass Ihr Server die beiden Versionen von PHP verwendet. Sie können eine sehr grundlegende erstellen die Info.Php Skript in den Dokumenten Root -Verzeichnissen Ihrer Websites wie gezeigt.

# echo "">/var/www/html/Beispiel11.com/info.PHP # echo "">/var/www/html/example2.com/info.Php 

18. Um alle oben vorgenommenen Änderungen anzuwenden, müssen Sie neu starten Nginx, PHP-FPM Und PHP56-PHP-FPM. Sie können jedoch zunächst überprüfen, ob die NGINX -Konfigurationsdateien für alle Syntaxfehler vor diesem.

# nginx -t # systemctl restart nginx PHP-FPM PHP56-PHP-FPM 
Überprüfen Sie die Nginx -Konfiguration

19. Es gibt noch eine andere, die zuletzt zu tun ist, insbesondere wenn Sie Ihren Server lokal ausführen, müssen Sie lokale DNs verwenden /etc/hosts Datei wie im Screenshot unten gezeigt.

192.168.56.10 Beispiel1.com Beispiel1 192.168.56.10 Beispiel2.com Beispiel2 
Fügen Sie Websites zur Veranstaltung der Datei hinzu

20. Öffnen Sie schließlich einen Webbrowser und geben Sie die folgenden Adressen ein, um die im System installierten PHP -Versionen zu überprüfen.

http: // Beispiel1.com/Index.PHP http: // example2.com/Index.Php 
Überprüfen Sie Php 7.1 Version Überprüfen Sie Php 5.6 Version

Das ist es! Jetzt können Sie Dateien bereitstellen und Websites mit verschiedenen PHP -Versionen testen. Wenn Sie Ergänzungen oder Fragen zu stellen müssen, verwenden Sie das folgende Kommentarformular.