Изолируйте версии PHP на AWS EC2

На самом деле я использую PHP 5.3 во всех своих проектах. Но по всем известным вам причинам я хочу обновиться до PHP 5.4 (или 5.5).

Мы также собираемся скоро перейти на AWS EC2, например, на «обычный» Linux, Debian Wheezy.

Но проблема в том, что у нас есть некоторые старые проекты, которые мы не можем перенести на PHP 5.3 по каким-то причинам, и мы не можем их удалить по каким-то другим причинам.

Поэтому мне было интересно, как лучше всего изолировать эти проекты в нашем экземпляре AWS EC2, чтобы использовать несколько версий PHP/Apache.

Я думал об использовании Docker, чтобы мы могли легко установить другой PHP/Apache, чем в основной системе. Кроме того, знание того, что это своего рода виртуальная машина, звучит хорошо, поэтому это не окажет никакого влияния на основной «сервер».

Это лучшее решение?

EDIT: Кроме того, мы не можем позволить себе еще один инстанс EC2 по некоторым причинам


person Bonswouar    schedule 13.08.2014    source источник
comment
Почему бы не иметь два экземпляра? Расходы?   -  person georg    schedule 13.08.2014
comment
Точно, стоимость! ;) EDIT: Спасибо за вопрос, я добавляю его в свой исходный пост   -  person Bonswouar    schedule 13.08.2014
comment
Вопрос слишком широкий. Для информации, которую вы даете, я могу сказать, что докер должен сделать свое дело. Это лучшее решение? Я честно не знаю.   -  person Regan    schedule 13.08.2014


Ответы (2)


Вы не упомянули ОС, но предположили, что лучшим решением на основе Linux было бы создание нескольких прикладных пользователей и установка разных версий php путем компиляции в домашнем каталоге соответствующего пользователя приложения.

Например, создайте пользователей user1 (домашний каталог:/home/user1/) и user2 (домашний каталог:/home/user2/). Теперь переключитесь на user1 и установите php5.3 и apache компиляциями по пути /home/user1/app/php и /home/user1/app/apache соответственно. Сделайте то же самое для user2, но на этот раз с другой версией php. Помните, что Apache должен работать на разных портах, чтобы избежать конфликтов портов. Вы можете установить третий apache в качестве обратного прокси-сервера с несколькими виртуальными хостами, которые будут принимать трафик через порт 80 и отправлять его на разные серверные апачи в зависимости от запроса.

Трафик будет таким

client http request <--> apache rp <--->  app1 based on apache1 or app2 based on apache2

С Уважением

Раджарши Халдар

person Rajarshi Haldar    schedule 13.08.2014
comment
Я думал об этом решении, но не было бы проще и безопаснее установить этот старый PHP/Apache в Docker? Как сказал @Regan, я, честно говоря, не знаю. В любом случае спасибо за ответ! - person Bonswouar; 13.08.2014
comment
Я не работал с Docker, но во всей нашей рабочей среде мы использовали разных аппликативных пользователей для разделения разных версий приложений. также использование rp предоставляет дополнительные функции, такие как балансировка нагрузки/кэширование и т. д. - person Rajarshi Haldar; 13.08.2014

Почему бы не использовать php-fpm и не установить два из них? Затем вы можете решить, какой из них использовать с каким vhost. Таким образом, каждый виртуальный хост может иметь свою собственную версию php. И в этом случае у вас работает только 1 сервер Apache.

Должно быть довольно легко найти учебник в Google по этому поводу.

person Eric D.    schedule 15.08.2014