Пока некоторые ставят php 5.3, доставая его из могилы, я решил не отставать о планеты всей, где сайты переводятся на седьмую версию php. Столь нахваливаемую на просторах интернета в том числе и за высокую скорость работы, и установил сегодня из репозитория DotDeb. Надо сказать, прирост скорости реально ощутимый. Мои сайты и на WordPress, и на MODX стали летать таки. 🙂 Вот как делал миграцию.
Пакеты 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 all\ndeb-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
Если вы всё устанавливаете с нуля, то следующие шаги, после установки, можно подсмотреть в соответствующих инструкциях на сайте.
Удаляем 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 : avege.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 : avege.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. А что ещё нужно для счастья? 🙂