Пару месяцев назад я писал пост «PHP7: Экономим ресурсы, выигрываем в скорости» по обновлению на php7. Если не читали, то рекомендую ознакомиться с подготовительным этапом, а саму установку делать уже по обновленному мануалу.
Что поменялось? Во первый упростилась процедура сборки расширений/дополнений к php. Во вторых, теперь мы можем иметь на сервере несколько версий php, которые не будут мешать друг другу.
Установка php7 на centos 6
1. Я сохраню список установленных пакетов:
yum list installed | grep php > /tmp/php70_installed |
yum list installed | grep php > /tmp/php70_installed
2. Удаляем старые дистрибутивы:
3. Ставим/Обновляем Epel и Remi:
rpm -Uvh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm |
rpm -Uvh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm
У вас должны поставиться php репозитария:
ls /etc/yum.repos.d/ | grep php
remi-php54.repo
remi-php70.repo
remi-php71.repo |
ls /etc/yum.repos.d/ | grep php
remi-php54.repo
remi-php70.repo
remi-php71.repo
4. Установка:
yum -y install php70-build php70-php php70-php-cli php70-php-common php70-php-devel php70-php-fpm php70-php-gd
yum -y install php70-php-imap php70-php-intl php70-php-json php70-php-mbstring php70-php-mcrypt php70-php-mysqlnd
yum -y install php70-php-opcache php70-php-pdo php70-php-pecl-gearman php70-php-pecl-geoip php70-php-pecl-igbinary
yum -y install php70-php-pecl-memcached php70-php-pecl-msgpack php70-php-pecl-zip php70-php-snmp php70-php-xml php70-runtime |
yum -y install php70-build php70-php php70-php-cli php70-php-common php70-php-devel php70-php-fpm php70-php-gd
yum -y install php70-php-imap php70-php-intl php70-php-json php70-php-mbstring php70-php-mcrypt php70-php-mysqlnd
yum -y install php70-php-opcache php70-php-pdo php70-php-pecl-gearman php70-php-pecl-geoip php70-php-pecl-igbinary
yum -y install php70-php-pecl-memcached php70-php-pecl-msgpack php70-php-pecl-zip php70-php-snmp php70-php-xml php70-runtime
Список пакетов индивидуален и на вашем проекте может отличаться от моего. Доступный список всегда можно посмотреть при помощи команды:
yum list available | egrep "php[567]" | more |
yum list available | egrep "php[567]" | more
5. Проверка:
scl enable php70 'php -v'
PHP 7.0.16 (cli) (built: Feb 14 2017 16:07:50) ( NTS )
Copyright (c) 1997-2017 The PHP Group
Zend Engine v3.0.0, Copyright (c) 1998-2017 Zend Technologies
with Zend OPcache v7.0.16, Copyright (c) 1999-2017, by Zend Technologies |
scl enable php70 'php -v'
PHP 7.0.16 (cli) (built: Feb 14 2017 16:07:50) ( NTS )
Copyright (c) 1997-2017 The PHP Group
Zend Engine v3.0.0, Copyright (c) 1998-2017 Zend Technologies
with Zend OPcache v7.0.16, Copyright (c) 1999-2017, by Zend Technologies
6. Делаем симлинк для работы консольных приложений:
sudo ln -s /usr/bin/php70 /usr/bin/php |
sudo ln -s /usr/bin/php70 /usr/bin/php
7. Я работаю с php через сокеты, поэтому меняю конфигурационный файл под свои требования.
Обратите внимания на то, что конфигурация теперь живет по новому пути!
/bin/sed -ie "s/127.0.0.1:9000/\/var\/run\/php7-fpm.sock/g" /etc/opt/remi/php70/php-fpm.d/www.conf
/bin/sed -ie "s/;listen.mode = 0660/listen.mode = 0666/g" /etc/opt/remi/php70/php-fpm.d/www.conf |
/bin/sed -ie "s/127.0.0.1:9000/\/var\/run\/php7-fpm.sock/g" /etc/opt/remi/php70/php-fpm.d/www.conf
/bin/sed -ie "s/;listen.mode = 0660/listen.mode = 0666/g" /etc/opt/remi/php70/php-fpm.d/www.conf
8. Стартуем демона и прописываем его в «автозагрузку»:
chkconfig php70-php-fpm on
service php70-php-fpm start |
chkconfig php70-php-fpm on
service php70-php-fpm start
9. Проверяем путь сокета в nginx.
upstream php-fpm {
server unix:/var/run/php7-fpm.sock;
} |
upstream php-fpm {
server unix:/var/run/php7-fpm.sock;
}
По времени процедура обновления занимает также примерно 5-10 минут. Для тех, кто все еще думает, ниже статистика по изменению времени загрузки страниц на достаточно посещаемом проекте: