14.04 Чистое обновление до ppa: ondrej / php с ppa: ondrej / php5-5.6

10

Сегодня я прошел обычные обновления серверных пакетов и обнаружил, что ppa:ondrej/php5-5.6они устарели, и теперь мы должны перейти на ppa:ondrej/php.

Основные предоставленные инструкции для запуска:

sudo add-apt-repository ppa:ondrej/php

А потом:

sudo apt-get update
sudo apt-get upgrade --show-upgraded

Глядя на новый репозиторий, кажется, что имена не совпадают полностью, поэтому я думаю, что мне нужно будет выполнить некоторые установки apt-get, чтобы установить все нужные пакеты. Также представляется, что подпакеты (то есть php-gd) будут установлены для всех версий php, а также могут установить php 5.5 и php 7.0 ( /programming/37197539/an-issue-after-ppaondrej- php5-амортизация )

Итак, мой вопрос, каков самый чистый способ «переключить» ppas и очистить существующие пакеты, учитывая, что это рабочий сервер? Должен ли я попытаться удалить все пакеты, установленные из предыдущего PPA, и / или удалить PPA из моей системы?

Его еще нет на главной странице PPA, но сообщение об обновлении было объявлено устаревшим по состоянию на июнь 2016 года, поэтому для перестройки образа нашего сервера у нас не очень много времени.

Я нашел эту страницу, которая предоставляет инструкции по отключению версии PHP, которую использует Apache: https://dzone.com/articles/php-70-and-56-on-ubuntu

Loren
источник
1
Я напишу немного текста по этой теме в вики репо здесь: github.com/oerdnj/deb.sury.org/wiki Мне просто нужно найти немного свободного времени. Все желающие могут начать и внести свой вклад в это время :)
oerdnj

Ответы:

12

Старые php5-*пакеты совместимы с новой phpX.Y-*схемой, поэтому первое, что вам нужно сделать, это установить и включить новые пакеты:

Apache 2.4

Вам нужно установить новые libapache2-mod-phpX.Yпакеты, а затем отключить старый php5 и включить новый версионный модуль, например, для PHP 5.6:

sudo apt-get install libapache2-mod-php5.6
sudo a2dismod php5
sudo a2enmod php5.6

NGINX / Apache 2.4 с PHP-FPM

Это еще проще, просто установите phpX.Y-fpmи измените путь к сокету в конфигурации вашего веб-сервера /run/php/phpX.Y-fpm.sockи скопируйте старую конфигурацию, например, для PHP 5.6:

sudo apt-get install php5.6-fpm
# now change the socket path in your nginx/apache2 configuration
# and restart the server

Если вы определили больше пулов FPM, вам нужно скопировать старую конфигурацию в новый путь, снова для PHP 5.6:

# keep the new www.conf
sudo mv /etc/php/5.6/fpm/pool.d/www.conf /etc/php/5.6/fpm/pool.d/www-5.6.conf
# copy the old configuration to the new path
sudo cp /etc/php5/fpm/pool.d/* /etc/php/5.6/fpm/pool.d/
sudo update-rc.d php5-fpm disable # or uninstall php5-fpm package
# restart PHP 5.6 FPM to read the new configuration
sudo service php5.6-fpm restart

Теперь, если вы хотите удалить старые пакеты, вы можете столкнуться с некоторыми проблемами, так как могут быть пакеты, которые требуют старых имен php5 *, вы можете захотеть добавить, ppa:ondrej/php5-compatкоторые предоставляют тонкий слой пакетов совместимости, которые php5-<foo>соответствуют php5.6-<foo>основным пакетам php5 *:

sudo add-apt-repository ppa:ondrej/php5-compat
sudo apt-get update
sudo apt-get dist-upgrade

Обязательно попробуйте сначала в непроизводственной среде! Хорошая сторона заключается в том, что при этом старая конфигурация остается /etc/php5неизменной, поэтому вы можете перенести старые настройки.

После обновления основных пакетов PHP вы можете поискать остальные php5-*пакеты и установить их эквиваленты, например

apt-get install php-apcu # for php5-apcu
apt-get install php-memcached # for php5-memcached

Я подготовлю обновление для php5-compat repo, которое автоматически сделает это сопоставление.

Более актуальный текст всегда можно найти в вики- сайте DEB.SURY.ORG PPA .

oerdnj
источник
1
Спасибо за всю твою работу! У нас есть промежуточный сервер, на котором я сначала попробую все. В ваших инструкциях вы, возможно, захотите включить что-то о запуске, dpkg --get-selections | grep phpчтобы перечислить все текущие пакеты, чтобы помочь людям отображать вещи (хотя отображение ppa будет очень полезным, если вам не нужно будет это делать, и пусть это просто работает.) Это также может быть хорошо включитьsudo add-apt-repository --remove ppa:whatever/ppa5-5.6
Лорен
Хорошая идея с удалением старого PPA.
oerdnj
1
Привет, @oerdnj. Разве там не должно быть a2dismod вместо phpdismod? А a2enmod вместо phpenmod?
Войтек Нарунец
Хороший улов, исправлено.
oerdnj
Расширение dbase не работает с вашим модулем 5.6, я мог бы скомпилировать его ранее для старой версии 5.6, но не для нового репозитория. Он скомпилирован для старой версии 5.5. но 5.6 версия запускается так что модуль потерян. Есть ли шансы, что вы могли как-то не отключить старый 5.6 ppa?
Тебе