+7 707 858 58 37
help@vpsadm.ru
PHP 7 в ISPmanager 5 — как установить в режиме модуля Apache или PHP-FPM? Способы установки PHP

Тренд перехода на PHP 7 набирает обороты. Ибо это быстрее работает (объективно!), это удобней для разработки (но это не точно, вроде как).

Тот же WordPress уже давным-давно умеет работать на новых версиях PHP.  Да и другие популярные CMS не отстают.  Поэтому есть смысл переводить целиком серверы на эту версию.  Но тут есть загвоздка в том, что софт в официальных репозиториях дистрибутивов Linux не спешит обновляться. Для установки чего-то нового как правило нужно костылить с дополнительными репозиториями.  Наверняка нет никаких с этим проблем если вы используете виртуальные хостинги.  А вот  если вы держите сайты  на собственных серверах или VPS, то тут уже нужно самостоятельно заморачиваться с обновлением и установкой новейшей версии PHP.  И поскольку в 80% случаев на серверах используется панель управления ISPmanager 5, то речь будет о настройке PHP 7 именно в ней. Почему об этом пишу я, а не саппорт ISPsystem? А хз, потому что в их мануале ничего об этом не сказано.

Какие версии PHP установлены  в распостраненных дистрибутивах Linux по-умолчанию?

Хостеры обычно предлагают такие OS для установки на VPS или дедики:

Версия OS Версия PHP по умолчанию
Debian 7 PHP 5.4
Debian 8   PHP 5.6
Centos 6 PHP 5.3
Centos 7 PHP 5.4
Ubuntu 14.04 PHP 5.5
Ubuntu 16.04 PHP 7.0

Конечно, встречаются и другие варианты, либо наоборот, может не быть что-то из этого списка. Но новейшие версии — Debian 8, Centos 7 и Ubuntu 16.04 будут практически у любого хостера. Из этих трех похвастать установленным PHP 7 может только последняя. Но у нее есть другие проблемы — она относительно новая и в ней можно огребать какие-то непонятные глюки и баги.  По моему опыту Ubuntu на серверах можно использовать LTS версии ( как раз четные 04) только года через 2 после выпуска. Как минимум это проще, чем потом долго искать и выявлять проблемы, которых в принципе не должно быть. У меня неоднократно таковые возникали с производительностью  некоторого софта в новейших версиях Ubuntu.

О версиях Ubuntu

О версиях Ubuntu

Если кто не в курсе — версия убунту означает год и месяц выпуска. Традиционно они выпускаются в октябре и апреле, поэтому минорная версия может быть только x.04 или x.10. При этом x.10 никогда не бывает LTS — Long Term Support и никогда такие версии не используются на серверах.   По сути, версии x.10 все промежуточные. Но таковыми же можно считать и версии нечетных годов — у них короткий срок поддержки. Если использование на десктопах с натяжкой может быть оправдано (в целях экспериментов или при необходимости использования новейшего софта, драйверов), то на серверах эти версии не стоит юзать ни в коем случае.  Почему? Элементарно не сможете обновлять софт через год.  А вот у LTS версий, и тем более серверных — срок поддержки очень долгий — 5 лет. Так, 16.04  будет  поддерживаться до 2021-го  года.  14.04 — до 2019, т.е еще два года. Ну и, соответственно, 12.04 до сих пор актуальна, у нее срок поддержки истекает буквально через неделю.

Какую OS лучше ставить на свой сервер?

Однозначно что-то из вышеобозначенного списка, тем более если собираетесь ставить панель ISPmanager Lite 5 (где её купить дешевле чем у разработчиков?)

Вообще, я большой любитель как раз убунту. Ибо много лет и много серверов посвятил работе именно с нею.  Это прекрасная и удобная OS для сайтов на вашем сервере. Но то был корпоративный сектор, где всё собирается, отлаживается и настраивается индивидуально. Однако когда я начал работать с серверами клиентов из вебмастеров — то столкнулся с тем, что ни Ubuntu, ни даже Debian не так хороши как Centos, и Centos 7 в частности.  Её же рекомендуют и сами разработчики панели управления ISPmanager.   На практике — в deb-based системах  (ubuntu тоже к ним относится) с этой панелью сталкивался с некоторыми глюками. С centos — практически не бывало.

Вообще здесь вопрос удобства администрирования  — разницы в работе софта и тем более сайтов практически нет между ними. Никакой разницы в производительности — тем более.  А вот в установке и настройке софта  — разница может быть уже приличной.

В Debian  и Ubuntu софт при установке идет с какими-то базовыми настройками.  Он даже запускается и работает сразу после инсталла, добавляется в автозагрузку. В Centos такого нет. Конфиги по-умолчанию, софт не стартует автоматом и некоторый нужно предварительно настроить, иначе он просто не запустится. К примеру те же серверы СУБД  —  они устанавливаются неиинициализированными. И  их нужно инициализировать (создавать системную базу) вручную перед запуском.

Тот же PHP 7 —  в centos его легко установить просто добавив дополнительный репозиторий.   Хоть в 6-ю, хоть в 7-ю версию.  В убунту 14.04 или Debian  php 7 тоже ставится из доп. репов. Но она там ставится параллельно дефолтной пятой.  И чтобы заставить апач на ней работать нужна доп. настройка. Но при использовании ISPmanager 5 всё становится гораздо проще.

Установка PHP 7 в Centos из дополнительных репозиториев

Таким способом я пользовался раньше. Дело в том, что возможность, о которой я собрался рассказать появилась в ISPmanager относительно недавно.  Поэтому приходилось ставить PHP 7 только из репозитория Remi.  Есть и другие, но лучше из него.  В ISPmanager имеется возможность установки альтернативных версий PHP. Но их ранее можно было использовать только в режиме CGI. А этот  режим подходит не всем и не для любого сайта. (О режимах подробно недавно я писал здесь).  Ранее для Apache  и  PHP-FPM  использовался общесистемный PHP  — который называется в панели native. И его версия совпадает как раз с теми, что я привел в табличке в начале статьи. В частности в Centos 7 это будет 5.4. Сооветственно, если native обновить до нужной версии — apache заработает именно на ней. Так раньше и делалось.

Это несложно.

Качаем и устанавливаем репозиторий Remi:

wget http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
rpm -Uvh remi-release-7.rpm

Разрешаем его использование:

В файле  /etc/yum.repos.d/remi-php70.repo  нужно для первого репа   [remi-php70] разрешить возможность использования  — в enabled должно быть значение 1.  По-умолчанию  там 0, что означает  репозиторий не используется. Есть и другой способ его задействовать, с  помощью опции инсталлера пакетов, но я использую такой, ибо проще запомнить и понятней.

Ну и всё, далее можно устанавливать:

yum install -y php

Это обновит тот самый native php до версии 7.0. После обновления можно перезапустить панель, чтобы она «увидела» обновление:

/usr/local/mgr5/sbin/mgrctl -m ispmgr exit

Для этого достаточно просто вот так остановить его из консоли и перезайти в браузере.  Ну либо можно этого и не делать, в любом случае на сервере уже php 7  и именно он будет использоваться в режиме модуля Apache или php-fpm.   (Кстати, из консоли вообще можно очень много чего делать в ISPmanager 5, например массово добавлять домены и базы данных)

Но это путь — так называемый «костыль».  С некоторых пор пользоваться им не следует.

Включение PHP 7  как модуля Apache в панели ISPmanager 5

Поскольку с регулярными обновлениями панели появилась возможность использовать любую версию PHP, из тех что устанавливаются в качестве альтернативных и ранее были доступны только в режиме CGI. Так называемый — селектор версий PHP.  Шикарная возможность, я рекомендую использовать ISPmanager только за одной это. Нигде больше такого удобства  и простоты  нет.  Это говорю я, админ, который без ложной скромности собаку съел на настройке серверов без панелей,  а теперь уже и с панелями.  Только здесь можно легко и просто выставить  для каждого сайта свою версию PHP — от древней 5.2, которая была актуальна когда я еще толком не начал работать даже, до новейшей 7.1.

В меню возможности надо установить эти самые альтернативные версии. После чего появится возможность юзать селектор для каждого сайта, но только в режиме CGI.

По умолчанию альтернативные версии включаются только для режимов CGI и PHP-FPM (с недавних пор).

А вот в режиме модуля Апача запустить эти версии сразу не получится. Соответствующая кнопка  в меню PHP попросту неактивна.

Довольно долго я не мог понять почему так, и как же всё таки использовать эту фичу. И просто ставил нужную версию PHP из реми, вышеописанным костыльным способом.  Пока сегодня не спросил у саппорта таки  — а где же? Причем, я предварительно добросовестно погуглил, нашел и почитал официальную доку о настройке версий PHP и ничего в ней не нашел.

Оказалось, ларчик открывался просто:

Нужно в меню «Возможности» кликнуть дважды на нужной версии PHP.  В частности 7.0.  И там есть соответствующая опция установки данной версии php как модуля Apache.

После чего  обратно идем в раздел PHP и там для нужной версии кнопка становится активной.

 

Ну, здесь я уже переключил на 7-ю версию, поэтому активную кнопку показываю на нативной версии 5.4.

Весь этот вышеописанный способ должен работать и в Debian, и в Ubuntu. На практике пока что не проверял. Проверите — отпишите плиз.  А вот «костыльный» способ в этих ОС будет еще костыльней чем в Centos, ибо там PHP 7 ставится параллельно 5-й версии и в системе получается ДВЕ версии нативного PHP. А тут с одной бы разобраться 🙂 Именно поэтому  я рекомендую centos.

 Включаем альтернативную версию PHP 7 для режима NGINX+PHP-FPM в ISPmanager 5

Тут всё довольно просто. После установки альтернативной версии она будет установлена и для PHP-FPM по-умолчанию. Достаточно включить нужную версию в настройках пользователя:

 

После этого все сайты в режиме PHP-FPM у этого пользователя будут работать на php7.

Как проверить версию PHP конкретного сайта и где найти ее настройки, файл php.ini?

Иногда, если  вы используете несколько версий PHP на сервере могут возникнуть сомнения что вы используете именно ту версию, которую собирались.  Также неплохо проверять и наличие/отсутствие нужных модулей. Или режим работы PHP — что это именно модуль apache, а не cgi.   Достоверный и работающий на 100% способ это проверить  — добавить файлик info.php в корень нужного сайта.  Его содержание должно быть таким:

<?php

phpinfo();

phpinfo(INFO_MODULES);

?>

После чего идете  по адресу site.com/info.php и видите полный расклад по вопросам, в коих вас терзали сомненья:

Причем, обратите внимание, основной конфигурационный файл альтернативной версии PHP включенной таким способом находится совсем не там, где вы ожидаете. Это порой может привести к долгим поискам и непониманию почему не удается изменить тот или иной параметр в конфигурации PHP.  Вы же его ищете в /etc/php.ini, но сайт использует php, сконфигуренный совсем в другом месте.

Юзайте phpinfo в любой непонятной ситуации, это может избавить вас от приличных потерь времени и нервов.

Ну на этом у меня все, с практической админской частью разобрались. Далее немного философии.

А зачем нужно использовать PHP 7?

А хуй его знает. Я не разработчик, прелестей всех не понимаю. Однако, замечено, что он ощутимо быстрей исполняет код, нежели старые версии.   Вот такие результаты даны в тестировании работы drupal на PHP7  в наверняка многим известном исследовании PHP 7 и кэшеров на хабре:

Как видите, практически в 2 раза быстрей, чем предшествующие версии. К примеру, на эталонном сервере c SSD  эталонный пустой WordPress будет показывать около 400-500 милисекунд TTFB.  А вот на php 7 с включенным и настроенным акселератором opcache   wp может работать со временем отклика 150-250 ms. А может и не работать 🙂 Ибо вы можете какой-нибудь уёбищный чудо-премиум-шаблон из темплэйт-монстра поставить на него, и потом охуевать почему он грузится по 3-5 секунд (это только TTFB, а визуально там и все 10-20 может быть).  А ещё  и чувствовать себя долбоёбом, ибо на демке разрабов всё летает, за 100-200 ms открывается. Вам ведь невдомек,  что там всё закэшировано к ебеням,  им же не надо  чтоб вы как-то взаимодействовали с сайтом, надо просто впарить его вам 🙂 И что там сам wordpress даже не участвует в генерации страниц — все делает nginx,  а он из кэша отдает мгновенно.  Но это так, лирическое отступление, из наболевшего.

А вообще, на тему оптимизации и разгона времени отклика скопилось прилично опыта и когда-нибудь я, скорей всего изолью, его на ваши головы, мои дорогие читатели 🙂  Причем, оптимизация и ускорение статейников это одно, об этом я уже кое-что писал. А вот на тему оптимизации  интернет-магазинов  и сервисов разговор отдельный, и думаю это особо интересно должно быть. Так?

Отправить ответ

Notify of
avatar
Санчо
Гость

Спасибо огромное за подобные статьи! Мне, как вебмастеру-несисадминщику (и не желающему особо копать в сторону администрирования) они интересны — просто, понятно и как раз в тему.

Мимокрокодил
Гость

Апач? На хуй он нужен? Нжинкс и пхп-фпм. Испманагер? На хуй он нужен? Веста или голая консолька. Убунту? Ну ты понял… Если в тексте описаны твои личные предпочтения рабочего окружения, то это весьма печальный набор.

seoonly.ru
Гость

а если 5.2 до сих пор. это плохо?

Андрей
Гость

Не по теме вопрос.
А можно DLE заставить работать на nginx+php-fpm? Т.е. без апача.

Санчо
Гость

Давно хотел задать кому-нибудь шарящему такой вопрос — везде пишут, что в nginx не работает htaccess и придется переписывать все правила в файл конфигурации непосредственно сервака.
Но когда я переехал на Евробайт (у них nginx), то сайты заработали без проблем. Точнее пришлось просто закомментировать кэширование в htaccess (спасибо техподдержке за разъяснение). Все остальные инструкции htaccess прекрасно выполняются, движок работает как надо.
Как такое понимать?

Kanapiya.ru
Гость

Такой вопрос читал что сайты на 7 версии работают быстрее, и попросил хостера сменить версию на 7, но вп не стал работать на ней, в чем проблема не знаешь?

Динар
Гость

Спасибо! спасибо за настройку и за эту статью изменял как раз версию пхп

Дмитрий
Гость

Спасибо.
Установил сегодня php 7 и включил opcache, теперь генерация страницы снизилась до 0.06 — 0.15 секунд и это на вордпрессе с 75 000 записей.

А про «супер современные» темы вы правильно подметили. О чем думают разработчики создавая их, мало того что генерят кучу запросов к базе, дак еще по сотни файлов скриптов js и таблиц стилей подключают, иногда от таких чудо тем аж браузер подвисает.

Алексей
Гость

Спасибо! очень помогло! из-за старой версии php не мог обновить joomla, благодаря Вам проблема решена!

wpDiscuz