Pull to refresh

Comments 30

Именно! Только этого толком нигде не описано. Или я плохой юзер гугла? «Тысячи их», вопросов, как поставить РНР7 и оставить РНР5.*, виртуальные машины создают, доп. модули на апач ставят, зачем, если цель одна и решение очевидно?
простые вещи могут быть не описаны, потому что они простые и до них догадаться можно самому не найдя ответа в гугле (если туда полезли за более лучшим)
Просто зачем создавать три сервиса apache, если вы не сможете их одновременно запустить?

Ваше решение весьма специфично (костыль), и подходит только для вас. Собственно оно практически ничем не отличается от установки трех разных апачей со своим PHP, кроме экономии пары мегабайт на диске.

В качестве более продвинутого костыля, можно было бы настроить все таким образом, что структура каталога сохранялась, отдельно запускается три apache на разных портах, настраивается прозрачный прокси, в конфигах которого указывается на какой apache какой сайт будет перенаправлять.

При этом nginx как прозрачный прокси еще и позволяет приблизить конфиги на дев-машине к боевым… (т.к. не так уж и редко используется связка nginx+httpd, кроме популярного nginx+php-fpm)
для меня оказался самым удобным способом. apache на трех разных портах, а впереди nginx. Через map очень удобно управлять какаой сайт на какую версию отправить.

туториал как сделать 3 версии php для linux:
1. Берём gentoo
2. Ставим нужные версии
3. И через eselct меняем версию

Всё же windows для меня довольно сложная штука…
А если у меня убунту?

/sarkazm/ Какой же этот линукс неудобный. Захотел 3 версии PHP — надо всю систему переустанавливать.
с убунту уже кастыли, либо 3 lxc контейнера, либо phpbrew.
да в принципе возможно если скомпилировать в разные директории, и при конфигурации указать разные директории настроек. Но сдаётся мне что демоны одновременно не запустишь а может и запустишь.
https://www.sitepoint.com/run-multiple-versions-php-one-server/
Если делать как здесь, все прекрасно работает.
Ну я только что выше об этом и сказал, если их скомпилировать в разные директории они должны завестись.
Всё просто:

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
Странно, что никто не упомянул одну простую реализацию как docker контейнер. Берешь N контейнеров в котором отличается только PHP и монтируешь туда одну и ту же папку с сайтом. И вуаля — у тебя три одинаковых контейнера с различными версиями PHP.

Накладных расходов почти никаких. Работает независимо от ОС.
Как сделано у меня:

./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
Не хочу разводить холивар, но понять не могу, у вас 250 (!) сайтов на PHP (под разными версиями??) в продакшене под Windows на апаче живут?
Нет, это девелоперская виндовая машина в офисе. Продакшены у клиентов, версия интерпретатора в ТЗ
Чем плохо запустить несколько апачей на разных портах, которые будут смотреть в одну и туже папку с большим количеством сайтов?

Разработчикам сказать на каком порту какая версия PHP, и они не только смогут ходить на правильный, но вдобавок, может быть еще и проверять совместимость с другими версиями, чтобы везде работало.
Наркомания. Нужно скриптик запустить на локали — любой пхп подойдет. Нужно проверить кусок кода в определенной версии — https://3v4l.org. Нужно разрабатывать проект под определенную версию — ставь докер или вагрант. И монтируй туда папку со всеми сайтиками. Версией пхп не ограничивается окружение.
UFO just landed and posted this here
А вариант с IIS раз под виндой не рассматривается в принципе? Там же на каждое запущенное приложение можно повесить свой обработчик php.
Для старых версий (на 2k3) приложения надо было руками разносить — оно предлагало дефолтное обычно, на новых — под каждый сайт — своё приложение болтается. И у каждого свой обработчик. Даже с перезапуском не придётся морочаться.
Несмотря на то, что винду с iis хаят некоторые, это не отнимает у последнего вот таких вот преимуществ (или отсутствие подобия связки apache+nginx, nginx+php-fpm.
А так у вас работы по перезапускам много. На апаче повесить на разные порты — вариант. В описанной мной схеме php — просто на разных доменных именах.
Я с IIS никогда не работал, но PHP на IIS? К такому жизнь меня не готовила) Для меня IIS — синоним проектов на ASP.
но PHP на IIS/blockquote>
А почему нет? Я с iis работал только с 2003 сервера. Проблем не заметил. Всё чинно-благородно. Что было до этого — не знаю.
а что со скоростью? Я слышал, что IIS иногда даже быстрее, чем апач…

Плюс системы nginx+apache — приближенность к продакшен-окружению. Конфиг приложения пишется сразу девелопером и с минимальными правками переносится на сервер.
Скорость как скорость. Хайлоадов у меня нет, поэтому в тех масштабах не скажу. В масштабах в несколько тысяч посетителей в день (ну или одновременно посетителей 100-150 активно работающих) разницы не заметил вообще. Думаю, производительность скорее в паршивость php-кода упрётся, чем в ограничения php на винде или самого iis.
Опять же. С точки зрения администратора мне безразлично, на чём поднимать принесённый материал. Что iis, про apache+nginx. Я честно не понимаю, какие там конфиги можно сильно выписывать на уровне вебсервера. Да, есть их n-ое количество, но так, чтобы это пораждало какую-то значительную разницу — не уверен (кроме случаев, когда некоторая платформа жёстко требует это и то (типа битрикса, да и то, с оговорками — поднимать проще на апаче, ясное дело, но никто же не воспрещает и на другие платформы смотреть)).
UFO just landed and posted this here
UFO just landed and posted this here
два года назад я уже всё расписал:
https://habrahabr.ru/post/244117/
Sign up to leave a comment.

Articles