Wir haben eine ältere Webanwendung mit PHP 5.4.10 und eine andere Anwendung mit der neuesten Version von PHP 7.1
Wir möchten beide Anwendungen mit Apache auf einer Instanz eines Redhat 7.3-Servers hosten.
Hier sind die für jede Web-App konfigurierten virtuellen Hosts:
<VirtualHost *:80>
DocumentRoot /var/www/app1.local.com/public_html
ServerName www.app1.local.com
ServerAlias app1.local.com
ErrorLog /etc/var/www/app1.local.com/error.log
CustomLog /var/www/app1.local.com/requests.log
</VirtualHost>
<VirtualHost *:80>
DocumentRoot /var/www/app2.local.com/public_html
ServerName www.app2.local.com
ServerAlias app2.local.com
ErrorLog /etc/var/www/app2.local.com/error.log
CustomLog /var/www/app2.local.com/requests.log
</VirtualHost>
Laut dieser Anleitung:https://webtatic.com/packages/php71/ Ich weiß, dass ich mit „sudo yum install php71w php71w-mysql“ die neueste PHP-Version installieren und App 2 zum Laufen bringen kann, aber wie kann ich auch PHP Version 5.4.10 installieren und App1 so konfigurieren, dass es PHP Version 5.4.10 verwendet? Wie sind die Schritte?
Verzeihen Sie mir, wenn die Frage dumm erscheint, ich bin mehr oder weniger neu bei Linux. Ich konnte kein zuverlässiges und aktuelles Tutorial finden, das erklärt, wie das geht.
Antwort1
Sie können versuchen, hierfür Docker zu verwenden, aber Sie müssen es möglicherweise zuerst auf Ihrem Computer installieren. Dann können Sie versuchen
sudo docker run --name=myphp5 -p 8080:80 -v /var/www/html/:/var/www/html -d eboraas/apache-php
Dadurch wird das Docker-Image eboraas/apache-php heruntergeladen und ein Docker-Container namens „myphp5“ mit darin installiertem Apache/php5 ausgeführt. Der Schalter -v mountet Ihr lokales Verzeichnis /var/www/html in das Verzeichnis /var/www/html des Containers und stellt Apache auf Port 8080 bereit (damit es nicht mit Ihrem lokalen Apache kollidiert, der auf Port 80 läuft).
Sie können den Container stoppen, indem Sie
sudo docker stop myphp5
Ebenso können Sie es starten, indem Sie ausführen
sudo docker start myphp5
Um den Status aller Ihrer Container zu überprüfen, können Sie Folgendes ausführen:
docker ps -a
Bitte beachten Sie, dass es auf Dockerhub andere Images mit Apache/PHP5 gibt, die Sie für diesen Zweck verwenden können -https://hub.docker.com/search/?isAutomated=0&isOfficial=0&page=1&pullCount=0&q=php5&starCount=0
Die einzige Einschränkung dieses Ansatzes besteht darin, dass jeder Docker-Container das HTTP auf einem anderen Port verfügbar machen muss, sodass Sie sie nicht auf Port 80 ausführen können. Dies lässt sich jedoch lösen, indem Sie den lokalen Apache (der auf Port 80 lauscht) als Reverse-Proxy für den Docker-basierten Apache verwenden.
Antwort2
Softwaresammlungensind hierfür ideal. In der offiziellen Beschreibung heißt es:
Mithilfe von Softwaresammlungen können Sie mehrere Versionen derselben Softwarekomponenten gleichzeitig auf Ihrem System installieren. Mit Softwaresammlungen erstellte Pakete überschreiben nicht die in Red Hat Enterprise Linux enthaltenen Versionen.
Die aktuelle Version, RHSCL 2.3, stellt Pakete mit PHP 5.6 und 7.0 bereit. Siehe dieInstallationKapitel der RHSCL-Versionshinweise, um zu erfahren, wie Sie Zugriff auf RHSCL-Repos erhalten und die Pakete installieren.
SehenApache mit verschiedenen PHP-Versionen unter Verwendung von SCLim RH Developer Blog finden Sie Anweisungen zur Verwendung der verschiedenen installierten SCL-Versionen von PHP mit einem Apache-Server. (Beachten Sie, dass die Anweisungen RHEL6 voraussetzen, aber dieselbe Methode funktioniert auch mit RHEL7 – überspringen Sie einfach die Installationshinweise.)