Установка на сервер новых PHP 7.x, MySQL, выбор версии PHP в панели VESTA на CentOS

Автор: | 03.08.2019

На несколько серверов уже поставил/обновил, поэтому оставляю заметку больше для себя, чтобы не искать по закладкам, все инструкции в одной статье. Сервера были на хостингах Timeweb и FirstVDS. Vesta на CentOS 6. Также используются команды для Apache, но при использовании NGINX, PHP-FPM и прочего я думаю сами разберетесь, какие команды нужно вводить.

И главное, помним, что в первую очередь вся статья — это заметка для себя, поэтому делайте все на свой страх и риск, ну вы понимаете. И можно перед всеми действиями сделать бэкап всего сервера. А еще, если ну не уверены вы в своих силах — то может лучше чутка заплатить и воспользоваться помощью профессионалов?

Изначально с Вестой ставится PHP 5.6 и MySQL 5.5 (они самые бесконфликтные и работают с почти любым хоть сколько-то современным движком). Далее все указанные команды вводятся в консоли, проще всего использовать программу Putty, но если вы и с этим не разберетесь, то лучше звоните Солу (профессионалам, я имею в виду, иначе потом больше заплатите для полного восстановления всех файлов и доделок, если что-то не будет в бэкапах). Так что я вас предупредил.

Проверить текущую версию PHP на CentOS можно командой:

php -v

Проверить текущую версию MySQL на CentOS можно командой:

mysql —version

Обновление версии MySQL до последней версии (начнем с этого).

Останавливаем mysql:

service mysqld stop

Делаем бэкап существующих баз данных:

mkdir /var/lib/mysqlcopy

cp -aR /var/lib/mysql/* /var/lib/mysqlcopy

Устанавливаем пакет нового Мускула:

yum install http://dev.mysql.com/get/mysql57-community-release-el6-7.noarch.rpm

Открываем файл по адресу: /etc/yum.repos.d/mysql-community.repo

Далее редактируем строку с нужной версией Мускула:

[mysql56-community]

enabled=1

[mysql57-community]

enabled=0

(единичку ставим после первых квадратных скобок enabled=1, если нужен Мускул версии 5.6, либо после вторых квадратных скобок, после mysql57, если нужен mysql версии 5.7). Я везде ставлю 5.7, вроде реальных проблем и несовместимости с ней ни у одного движка пока не было (была проблема с движком WebAsyst, он требовал максимум 5.6, но проблема решилась добавлением всего одной строчки в файл конфигурации движка, думаю и с другими движками можно будет также решить если что — этой строчкой нужно принудительно включить работу движка с MySQLi).

Далее ставим Мускул выбранной версии из репозитория:

yum install mysql

Ошибок быть не должно, если все гуд, запускаем обратно службу мускула:

service mysqld start

Не забываем обновить все базы данных до последней версии (потом кстати весьма геморройно будет обратно откатить базы данных, если вдруг что, был такой момент):

mysql_upgrade -uroot

Далее я напишу вообще читерский способ, как можно выбирать версию PHP прямо в панели управления Vesta в настройках сайта.

Установка скрипта для выбора версии PHP прямо в Vesta

Для чего это нужно — некоторые старые версии движков не работают с новым PHP, поэтому требуют старую версию PHP, под которые и писались движки (например, старые версии битрикса, Joomla, да все, в принципе). Коды для PHP в новых версиях слегка изменились, где-то упростились, где-то для безопасности усложнились, поэтому код сайтов на PHP всегда пишется под конкретные версии, старые команды с новым PHP не работают, но на новом PHP все сайты работают заметно шустрее. 5.6 на данный момент считается наиболее универсальным, но и более медленным и, возможно, менее безопасным, так как более не поддерживается и вроде уже не обновляется (крайняя версия 5.6.40 что ли или около того).

После установки скрипта будут доступны для выбора следующие версии php — 5.4, 5.5, 5.6, 7.0, 7.1, 7.2, 7.3 и бета-версия 7.4. Изначально скрипт писался только до 7 версии (и в интернете везде написаны инструкции по старому скрипту), я же нашел более новый скрипт, который также устанавливает новые версии PHP. Кстати, выложен был на GitHub всего 2 недели назад, так что держите свежачок.

wget http://mirror.skamasle.com/vestacp/PHP/sk-php-selector2.sh

bash sk-php-selector2.sh all

, где вместо all можно поставить только нужные версии, тогда команда будет выглядеть, например, так:

bash sk-php-selector2.sh php56 php71 php73

Дальше консоль пишет какие версии PHP поставила. После завершения команды (на всякий случай можно еще перезагрузить весь сервер или только Apache командой service httpd restart) в настройках Web каждого сайта появится несколько строк в пункте Шаблон Web HTTPD:

default — это бывший по умолчанию php5.6, последние соответственно 5.4, 5.5, 7.0 и так далее. Изменения сразу же работают после сохранения.

UPD. Изначально писал статью со старой версией скрипта, а в последующем обновил её под новую версию скрипта.

Если вы уверены, что все Ваши сайты будут без проблем работать на последней стабильной версии PHP (на момент написания это PHP7.3), то вводим следующие команды.

Обновляем PHP до версии 7.3 (только если не используется предыдущий пункт с выбором PHP из панели!!!)

Если у вас CentOS 7

wget https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm

wget http://rpms.remirepo.net/enterprise/remi-release-7.rpm

rpm -Uvh remi-release-7.rpm epel-release-latest-7.noarch.rpm

Если у вас CentOS 6

wget https://dl.fedoraproject.org/pub/epel/epel-release-latest-6.noarch.rpm

wget http://rpms.remirepo.net/enterprise/remi-release-6.rpm

rpm -Uvh remi-release-6.rpm epel-release-latest-6.noarch.rpm

Далее одинаковые команды для CentOS 6 и 7:

yum install yum-utils

yum-config-manager —enable remi-php73

в последней строке (я думаю) при появлении более новых версий PHP просто меняются цифры на соответствующие.

Дальше собственно устанавливаем выбранный PHP:

yum update -y

Далее перезапускаем сервер или только Apache командой 

service httpd restart

И проверяем текущую версию PHP командой php -v

Если в процессе установки возникли ошибки и новая версия PHP не заработала (у меня их не было), отключаем лишние пакеты PHP соответствующими командами:

yum-config-manager —disable remi-php56

yum-config-manager —disable remi-php70

yum-config-manager —disable remi-php71

yum-config-manager —disable remi-php72

А затем возвращаемся к команде yum-config-manager —enable remi-php73 и продолжаем дальше.

Вообще, я так заметил, у CentOS не всегда все ставится в автоматическом режиме и без ошибок (ваш хваленый Linux, мать его), поэтому может и не с первого раза получиться, но вроде все необходимые команды тут перечислены. 

А если совсем все плохо, можно попробовать сделать:

 

Даунгрейд версии PHP обратно до 5.6.

Также я думаю этот код можно использовать при новой установке PHP, где еще не стояло Vesta, хотя лично я использовал меньшее количество пакетов (но ни хрена так и не заработало, поэтому я думаю лучше вручную все эти пакеты так и указать, как описано здесь в коде — думаю, лишним не будет).

Просто выпишу код, тут все должно быть понятно (вставляем в консоль по принципу 1 команда — 1 строка, кроме большой строки с перечислением пакетов):

service httpd stop

yum install php56

yum —enablerepo=remi-php56 install php56-php php56-php-pear php56-php-bcmath php56-php-pecl-jsond-devel php56-php-mysqlnd php56-php-gd php56-php-common php56-php-fpm php56-php-intl php56-php-cli php56-php php56-php-xml php-php-opcache php56-php-pecl-apcu php56-php-pecl-jsond php56-php-pdo php56-php-gmp php56-php-process php56-php-pecl-imagick php56-php-devel php56-php-mbstring

 service php70-php-fpm stop

rm /usr/bin/php -y

ln -s /usr/bin/php56 /usr/bin/php

service httpd restart

php -v

А еще, если уже совсем все плохо, сайты не открываются, сервер не работает, то пиши пропало — проще переустановить систему и заново поставить Vesta :) Я один раз уже воспользовался этим, до того там все перемонстрячил, что проще было все переустановить, чем искать блин в чем же еще причина может быть :)

Всем удачи! Надеюсь, кому-нибудь эта довольно объемная инструкция поможет (можете поблагодарить в комментариях).













Комментарии:

Добавить комментарий

Ваш e-mail не будет опубликован.