Debian 8 から10にアップグレードした

ブログなどプライベートなサイトを運用しているVPSサーバにインストールしているDebian 8をDebian 10にアップグレードした。2ヶ月前のメモ。

今回のポイント

PHPとNginxのパッケージで互換性が崩れるため対応が必要だった。

PHPについてはDebian 8では新しいPHPバージョンをインストールするため oerdnj/deb.sury.org パッケージを利用していた。ただある日から apt-get update をするとソースが404を返すようになりサポートサイクルが終了したDebianやUbuntuのバージョンはサポートされなくなった。

https://github.com/oerdnj/deb.sury.org/wiki/Frequently-Asked-Questions
Anything not listed here is not supported. It might or might not work. Ubuntu 14.04 Trusty and Debian 8 Jessie are not supported.

これに関してはIssueで作者の「サポートが切れたのでもう対応しない」とユーザの「コミニュティーの意見に耳を傾けるべきだ」というやりとりが行われていた。個人的には『使っている人がいるから』と言っていたらいつまでも古いバージョンをサポートしないといけなくなるので決断はやむなしと思っている。仕事で使っていたら自分も他のユーザのように食い下がったかもしれないが、今回は自分が頑張ってアップデートすれば良いと考え、これがDebianのバージョンを8からあげるきっかけとなった。

Nginxについては dotdeb を利用していた。こちらはDebian本体のディストリビューションで十分なパッケージが提供されるようになったので7年間の開発を経て役目を終えることにされたようだ。今までありがとうございました。というわけで、Debian 9以降からは本体のディストリビューションのNginxのパッケージを利用する必要がある。

Debian 8 to 9

Debian 9へのアップグレードは以下のように実施。apt-get updateがエラーになるので oerdnj/deb.sury.orgsources.list をコメントアウトする。dotdebとDebian本体のディストリビューションのパッケージ名が同じ(nginx-common, nginx-extras)なので衝突しないように一旦削除しておく。

Debian 9更新後に 今まで oerdnj/deb.sury.org からインストールしていたPHPのパッケージが使えるようになるので sources.list を戻し apt-get upgrade で PHPを更新。

# jessieのパッケージが404なのでコメントアウト
vi /etc/apt/sources.list.d/sury-php.list

# dotdebのnginxをアンインストールする
apt-get remove nginx-common nginx-extras

# dotdebのsourceリストをコメントアウト
vi /etc/apt/sources.list.d/dotdeb.list

# debian8最新
apt-get update
apt-get upgrade
apt-get dist-upgrade
# sury-phpのコメントアウトでphpが消えてしまうため実行せず
#apt-get autoremove
#apt-get autoclean

# stretchに変更
sed -i 's/jessie/stretch/g' /etc/apt/sources.list
sed -i 's/jessie/stretch/g' /etc/apt/sources.list.d/sury-php.list
# コメントアウトを戻す
vi /etc/apt/sources.list.d/sury-php.list
apt-get update
apt-get upgrade
apt-get dist-upgrade

# 再起動
reboot

cat /etc/debian_version
9.13
apt-get autoremove
apt-get autoclean

Debian 9 to 10

Debian 10へのアップグレードは以下のように実施。sources.listを変更して更新した後、Debianの本体のディストリビューションのNginxをインストール。パッケージ名は同じだがdotdebで提供していた nginx-extras とは提供されているモジュールが同じではない。

設定ファイルのパスは /etc/nginx/nginx.conf のまま変わらなかったのでインストール後にエラーになった設定を修正するという作業にした。自分が利用していた中ではpapespeedが無かったので設定でコメントアウトした。ないと困るくらいのアクセスがあってから考えようと思いpapespeedについては諦めることにした。

# busterに変更
sed -i 's/stretch/buster/g' /etc/apt/sources.list
sed -i 's/stretch/buster/g' /etc/apt/sources.list.d/sury-php.list
apt-get update
apt-get upgrade
apt-get dist-upgrade

# 再起動
reboot

cat /etc/debian_version
10.6
apt-get autoremove
apt-get autoclean

# pagespeed部分をコメントアウト
vi /etc/nginx/nginx.conf

apt-get install nginx-extras