Установка php 7.0.5 на Debian

Пока некоторые ставят php 5.3, доставая его из могилы, я решил не отставать о планеты всей, где сайты переводятся на седьмую версию php, столь нахваливаемую на просторах интернета в том числе и за высокую скорость работы, и установил сегодня из репозитория DotDeb. Надо сказать, прирост скорости реально ощутимый. Мои сайты и на WordPress, и на MODX стали летать таки. :) Вот как делал миграцию.

Установка php 7.0.5 на Debian

Содержание статьи:

  • 1 Пакеты php из репозитория Dotdeb
  • 2 Удаляем php5 с сервера
  • 3 Тесты

Пакеты php из репозитория Dotdeb

Фишка пакетов php 7 из этого репозитория в том, что они называются php7.0-%packagename%. То есть, можно сразу иметь на сервере как php 5.6 из репозитория Debian, так и седьмую версию. И конфигурационные файлы не перемешаются, так как пакеты из dotdeb хранят их в каталоге /etc/php/7.0/ и /etc/php/mods-available/ для модулей.

При желании, вы можете ознакомиться с сайтом Dotdeb, но он на английском.

Скачиваем gpg ключ репозитория.

# wget https://www.dotdeb.org/dotdeb.gpg

Прописываем репозитории в файле в каталоге /etc/apt/sources.list.d/dotdeb.list.

# echo -e "deb http://packages.dotdeb.org jessie allndeb-src http://packages.dotdeb.org jessie all" > /etc/apt/sources.list.d/dotdeb.list

Обновляем кэш пакетов.

# aptitude update

Далее смотрим, что нам нужно установить. Например, ваш сервер работает на основе php-fpm. Ок, ставим его:

# aptitude install php7.0-fpm

Если php, как модуль apache, то так:

# aptitude install php7.0 libapache2-mod-php7.0

И остальные пакеты, по вкусу.

# aptitude install php7.0-mysql php7.0-curl php7.0-redis php7.0-gd

Если вы всё устанавливаете с нуля, то следующие шаги, после установки, можно подсмотреть в соответствующих инструкциях:

  • Установка nginx и php-fpm
  • Установка apache и php как модуль

Удаляем php5 с сервера

Если же вы настраивали сервер не с нуля, а уже с работающими сайтами, то после миграции на php 7 вы, может быть, захотите вообще удалить пятую версию с сервера. Для начала нужно узнать список установленных пакетов php5:

# dpkg -l | grep php5 | grep -w 5 | awk '{print $2}'

Затем удаляем сначала модули.

# aptitude purge php5-memcached php5-redis php5-curl

И, потом, основу:

# aptitude purge php5-fpm php5-common

Это нужно для предотвращения ошибки, когда сначала удаляется php5-common, а dpkg при удалении модуля пытается его отключить командой php5dismod, но у него ничего не выходит. В итоге, пакет ломается и не удаляется. У меня такая ситуация произошла с модулем php5-memcached, когда удалял все пакеты php сразу. :)

Тесты

Чтобы воочию убедиться в скорости работы, запустил сферический бенчмарк в вакууме. Субъективные результаты его работы тоже приятно удивили. Запускалось на совершенно одинаковых параметрах. Только разные версии php.

PHP 5.6, поставляемая из репозиториев Jessie

-------------------------------------- |        PHP BENCHMARK SCRIPT        | -------------------------------------- Start : 2016-04-25 12:01:06 Server : 12345.bezplus.ru@127.0.0.1 PHP version : 5.6.19-0+deb8u1 Platform : Linux -------------------------------------- test_math                 : 1.953 sec. test_stringmanipulation   : 1.939 sec. test_loops                : 1.149 sec. test_ifelse               : 0.834 sec. -------------------------------------- Total time:               : 5.875 sec.

PHP 7.0.5, поставляемая из репозитория dotdeb

-------------------------------------- |        PHP BENCHMARK SCRIPT        | -------------------------------------- Start : 2016-04-25 11:59:53 Server : 12345.bezplus.ru@127.0.0.1 PHP version : 7.0.5-1~dotdeb+8.1 Platform : Linux -------------------------------------- test_ifelse               : 0.417 sec. test_loops                : 0.556 sec. test_stringmanipulation   : 0.767 sec. test_math                 : 0.554 sec. -------------------------------------- Total time:               : 2.294 sec.

Неплохо? Очень даже. WordPress, изначально выдававший скорость генерации примерно 0.160-0.220 стал генерировать страницы за примерно 0.06-0.100 мс. И это на недорогой vds-ке с hdd. А что ещё нужно для счастья? :)