Comments 30
Это же очевидно! Разве нет?
+3
Именно! Только этого толком нигде не описано. Или я плохой юзер гугла? «Тысячи их», вопросов, как поставить РНР7 и оставить РНР5.*, виртуальные машины создают, доп. модули на апач ставят, зачем, если цель одна и решение очевидно?
+1
простые вещи могут быть не описаны, потому что они простые и до них догадаться можно самому не найдя ответа в гугле (если туда полезли за более лучшим)
0
Просто зачем создавать три сервиса apache, если вы не сможете их одновременно запустить?
Ваше решение весьма специфично (костыль), и подходит только для вас. Собственно оно практически ничем не отличается от установки трех разных апачей со своим PHP, кроме экономии пары мегабайт на диске.
В качестве более продвинутого костыля, можно было бы настроить все таким образом, что структура каталога сохранялась, отдельно запускается три apache на разных портах, настраивается прозрачный прокси, в конфигах которого указывается на какой apache какой сайт будет перенаправлять.
Ваше решение весьма специфично (костыль), и подходит только для вас. Собственно оно практически ничем не отличается от установки трех разных апачей со своим PHP, кроме экономии пары мегабайт на диске.
В качестве более продвинутого костыля, можно было бы настроить все таким образом, что структура каталога сохранялась, отдельно запускается три apache на разных портах, настраивается прозрачный прокси, в конфигах которого указывается на какой apache какой сайт будет перенаправлять.
+2
При этом nginx как прозрачный прокси еще и позволяет приблизить конфиги на дев-машине к боевым… (т.к. не так уж и редко используется связка nginx+httpd, кроме популярного nginx+php-fpm)
0
туториал как сделать 3 версии php для linux:
1. Берём gentoo
2. Ставим нужные версии
3. И через eselct меняем версию
Всё же windows для меня довольно сложная штука…
1. Берём gentoo
2. Ставим нужные версии
3. И через eselct меняем версию
Всё же windows для меня довольно сложная штука…
+2
А если у меня убунту?
/sarkazm/ Какой же этот линукс неудобный. Захотел 3 версии PHP — надо всю систему переустанавливать.
/sarkazm/ Какой же этот линукс неудобный. Захотел 3 версии PHP — надо всю систему переустанавливать.
+1
с убунту уже кастыли, либо 3 lxc контейнера, либо phpbrew.
0
Всё просто:
https://launchpad.net/~ondrej/+archive/ubuntu/php/ — один реп для 5.5, 5.6, 7.0, 7.1. Все версии можно установить в систему одновременно. Выбирать версию PHP для консоли можно через update-alternatives, для FPM просто разные порты, а дальше в nginx указываем порт нужного FPM.
https://launchpad.net/~ondrej/+archive/ubuntu/php/ — один реп для 5.5, 5.6, 7.0, 7.1. Все версии можно установить в систему одновременно. Выбирать версию PHP для консоли можно через update-alternatives, для FPM просто разные порты, а дальше в nginx указываем порт нужного FPM.
$ update-alternatives --config php
There are 3 choices for the alternative php (providing /usr/bin/php).
Selection Path Priority Status
------------------------------------------------------------
0 /usr/bin/php7.1 71 auto mode
1 /usr/bin/php5.6 56 manual mode
2 /usr/bin/php7.0 70 manual mode
3 /usr/bin/php7.1 71 manual mode
+1
Странно, что никто не упомянул одну простую реализацию как docker контейнер. Берешь N контейнеров в котором отличается только PHP и монтируешь туда одну и ту же папку с сайтом. И вуаля — у тебя три одинаковых контейнера с различными версиями PHP.
Накладных расходов почти никаких. Работает независимо от ОС.
Накладных расходов почти никаких. Работает независимо от ОС.
0
Как сделано у меня:
./apache < — сюда распаковываем Apache HTTPd
./apache/conf
./apache/conf/http.conf < — сюда инклудим конфу PHP
./apache/conf/php5.conf
./apache/conf/php7.conf
./apache/conf/php.conf [символическая ссылка на необходимую версию]
./php53
./php54
./php55
./php56
./php70
./php [символическая ссылка на необходимую версию]
Теперь пишем bat'ники…
php56.bat
echo off
c:\a\apache\bin\httpd -k stop -n ApacheHTTPd
c:\a\apache\bin\httpd -k uninstall -n ApacheHTTPd
del c:\a\apache\conf\php.conf
rd c:\a\php
mklink /d c:\a\php c:\a\php56
mklink c:\a\apache\conf\php.conf c:\a\apache\conf\php5.conf
c:\a\apache\bin\httpd -k install -n ApacheHTTPd
c:\a\apache\bin\httpd -k start -n ApacheHTTPd
php70.bat
echo off
c:\a\apache\bin\httpd -k stop -n ApacheHTTPd
c:\a\apache\bin\httpd -k uninstall -n ApacheHTTPd
del c:\a\apache\conf\php.conf
rd c:\a\php
mklink /d c:\a\php c:\a\php70
mklink c:\a\apache\conf\php.conf c:\a\apache\conf\php7.conf
c:\a\apache\bin\httpd -k install -n ApacheHTTPd
c:\a\apache\bin\httpd -k start -n ApacheHTTPd
./apache < — сюда распаковываем Apache HTTPd
./apache/conf
./apache/conf/http.conf < — сюда инклудим конфу PHP
./apache/conf/php5.conf
./apache/conf/php7.conf
./apache/conf/php.conf [символическая ссылка на необходимую версию]
./php53
./php54
./php55
./php56
./php70
./php [символическая ссылка на необходимую версию]
Теперь пишем bat'ники…
php56.bat
echo off
c:\a\apache\bin\httpd -k stop -n ApacheHTTPd
c:\a\apache\bin\httpd -k uninstall -n ApacheHTTPd
del c:\a\apache\conf\php.conf
rd c:\a\php
mklink /d c:\a\php c:\a\php56
mklink c:\a\apache\conf\php.conf c:\a\apache\conf\php5.conf
c:\a\apache\bin\httpd -k install -n ApacheHTTPd
c:\a\apache\bin\httpd -k start -n ApacheHTTPd
php70.bat
echo off
c:\a\apache\bin\httpd -k stop -n ApacheHTTPd
c:\a\apache\bin\httpd -k uninstall -n ApacheHTTPd
del c:\a\apache\conf\php.conf
rd c:\a\php
mklink /d c:\a\php c:\a\php70
mklink c:\a\apache\conf\php.conf c:\a\apache\conf\php7.conf
c:\a\apache\bin\httpd -k install -n ApacheHTTPd
c:\a\apache\bin\httpd -k start -n ApacheHTTPd
0
Не хочу разводить холивар, но понять не могу, у вас 250 (!) сайтов на PHP (под разными версиями??) в продакшене под Windows на апаче живут?
0
Нет, это девелоперская виндовая машина в офисе. Продакшены у клиентов, версия интерпретатора в ТЗ
0
Чем плохо запустить несколько апачей на разных портах, которые будут смотреть в одну и туже папку с большим количеством сайтов?
Разработчикам сказать на каком порту какая версия PHP, и они не только смогут ходить на правильный, но вдобавок, может быть еще и проверять совместимость с другими версиями, чтобы везде работало.
Разработчикам сказать на каком порту какая версия PHP, и они не только смогут ходить на правильный, но вдобавок, может быть еще и проверять совместимость с другими версиями, чтобы везде работало.
0
Наркомания. Нужно скриптик запустить на локали — любой пхп подойдет. Нужно проверить кусок кода в определенной версии — https://3v4l.org. Нужно разрабатывать проект под определенную версию — ставь докер или вагрант. И монтируй туда папку со всеми сайтиками. Версией пхп не ограничивается окружение.
0
А вариант с IIS раз под виндой не рассматривается в принципе? Там же на каждое запущенное приложение можно повесить свой обработчик php.
Для старых версий (на 2k3) приложения надо было руками разносить — оно предлагало дефолтное обычно, на новых — под каждый сайт — своё приложение болтается. И у каждого свой обработчик. Даже с перезапуском не придётся морочаться.
Несмотря на то, что винду с iis хаят некоторые, это не отнимает у последнего вот таких вот преимуществ (или отсутствие подобия связки apache+nginx, nginx+php-fpm.
А так у вас работы по перезапускам много. На апаче повесить на разные порты — вариант. В описанной мной схеме php — просто на разных доменных именах.
Для старых версий (на 2k3) приложения надо было руками разносить — оно предлагало дефолтное обычно, на новых — под каждый сайт — своё приложение болтается. И у каждого свой обработчик. Даже с перезапуском не придётся морочаться.
Несмотря на то, что винду с iis хаят некоторые, это не отнимает у последнего вот таких вот преимуществ (или отсутствие подобия связки apache+nginx, nginx+php-fpm.
А так у вас работы по перезапускам много. На апаче повесить на разные порты — вариант. В описанной мной схеме php — просто на разных доменных именах.
0
Я с IIS никогда не работал, но PHP на IIS? К такому жизнь меня не готовила) Для меня IIS — синоним проектов на ASP.
0
а что со скоростью? Я слышал, что IIS иногда даже быстрее, чем апач…
Плюс системы nginx+apache — приближенность к продакшен-окружению. Конфиг приложения пишется сразу девелопером и с минимальными правками переносится на сервер.
Плюс системы nginx+apache — приближенность к продакшен-окружению. Конфиг приложения пишется сразу девелопером и с минимальными правками переносится на сервер.
0
Скорость как скорость. Хайлоадов у меня нет, поэтому в тех масштабах не скажу. В масштабах в несколько тысяч посетителей в день (ну или одновременно посетителей 100-150 активно работающих) разницы не заметил вообще. Думаю, производительность скорее в паршивость php-кода упрётся, чем в ограничения php на винде или самого iis.
Опять же. С точки зрения администратора мне безразлично, на чём поднимать принесённый материал. Что iis, про apache+nginx. Я честно не понимаю, какие там конфиги можно сильно выписывать на уровне вебсервера. Да, есть их n-ое количество, но так, чтобы это пораждало какую-то значительную разницу — не уверен (кроме случаев, когда некоторая платформа жёстко требует это и то (типа битрикса, да и то, с оговорками — поднимать проще на апаче, ясное дело, но никто же не воспрещает и на другие платформы смотреть)).
Опять же. С точки зрения администратора мне безразлично, на чём поднимать принесённый материал. Что iis, про apache+nginx. Я честно не понимаю, какие там конфиги можно сильно выписывать на уровне вебсервера. Да, есть их n-ое количество, но так, чтобы это пораждало какую-то значительную разницу — не уверен (кроме случаев, когда некоторая платформа жёстко требует это и то (типа битрикса, да и то, с оговорками — поднимать проще на апаче, ясное дело, но никто же не воспрещает и на другие платформы смотреть)).
0
UFO just landed and posted this here
два года назад я уже всё расписал:
https://habrahabr.ru/post/244117/
https://habrahabr.ru/post/244117/
0
Sign up to leave a comment.
Несколько версий PHP под одним Apache на Windows (v2)