Как установить несколько версий php на redhat

Как установить несколько версий php на redhat

У нас есть устаревшее веб-приложение, работающее на PHP 5.4.10, и другое приложение, работающее на последней версии PHP 7.1.

Мы хотели бы разместить оба этих приложения с использованием Apache на одном экземпляре сервера RedHat 7.3.

Вот виртуальные хосты, настроенные для каждого веб-приложения:

<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>

Согласно этому руководству:https://webtatic.com/packages/php71/ Я знаю, что могу использовать "sudo yum install php71w php71w-mysql" для установки последней версии php и заставить работать app 2, но как мне также установить php версии 5.4.10 и настроить app1 для использования php версии 5.4.10? Каковы шаги?

Извините, если вопрос покажется глупым, я более или менее новичок в Linux. Я не смог найти надежного и актуального руководства, объясняющего, как это сделать.

решение1

Вы можете попробовать использовать docker для этого, но вам может потребоваться сначала установить его на вашей машине. Затем вы можете попробовать

sudo docker run --name=myphp5 -p 8080:80  -v /var/www/html/:/var/www/html -d eboraas/apache-php

Это загрузит образ docker eboraas/apache-php и запустит контейнер docker с именем "myphp5" с установленным в нем apache/php5. Ключ -v смонтирует ваш локальный каталог /var/www/html в /var/www/html контейнера и откроет доступ к apache на порту 8080 (чтобы он не конфликтовал с вашим локальным apache, работающим на 80).

Вы можете остановить контейнер, запустив

sudo docker stop myphp5

Аналогично, вы можете запустить его, запустив

sudo docker start myphp5

Чтобы проверить состояние всех ваших контейнеров, вы можете запустить

docker ps -a

Обратите внимание, что на dockerhub есть и другие образы с apache/php5, которые можно использовать для этой цели -https://hub.docker.com/search/?isAutomated=0&isOfficial=0&page=1&pullCount=0&q=php5&starCount=0

Единственное ограничение этого подхода заключается в том, что каждый контейнер Docker должен предоставлять http на отдельном порту, поэтому вы не можете запустить их на порту 80. Однако эту проблему можно решить, используя локальный Apache (тот, который прослушивает порт 80) в качестве обратного прокси-сервера для Apache на основе Docker.

решение2

Коллекции программного обеспеченияидеально подходят для этого. Официальное описание гласит:

Коллекции программного обеспечения позволяют вам одновременно устанавливать несколько версий одних и тех же программных компонентов в вашей системе. Пакеты, созданные с использованием коллекций программного обеспечения, не перезаписывают версии, включенные в Red Hat Enterprise Linux.

Текущая версия RHSCL 2.3 предоставляет пакеты с PHP 5.6 и 7.0. См.Монтажглаву Заметок о выпуске RHSCL, чтобы узнать, как получить доступ к репозиториям RHSCL и установить пакеты.

ВидетьApache с различными версиями PHP, использующий SCLв блоге разработчиков RH для получения инструкций по использованию различных установленных версий PHP SCL с одним сервером Apache. (Обратите внимание, что инструкции предполагают RHEL6, но тот же метод работает и на RHEL7 — просто пропустите советы по установке.)

Связанный контент