На несколько серверов уже поставил/обновил, поэтому оставляю заметку больше для себя, чтобы не искать по закладкам, все инструкции в одной статье. Сервера были на хостингах 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
Если возникают ошибки и Мускул не запускается, меняем файл my.cnf в папке /etc/ (а лучше старый файл просто переименовываем, например, в my.cnf.old):
Не забываем обновить все базы данных до последней версии (потом кстати весьма геморройно будет обратно откатить базы данных, если вдруг что, был такой момент):
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 :) Я один раз уже воспользовался этим, до того там все перемонстрячил, что проще было все переустановить, чем искать блин в чем же еще причина может быть :)
Всем удачи! Надеюсь, кому-нибудь эта довольно объемная инструкция поможет (можете поблагодарить в комментариях).
Попробовал на CentOS 7 поставить выбор версии PHP прямо в Vesta, не ставится нихрена. 3 раза пытался, результата ноль.
Попробовал установку скрипта для выбора версии PHP прямо в Vesta, ничего не получилось. centos 7 не берет.
Вроде ни чего сложного, но не могу найти провод домофона где плюс?
Может кто-то без напряга подскаже в каком направлении искать где в воронеже можно купить домофон?
такой клёвый сайт.