14.04 Upgrade dengan bersih ke ppa: ondrej / php dari ppa: ondrej / php5-5.6

10

Saya melalui upgrade paket server yang biasa saya hari ini dan menemukan bahwa ppa:ondrej/php5-5.6telah didepresiasi dan sekarang kita harus upgrade ke ppa:ondrej/php.

Instruksi dasar yang disediakan adalah untuk menjalankan:

sudo add-apt-repository ppa:ondrej/php

Lalu:

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

Melihat repositori baru, nama-nama tampaknya tidak sepenuhnya berbaris jadi saya pikir saya perlu melakukan beberapa instalasi apt-get untuk mendapatkan semua paket yang tepat diinstal. Tampaknya juga bahwa sub-paket (yaitu php-gd) akan diinstal untuk semua versi php dan juga dapat menginstal php 5.5 dan php 7.0 ( /programming/37197539/an-issue-after-ppaondrej- php5-deprecation )

Jadi pertanyaan saya adalah, apa cara paling bersih untuk "mengganti" ppas dan membersihkan paket yang ada mengingat ini adalah server produksi? Haruskah saya mencoba untuk menghapus semua paket yang diinstal dari PPA sebelumnya dan / atau menghapus PPA dari sistem saya?

Itu belum di halaman utama untuk PPA tetapi pesan pembaruan memberi penghentian sebagai Juni 2016 sehingga bukan waktu yang sangat lama untuk membangun kembali citra server kami.

Saya memang menemukan halaman ini, yang menyediakan instruksi untuk mematikan penggunaan versi PHP apache: https://dzone.com/articles/php-70-and-56-on-ubuntu

Loren
sumber
1
Saya akan menulis beberapa teks tentang topik di wiki repo di sini: github.com/oerdnj/deb.sury.org/wiki Saya hanya perlu mencari sedikit waktu luang. Semua orang dipersilakan untuk memulai dan berkontribusi sementara itu :)
oerdnj

Jawaban:

12

Paket lama php5-*dapat diinstal bersama dengan phpX.Y-*skema baru , jadi hal pertama yang perlu Anda lakukan adalah menginstal dan mengaktifkan paket baru:

Apache 2.4

Anda perlu menginstal libapache2-mod-phpX.Ypaket baru dan kemudian menonaktifkan php5 lama, dan mengaktifkan modul versi baru, fe untuk PHP 5.6:

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

NGINX / Apache 2.4 dengan PHP-FPM

Ini bahkan lebih mudah, cukup instal phpX.Y-fpmdan ubah jalur soket di konfigurasi server web Anda /run/php/phpX.Y-fpm.sockdan salin konfigurasi yang lama, fe untuk PHP 5.6:

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

Jika Anda telah mendefinisikan lebih banyak kumpulan FPM, Anda perlu menyalin konfigurasi lama ke jalur baru, sekali lagi untuk 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

Sekarang jika Anda ingin menghapus paket lama, Anda mungkin mengalami beberapa masalah seperti mungkin ada paket yang membutuhkan php5 tua * nama, Anda mungkin ingin menambahkan ppa:ondrej/php5-compatyang memberikan lapisan tipis paket kompatibilitas yang peta php5-<foo>untuk php5.6-<foo>untuk php5 utama * paket:

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

Pasti coba ini dulu di lingkungan non-produksi ! Sisi baiknya adalah ini membuat konfigurasi lama /etc/php5tidak tersentuh, sehingga Anda dapat memigrasi pengaturan lama.

Setelah memperbarui paket PHP utama, Anda mungkin ingin mencari sisa php5-*paket dan menginstalnya, misalnya

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

Saya akan menyiapkan pembaruan untuk repo php5-compat, yang akan membuat pemetaan ini secara otomatis.

Teks yang lebih terkini, dapat selalu ditemukan di DEB.SURY.ORG PPA Wikis .

oerdnj
sumber
1
Terima kasih untuk semua pekerjaanmu! Kami memiliki server pementasan yang akan saya coba semuanya terlebih dahulu. Dalam instruksi Anda, Anda mungkin ingin memasukkan sesuatu tentang menjalankan dpkg --get-selections | grep phpdaftar semua paket saat ini untuk membantu orang memetakan sesuatu (meskipun ppa pemetaan akan sangat berguna karena tidak harus melakukan itu dan membiarkannya berfungsi.) Mungkin juga bagus untuk memasukkansudo add-apt-repository --remove ppa:whatever/ppa5-5.6
Loren
Ide bagus dengan penghapusan PPA lama.
oerdnj
1
Hey @ oerdnj. Bukankah seharusnya a2dismod bukan phpdismod di sana? Dan a2enmod bukan phpenmod?
Wojtek Naruniec
Tangkapan bagus, diperbaiki.
oerdnj
ekstensi dbase tidak bekerja dengan modul 5.6 Anda, saya bisa mengompilasinya lebih awal untuk versi 5.6 yang lama tetapi tidak untuk repositori baru. Itu dikompilasi untuk versi 5.5 yang lama. tetapi versi 5.6 dijalankan sehingga modul hilang. Apakah ada kemungkinan Anda entah bagaimana tidak dapat menonaktifkan 5,6 ppa yang lama?
Tebe