Как установить PHP 7 в режиме модуля Apache

08 сентября 2017, 15:28

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

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

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

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

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

MODX.ONE
0    20386    0
+1

Комментарии ()

    Вы должны авторизоваться, чтобы оставлять комментарии.