※弊社記事はたぶんにPRが含まれますので
話半分で受け取ってください。

サーバを Debian 11 bullseye にアップグレードした

 Debian 11 bullseye がリリースされてたのでサーバの Debian をアップグレードしました。

1. アップグレードの下準備

1.1. 稼働中のDebianのバージョン確認

 以下のコマンドで現在動いている Debian のバージョンを確認できます。

$ cat /etc/debian_version 
10.10

 もしくはこっちでも確認できます。

$ lsb_release -a
No LSB modules are available.
Distributor ID:	Debian
Description:	Debian GNU/Linux 10 (buster)
Release:	10
Codename:	buster

1.2. 稼働中のDebianのアップグレード

 現在動いている Debian を最新の状態にアップグレードしておきます。

# apt update
# apt upgrade
# apt dist-upgrade

 apt update すると最後のほうにこんなメッセージ出るかもですが、これは Debian 11 bullseye のリリースに伴い、10 buster が stable ブランチから oldstable になったというお知らせです。

N: Repository 'http://security.debian.org/debian-security buster/updates InRelease' changed its 'Suite' value from 'stable' to 'oldstable'
N: Repository 'http://ftp.jp.debian.org/debian buster InRelease' changed its 'Suite' value from 'stable' to 'oldstable'

 過去のアップグレードなどで生じた不要な設定ファイルを削除しておきます。以下のコマンドを実行するとデフォルトの設定ファイルをリストしてくれます。

# find /etc -name '.dpkg-' -o -name '.ucf-' -o -name '*.merge-error'

2. アップグレード

2.1. sources.list の書き換え

 /etc/apt/sources.list を開いて buster を bullseye に書き換えます。

 ただし、security の記述方法が変わっています。これまでは buster/updates という書き方でしたが、11からは bullseye-security になっています。

 変更前は以下のような感じ。

deb http://ftp.jp.debian.org/debian/ buster main
deb-src http://ftp.jp.debian.org/debian/ buster main

#deb http://ftp.jp.debian.org/debian/ buster-updates main
#deb-src http://ftp.jp.debian.org/debian/ buster-updates main

deb http://security.debian.org/ buster/updates main
deb-src http://security.debian.org/ buster/updates main

 変更後は以下の通り。

deb http://ftp.jp.debian.org/debian/ bullseye main
deb-src http://ftp.jp.debian.org/debian/ bullseye main

#deb http://ftp.jp.debian.org/debian/ bullseye-updates main
#deb-src http://ftp.jp.debian.org/debian/ bullseye-updates main

deb http://security.debian.org/ bullseye-security main
deb-src http://security.debian.org/ bullseye-security main

 うちでは枯れた環境、かつ、できるだけデフォルトのままでの安定運用を心がけているので main だけ。bullseye-updates もコメントアウトしちゃってます。

2.2. アップグレード作業

 以下の順でコマンドを実行します。

# apt update
# apt upgrade --without-new-pkgs
# apt full-upgrade

 失うものが少なければ apt upgrade --without-new-pkgs は飛ばして full-upgrade に行っても大丈夫。らしい。

2.3. アプデの確認

 アップグレードされたことを確認します。

$ cat /etc/debian_version 
11.0

3. おまけ

3.1. PHP7.4とMariaDBのインストール

 アップグレードによって php7.3 と mariadb10.3 がアンインストールされるので、新たに php7.4 と mariadb 10.5 をインストールします。(でも php7.4-cli, php7.4-common, php7.4-json, php7.4-opcache, php7.4-readline, php7.4-phpdbg は最初からインストールされていた。)

 WordPressを使うならこのあたりをインストールしておけば大丈夫だと思います。

# apt install mariadb-server php-curl php-fpm php-gd php-mbstring php-mysql php-xml php-zip

 php7.3 と mariadb10.3 の設定ファイルはまだ残っているので、必要に応じて新しいほうにコピーしたり差分を取って修正したりします。

3.2. php-fpmの設定見直し

 アプデついでにphp-fpmの設定を見直し。

 pmdynamic から static に変更し、pm.max_children の数をサーバのCPUコア数と同じ 2 にしました。コア数以上にしてもあんまパフォーマンス変わんなくね? という話を見たので。
 pm.max_requests は 1日のPV / コア数 にしてだいたい1日に1回再起動されるようにしました。

pm = static
pm.max_children = 2
pm.max_requests = 1000

3.3. SSHの設定ファイルの構成見直し

 アプデしたら sshd_conf.d というディレクトリが現れました(いままで気付いてなかった可能性も)。このディレクトリに設定を入れておくと読み込んでくれます。つまり、このディレクトリに設定を吐き出しておけば、アプデされるたびに ssh_config.conf を修正する必要がなくなります。
 さしあたってポート番号を設定するファイル port.conf を作って放り込んでおきました。

Port 123456

4. 後始末

 必要に応じて rc(設定ファイルが残ってる)状態のパッケージを完全に削除します。
 rc状態のパッケージは以下のコマンドで確認できます。

# dpkg -l | awk '/^rc/ { print $2 }'

 完全に削除するには以下のコマンドを実行します。

# apt purge $(dpkg -l | awk '/^rc/ { print $2 }')

 完全削除に伴って生じる依存関係がなくなったパッケージを apt autoremove で削除します。

# apt autoremove

 以上でアプデ作業は完了です。

参考

関連する記事