Schritt 1 – Installieren von PHP Versionen 7.3 und 7.4 mit PHP-FPM
Nachdem die Voraussetzungen erfüllt sind, installieren Sie nun PHP-Versionen 7.3 und 7.4 sowie PHP-FPM als auch mehrere zusätzliche Erweiterungen. Dazu müssen Sie jedoch zunächst das sury php-Repository zu Ihrem System hinzufügen.
Installieren Sie zunächst mehrere erforderliche Pakete, einschließlich curl, wget und gnupg2:
- sudo apt-get install curl wget gnupg2 ca-certificates lsb-release apt-transport-https -y
Mit den obigen Paketen können Sie sicher auf das sury php-Repository zugreifen. sury php ist ein Drittanbieter-Repository oder PPA (Personal Package Archive). Es stellt PHP 7.4, 7.3, 7.2, 7.1 und 7.0 für das Debian-Betriebssystem bereit. Außerdem bietet es aktuellere Versionen von PHP als die offiziellen Debian 10-Repositorys und Sie können verschiedene Versionen von PHP im gleichen System installieren.
Als Nächstes importieren Sie den Schlüssel des Pakets:
- wget https://packages.sury.org/php/apt.gpg
- sudo apt-key add apt.gpg
Fügen Sie nun das Repository sury php Ihrem System hinzu:
- echo «deb https://packages.sury.org/php/ $(lsb_release -sc) main» | sudo tee /etc/apt/sources.list.d/php7.list
Aktualisieren Sie das Repository:
- sudo apt-get update -y
Installieren Sie als Nächstes php7.4, php7.4-fpm, php7.4-mysql, libapache2-mod-php7.4, und libapache2-mod-fcgidmit den folgenden Befehlen:
- sudo apt-get install php7.4 php7.4-fpm php7.4-mysql libapache2-mod-php7.4 libapache2-mod-fcgid -y
- php7.4 ist ein Metapaket zur Ausführung von PHP-Anwendungen.
- php7.4-fpm bietet den Fast Process Manager-Interpreter, der als Daemon ausgeführt wird und Fast/CGI-Anfragen empfängt.
- php7.4-mysql verbindet PHP mit der MySQL-Datenbank.
- libapahce2-mod-php7.4 stellt das PHP-Modul für den Apache-Webserver bereit.
- libapache2-mod-fcgid enthält eine mod_fcgid, die eine Reihe von CGI-Programminstanzen startet, um gleichzeitige Anfragen zu bearbeiten.
Wiederholen Sie den Vorgang für PHP-Version 7.2. Installieren Sie php7.3, php7.3-fpm, php7.3-mysql und libapache2-mod-php7.3.
- sudo apt-get install php7.3 php7.3-fpm php7.3-mysql libapache2-mod-php7.3 -y
Starten Sie nach Installation beider PHP-Versionen den Dienst php7.4-fpm:
- sudo systemctl start php7.4-fpm
Überprüfen Sie als Nächstes den Status des php7.4-fpm-Dienstes:
- sudo systemctl status php7.4-fpm
Sie sehen die folgende Ausgabe:
Output
● php7.4-fpm.service – The PHP 7.0 FastCGI Process Manager
Loaded: loaded (/lib/systemd/system/php7.4-fpm.service; enabled; vendor preset: enabled)
Active: active (running) since Sat 2020-04-04 08:51:47 UTC; 1min 17s ago
Docs: man:php-fpm7.0(8)
Main PID: 13016 (php-fpm7.0)
Status: «Processes active: 0, idle: 2, Requests: 0, slow: 0, Traffic: 0req/sec»
Tasks: 3 (limit: 1149)
Memory: 19.1M
CGroup: /system.slice/php7.4-fpm.service
├─13016 php-fpm: master process (/etc/php/7.0/fpm/php-fpm.conf)
├─13017 php-fpm: pool www
└─13018 php-fpm: pool www
Apr 04 08:51:47 debian10 systemd[1]: Starting The PHP 7.0 FastCGI Process Manager…
Apr 04 08:51:47 debian10 systemd[1]: Started The PHP 7.0 FastCGI Process Manager.
Wiederholen Sie diesen Vorgang nun zum Starten des php7.3-fpm-Dienstes:
- sudo systemctl start php7.3-fpm
Und überprüfen Sie dann den Status des php7.3-fpm-Dienstes:
- sudo systemctl status php7.3-fpm
Sie sehen die folgende Ausgabe:
Output
● php7.3-fpm.service – The PHP 7.2 FastCGI Process Manager
Loaded: loaded (/lib/systemd/system/php7.3-fpm.service; enabled; vendor preset: enabled)
Active: active (running) since Sat 2020-04-04 08:52:52 UTC; 1min 32s ago
Docs: man:php-fpm7.2(8)
Process: 22207 ExecStartPost=/usr/lib/php/php-fpm-socket-helper install /run/php/php-fpm.sock /etc/php/7.2/fpm/pool.d/www.conf 72 (code=exite
Main PID: 22204 (php-fpm7.2)
Status: «Processes active: 0, idle: 2, Requests: 0, slow: 0, Traffic: 0req/sec»
Tasks: 3 (limit: 1149)
Memory: 12.0M
CGroup: /system.slice/php7.3-fpm.service
├─22204 php-fpm: master process (/etc/php/7.2/fpm/php-fpm.conf)
├─22205 php-fpm: pool www
└─22206 php-fpm: pool www
Apr 04 08:52:52 debian10 systemd[1]: Starting The PHP 7.2 FastCGI Process Manager…
Apr 04 08:52:52 debian10 systemd[1]: Started The PHP 7.2 FastCGI Process Manager.
Abschließend müssen Sie mehrere Module aktivieren, damit Ihr Apache2-Dienst mit mehreren PHP-Versionen arbeiten kann:
- sudo a2enmod actions fcgid alias proxy_fcgi
- actions wird für die Ausführung von CGI-Skripten verwendet, die auf Medientyp oder Anfragemethode basieren.
- fcgid ist eine hochleistungsfähige Alternative zu mod_cgi, die eine ausreichende Anzahl von Instanzen des CGI-Programms zur Bearbeitung simultaner Anfragen startet.
- alias stellt die Abbildung verschiedener Teile des Host-Dateisystems im Dokumentenbaum bereit und dient der URL-Umleitung.
- proxy_fcgi ermöglicht Apache die Weiterleitung von Anfragen an PHP-FPM.
Starten Sie nun den Apache-Dienst neu, um Ihre Änderungen zu übernehmen:
- sudo systemctl restart apache2
Zu diesem Zeitpunkt haben Sie zwei PHP-Versionen auf Ihrem Server installiert. Als Nächstes erstellen Sie eine Verzeichnisstruktur für jede Website, die Sie bereitstellen möchten.
Schritt 2 — Erstellen von Verzeichnisstrukturen für beide Websites
In diesem Abschnitt erstellen Sie für beide Websites ein Dokumentenverzeichnis und eine Indexseite.
Erstellen Sie zunächst Dokument-Stammverzeichnisse sowohl für site1.your_domain als auch für site2.your_domain:
- sudo mkdir /var/www/site1.your_domain
- sudo mkdir /var/www/site2.your_domain
Standardmäßig wird der Apache-Webserver als Benutzer www-data und als Gruppe www-dataausgeführt. Um sicherzustellen, dass Sie über die korrekte Eigentümerschaften und Berechtigungen für die Stammverzeichnisse Ihrer Website verfügen, führen Sie die folgenden Befehle aus:
- sudo chown -R www-data:www-data /var/www/site1.your_domain
- sudo chown -R www-data:www-data /var/www/site2.your_domain
- sudo chmod -R 755 /var/www/site1.your_domain
- sudo chmod -R 755 /var/www/site2.your_domain
Erstellen Sie als Nächstes in jedem Stammverzeichnis Ihrer Website eine Datei info.php. Dadurch werden die PHP-Version jeder Website angezeigt. Beginnen Sie mit site1:
- sudo nano /var/www/site1.your_domain/info.php
Fügen Sie die folgende Zeile hinzu:
/var/www/site1.your_domain/info.php
<?php phpinfo(); ?>
Copy
Speichern und schließen Sie die Datei. Kopieren Sie nun die von Ihnen erstellte Datei info.phpnach site2:
- sudo cp /var/www/site1.your_domain/info.php /var/www/site2.your_domain/info.php
Ihr Webserver sollte nun über die Stammverzeichnisse der Dokumente verfügen, die jede Site benötigt, um Besuchern Daten zur Verfügung zu stellen. Als Nächstes konfigurieren Sie Ihren Apache-Webserver, um mit zwei verschiedenen PHP-Versionen zu arbeiten.
Schritt 3 – Konfigurieren von Apache für beide Websites
In diesem Abschnitt erstellen Sie zwei Konfigurationsdateien für virtuelle Hosts. Dadurch können Ihre beiden Websites gleichzeitig mit zwei verschiedenen PHP-Versionen arbeiten.
Damit Apache diesen Inhalt bereitstellen kann, ist es erforderlich, eine virtuelle Host-Datei mit den richtigen Anweisungen zu erstellen. Anstatt die Standardkonfigurationsdatei unter /etc/apache2/sites-available/000-default.conf zu ändern, erstellen Sie zwei neue in dem Verzeichnis /etc/apache2/sites-available.
Erstellen Sie zunächst eine neue Konfigurationsdatei für einen virtuellen Host für die Website site1.your_domain. Hier weisen Sie Apache an, Inhalte mit php7.4 zu rendern:
- sudo nano /etc/apache2/sites-available/site1.your_domain.conf
Fügen Sie folgenden Inhalt hinzu: Stellen Sie sicher, dass der Website-Verzeichnispfad, der Servername und die PHP-Version mit Ihrer Einrichtung übereinstimmen:
/etc/apache2/sites-available/site1.your_domain.conf
<VirtualHost *:80>
ServerAdmin admin@site1.your_domain
ServerName site1.your_domain
DocumentRoot /var/www/site1.your_domain
DirectoryIndex info.php
<Directory /var/www/site1.your_domain>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>
<FilesMatch \.php$>
# For Apache version 2.4.10 and above, use SetHandler to run PHP as a fastCGI process server
SetHandler «proxy:unix:/run/php/php7.4-fpm.sock|fcgi://localhost»
</FilesMatch>
ErrorLog ${APACHE_LOG_DIR}/site1.your_domain_error.log
CustomLog ${APACHE_LOG_DIR}/site1.your_domain_access.log combined
</VirtualHost>
In dieser Datei haben Sie die DocumentRoot auf Ihr neues Verzeichnis und ServerAdmin auf eine E-Mail aktualisiert, auf die der Administrator der Website your_domain zugreifen kann. Weiterhin haben Sue ServerName aktualisiert, der die Basisdomäne für diese Konfiguration des virtuellen Hosts festlegt, und Sie haben eine Anweisung SetHandlerhinzugefügt, um PHP als fastCGI-Prozessserver auszuführen.
Speichern und schließen Sie die Datei.
Erstellen Sie als Nächstes eine neue Konfigurationsdatei des virtuellen Hosts für die Website site2.your_domain. Sie geben diese Subdomäne für die Bereitstellung von php7.3 an:
- sudo nano /etc/apache2/sites-available/site2.your_domain.conf
Fügen Sie folgenden Inhalt hinzu: Stellen Sie auch hier sicher, dass der Website-Verzeichnispfad, der Servername und die PHP-Version mit Ihrer Einrichtung übereinstimmen:
/etc/apache2/sites-available/site2.your_domain.conf
<VirtualHost *:80>
ServerAdmin admin@site2.your_domain
ServerName site2.your_domain
DocumentRoot /var/www/site2.your_domain
DirectoryIndex info.php
<Directory /var/www/site2.your_domain>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>
<FilesMatch \.php$>
# For Apache version 2.4.10 and above, use SetHandler to run PHP as a fastCGI process server
SetHandler «proxy:unix:/run/php/php7.3-fpm.sock|fcgi://localhost»
</FilesMatch>
ErrorLog ${APACHE_LOG_DIR}/site2.your_domain_error.log
CustomLog ${APACHE_LOG_DIR}/site2.your_domain_access.log combined
</VirtualHost>
Wenn Sie fertig sind, speichern und schließen Sie die Datei. Überprüfen Sie anschließend die Apache-Konfigurationsdatei auf etwaige Syntaxfehler:
- sudo apachectl configtest
Sie sehen die folgende Ausgabe:
Output
Syntax OK
Aktivieren Sie dann beide Konfigurationsdateien des virtuellen Hosts:
- sudo a2ensite site1.your_domain
- sudo a2ensite site2.your_domain
Deaktivieren Sie nun die Standardseite, da Sie sie nicht benötigen:
- sudo a2dissite 000-default.conf
Starten Sie schließlich den Apache-Dienst neu, um Ihre Änderungen zu übernehmen:
- sudo systemctl restart apache2
Nachdem Sie Apache nun konfiguriert haben, um jede Site zu bedienen, werden Sie sie testen, um sicherzustellen, dass die richtigen PHP-Versionen ausgeführt werden.