ブログなどプライベートなサイトを運用している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.org
の sources.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