+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, благодаря Вам проблема решена!

Edward
Гость

То есть после установки PHP7 как модуля апач, будет возможность ставить PHP7 или PHP5.4 как модуль апач для всей сайтов расположенных на сервере?

Ilya
Гость

Я правильно понимаю, что в Lite версии панели нельзя выбрать версию PHP (как модуль Apache) для каждого домена свою? Либо все домены условно на 5-ке, либо все на 7-ке. Выбрать версию для домена можно только как CGI. Или я что-то упустил? Спасибо!

BekNet
Гость

Благодарю замечательно, быстро и просто с вашей статьей разобрался что нужно делать ибо в доках реально найти нельзя инфу и гугл в ручную грит менять а тут вон нажал и всем счастье!

Анатолий
Гость

Добрый день. Делал по вашему видео https://www.youtube.com/watch?v=snAClVa3rbg.
FastCGI (Nginx + PHP-FPM) php7.0.23. Поставил Джумлу. Все страницы кроме главной выдают 404 Not Found nginx/1.12.1. Пробовал в файле /etc/nginx/nginx.conf прописать https://docs.joomla.org/Nginx. Не работает. Всё что можно было попробовал

wpDiscuz