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

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

Manchmal erhält ein SysAdmin seltsame Anfragen. Zum Beispiel:Vor ein paar Tagen musste mein Kunde eine neue Seite hochladen, diese neue Seite benötigt PHP7.4, während ihr Server mit PHP7.2 läuft. Ich habe damals 7.4 installiert, aber alle anderen VirtualHosts (zumindest die wichtigen) sind unter php7.4 kaputt gegangen. Anfangs dachte ich an eine Art Container, aber ich habe etwas Einfacheres gefunden. So führen Sie verschiedene PHP-Versionen auf demselben Server aus.

Mein Setup

Ich erstelle oder verwende hier immer eine virtuelle Maschine für alle meine Artikel. Denn man sollte immer vor der Pause etwas Wichtiges testen.
Für dieses Tutorial habe ich eine Neuinstallation eines ¿alten? Ubuntu-Server 18.04. Ich werde eine Website haben, sitio1 (sitio ist eine Website auf Spanisch), die PHP 7.2 benötigt; und eine andere Site, die PHP 7.4 benötigt, sitio2 .

1. Fügen Sie das Ondrej-PHP-Repository hinzu

Zu meiner Zeit musste man Konfigurationsdateien von Hand bearbeiten. Aber jetzt haben wir dieses Paket Software-Properties-Common, um Ihre Distribution und Softwarequellen unabhängiger Softwareanbieter einfach zu verwalten.

Unser erster Schritt besteht also darin, dieses Paket zu installieren:

sudo apt-get install software-properties-common

Unser zweiter Schritt besteht darin, das Repository tatsächlich hinzuzufügen, indem Sie Folgendes ausführen:

sudo add-apt-repository ppa:ondrej/php

Achten Sie auf die Meldungen auf dem Bildschirm und befolgen Sie die Anweisungen. Dann ausführen

sudo apt-get update

2. Installieren Sie zwei verschiedene PHP-Versionen

2.1. PHP 7.2

Das Ziel dieses Tutorials ist es, Ihnen zu zeigen, wie ich es geschafft habe, verschiedene PHP-Versionen auf demselben Server auszuführen. Ich installiere (fast) kein PHP-Modul, aber wenn Sie dies lesen, brauchen Sie sicherlich einige davon, zum Beispiel MySQL-Unterstützung. Vergessen Sie nicht, sie zu installieren.

sudo apt-get install php7.2 php7.2-fpm libapache2-mod-php7.2 libapache2-mod-fcgid

2.2 PHP 7.4

Wiederholen Sie nun den Vorgang mit php 7.4. Denken Sie daran, die benötigten PHP-Module zu installieren.

sudo apt-get install php7.4 php7.4-fpm libapache2-mod-php7.4

3. fpm-Dienste starten

Jetzt müssen wir den fpm-Dienst für beide Versionen starten

sudo systemctl start php7.2-fpm
sudo systemctl start php7.4-fpm

Sie können dann den Status der laufenden Dienste überprüfen:

sudo systemctl status php7.x-fpm

4. Erstellen der VirtualHosts

4.1 VirtualHost-Daten

Wir werden erste Verzeichnisse unter /var/www für jeden VirtualHost erstellen.

mkdir /var/www/sitio1
mkdir /var/www/sitio2
chown  -R www-data:www-data /var/www

Zweitens erstellen Sie in jedem Verzeichnis eine PHP-Datei mit folgendem Inhalt, nur um PHP-Informationen anzuzeigen:

<?php 
phpinfo(); 
?>

4.2 VirtualHost-Konfiguration

Wir müssen für jede Site eine .conf-Datei mit folgendem Inhalt erstellen:

nano /etc/apache2/sites-available/sitio1.conf
<VirtualHost *:80>
     ServerAdmin admin@sitio1
     ServerName sitio1
     DocumentRoot /var/www/sitio1
     DirectoryIndex info.php
     <Directory /var/www/sitio1>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride All
        Order allow,deny
        allow from all
     </Directory>

    <FilesMatch \.php$>
      # this part do the trick
      SetHandler "proxy:unix:/run/php/php7.2-fpm.sock|fcgi://localhost"
    </FilesMatch>

     ErrorLog ${APACHE_LOG_DIR}/sitio1_error.log
     CustomLog ${APACHE_LOG_DIR}/sitio1_access.log combined
</VirtualHost>

Erstellen Sie eine weitere Datei /etc/apache2/sites-available/sitio2.conf und ändern Sie die richtigen Informationen (sitio1 wird sitio2, php7.2 wird php7.4 usw.)

5. DNS-Informationen hinzufügen

Oder nicht. Ich meine, im wirklichen Leben müssen Sie für beide Seiten die richtigen DNS-Einträge erstellen. Da dies nur zu Test- und Lernzwecken dient, erstelle ich nur Datensätze auf meinen /etc/hosts Datei. Die IP-Adresse dieser virtuellen Maschine lautet 192.168.122.14

Wissen, dass ich sitio1 und sitio2 auflösen kann.

6. Alles aktivieren

Wir müssen einige Apache-Module aktivieren, die für diese Konfiguration erforderlich sind. Dann diese virtuellen Hosts aktivieren und schließlich Apache starten:

sudo a2enmod actions fcgid alias proxy_fcgi
sudo a2ensite sitio1
sudo a2ensite sitio2
sudo systemctl start apache2

Sie können die Konfiguration auch auf Rechtschreibfehler, fehlende Module oder andere Probleme mit apachetcl configtest testen .

7. Testzeit

Jetzt müssen wir einen Browser auf http://sitio1 und http://sitio2 verweisen und prüfen, ob dort die richtige PHP-Version ausgeführt wird:

Yay!. Und so können Sie verschiedene PHP-Versionen auf demselben Server ausführen. Jetzt bin ich gespannt, welche anderen Kombinationen ich ausprobieren könnte.

Bonus:Ältere Ubuntus

Mein Kunde hat tatsächlich Ubuntu 16, das im April 2021 nicht mehr unterstützt wurde. Das Repository, das ich hinzufügen musste, war ppa:tomvlk/php-archive


Linux
  1. Wie bringe ich meinen Golang-Webserver dazu, im Hintergrund zu laufen?

  2. Wie kann ich einen anderen Befehl ausführen, aber mit denselben Argumenten?

  3. Wie kann ich demselben Computer je nach Betriebssystem unterschiedliche statische IP-Adressen zuweisen?

  4. Wie leite ich Subdomains auf einen anderen Port auf demselben Server um?

  5. Wie installiere ich zwei verschiedene Versionen von Java auf demselben Computer von EPEL

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

So installieren Sie mehrere Discourse-Container auf demselben Server

So hosten Sie mehrere WordPress-Sites auf demselben Server mit Docker

So ändern Sie den Server-Hostnamen in Ubuntu

Wie ändere ich die Zeitzone auf Ubuntu 18.04 Server?

So überprüfen Sie die PHP-Version unter Linux