Tenemos una aplicación web heredada que ejecuta php 5.4.10 y otra aplicación que ejecuta la última versión de php ver 7.1.
Nos gustaría alojar ambas aplicaciones usando Apache en una instancia de un servidor Redhat 7.3.
Estos son los hosts virtuales configurados para cada aplicación web:
<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>
Según esta guía:https://webtatic.com/packages/php71/ Sé que puedo usar "sudo yum install php71w php71w-mysql" para instalar la última versión de php y hacer que la aplicación 2 funcione, pero ¿cómo puedo instalar también php versión 5.4.10 y configurar la aplicación 1 para usar la versión 5.4.10 de php? ¿Cuales son los pasos?
Perdonen si la pregunta les parece tonta, soy más o menos nuevo en linux. No he podido encontrar un tutorial confiable y actualizado que explique cómo hacer esto.
Respuesta1
Puede intentar usar Docker para esto, pero es posible que primero necesite instalarlo en su máquina. Entonces puedes intentarlo
sudo docker run --name=myphp5 -p 8080:80 -v /var/www/html/:/var/www/html -d eboraas/apache-php
Esto descargará la imagen acoplable eboraas/apache-php y ejecutará un contenedor acoplable llamado "myphp5" con apache/php5 instalado. El modificador -v montará su directorio local /var/www/html en el /var/www/html del contenedor y expondrá Apache en el puerto 8080 (para que no entre en conflicto con su Apache local ejecutándose en 80).
Puede detener el contenedor ejecutando
sudo docker stop myphp5
Del mismo modo, puedes iniciarlo ejecutando
sudo docker start myphp5
Para verificar el estado de todos sus contenedores, puede ejecutar
docker ps -a
Tenga en cuenta que hay otras imágenes con apache/php5 en dockerhub que puede utilizar para este propósito:https://hub.docker.com/search/?isAutomated=0&isOfficial=0&page=1&pullCount=0&q=php5&starCount=0
La única limitación de este enfoque es que cada contenedor acoplable necesita exponer el http en un puerto diferente para que no pueda ejecutarse en 80. Sin embargo, esto se puede solucionar usando el apache local (el que escucha en el puerto 80) como Proxy inverso para Apache basado en Docker.
Respuesta2
Colecciones de softwareson ideales para esto. La descripción oficial dice:
Las colecciones de software le permiten instalar simultáneamente varias versiones de los mismos componentes de software en su sistema. Los paquetes creados utilizando colecciones de software no sobrescriben las versiones incluidas con Red Hat Enterprise Linux.
La versión actual, RHSCL 2.3, proporciona paquetes con PHP 5.6 y 7.0. Ver elInstalacióncapítulo de las Notas de la versión de RHSCL para aprender cómo obtener acceso a los repositorios de RHSCL e instalar los paquetes.
VerApache con varias versiones de PHP, usando SCLen el blog de desarrolladores de RH para obtener instrucciones sobre cómo utilizar las diferentes versiones SCL de PHP instaladas con un servidor Apache. (Tenga en cuenta que las instrucciones asumen RHEL6, pero el mismo método también funciona en RHEL7; simplemente omita los consejos de instalación).