神戸六甲の峰からポートアイランドを望む
サーバ・インフラ系を中心にサーバ構築に関する事柄を記述してきましたが,今回はLinuxサーバ「Ubuntu」のOSバージョンアップを扱います。
Windows「WSL」上で構成する場合は,Windowsが密接に関係しているため少し特殊ですが,外部のレンタルサーバ等で稼働するLinux「Ubuntu」の場合は,コマンドでバージョンアップできます。
本来は,サーバアプリであるApache2のバージョンアップを先に記述したかったのですが,Apache2のリポジトリがLinux「Ubuntu」バージョンから影響を受けるため,Linux「Ubuntu」のバージョンアップを先に実証することにしました。
【実証前提条件】
・サーバ : VPSサーバ (IPアドレス:IPv4固定値)
・Linux ディストリビューション : Ubuntu 20.04 LTS(lsb_release -a)
・Apache2 : 2.4.63(apache2 -v)
それでは始めます。
1.はじめに
UbuntuのバージョンアップはOSバージョンアップとなるため,如何なるエラーが出るかわかりません。
そのため,最初に必ず全体のバックアップを取得し,如何なるトラブルが発生しても回復できる手立てを講じておきます。
サーバをレンタルしている場合は,レンタルサーバ全体をバックアップするサービスがあると思います。また,WindowsWSLの場合には,WSLごとバックアップする手立てがあると思います。
また,コマンドによるUbuntuのバージョンアップは,いっそく飛びにバージョンを上げることはできません。
Ubuntu20.04 ―> Ubuntu22.04 ―> Ubuntu24.04 というように,2段階の作業になります。
2.AptのUpdateおよびUpgradeの実行
定番の作業ですが,AptコマンドのUpdateとUpgradeを行うため以下のコマンドを入力します。
Linuxコード
sudo apt update
sudo apt upgrade
sudo apt full-upgrade
通常は必要ありませんが,Aptコマンドを長らく利用していない場合には念のため再起動します。
但し,SSHで接続している場合は,一旦接続が切れ再接続する必要があるので注意してください。
Linuxコード
sudo reboot
また,Ubuntu22.04にアップデートする場合,RSA/SHA1 暗号方式の鍵 (ssh-rsa)
が無効になります。ssh-rsa鍵でSSHログインされている場合は,ログインが使えなくなります。
あらかじめ,「/etc/ssh/sshd_config」ファイル内のパスワード利用設定を許可しておくことをお勧めします。パスワードログインが出来る事も確認しておくといいでしょう。
/etc/ssh/sshd_configの修正
PasswordAuthentication yes
または,SSHを使わずにレンタルサーバのコンソールでアップデートするという方法もあります。こちらの方が安全ですね。
3.Ubuntuアップグレードコマンドの実行
Ubuntuにログインすると,アップグレード可能な場合には最終メッセージに以下のようなメーッセージが出現します。
例えば,「Ubuntu20.04」では以下のようなメッセージです。
【メッセージ例】
New release '22.04.5 LTS' available.
Run 'do-release-upgrade' to upgrade to it.
ここで「do-release-upgrade」コマンドを入力します。
Linuxコード
sudo do-release-upgrade
このコマンドを入力するとシステムが自動的に新しいリリースパッケージをダウンロードしてアップグレードを開始します。
【注意点】
① update-manager-coreのインストール
既にインストールされていると思いますが,do-release-upgradeを使うためにはupdate-manager-coreが必要です。インストールされていない場合には以下のコマンドを実行します。
Linuxコード
sudo apt install update-manager-core
② LTS版等の指定
通常LTS版のアップロードはLTS版になります。「/etc/update-manager/release-upgrades」の中の記述が「Prompt=lts」になっていると思います。
LTS版以外のアップグレードの場合には「/etc/update-manager/release-upgrades」の中の記述を「Prompt=normal」にしてください。
処理の途中で設定ファイルの上書き「通常は既存設定を利用」や,不要パッケージの削除の指示を聞かれますが,推奨オプションを選択してください。
③もう一つのアップデート方法
バージョンアップの方法には,GUIによる方法もあります。これは「GUIデスクトップアプリ」をインストールする必要があります。
画面操作になりますので,「設定」メニューから「ソフトウェアとアップデート」を開き,「アップデート」タブで、「新しいUbuntuバージョンの通知」を「LTSリリース」にしてください。
それで,アップグレード通知が降ってくれば対応します。対応が楽ですのでやってみたい方はトライして下さい。
ただ,レンタルサーバなどでは,GUIデスクトップはまずインストールしないので,コマンドの方がいいかと思います。
4.Ubuntuバージョンアップによるエラー対応
Ubuntuをバージョンアップするといろんなエラーが発生します。今回の実証では,WebサーバアプリであるApache2の起動が出来なくなりました。以下がその時の解消方法になります。
① /usr/lib/apache2/modules/libphp7.4.so: cannot open shared object file: No
such file or directoryというエラーが出力(Ubuntu22.02バージョンアップ時発生)
「php -v」コマンドでPHPバージョンを確かめると,現在インストールしてあるPHPアプリはPHP
8.1.2だったので,次のコマンドを入力しました。
Linuxコード
sudo a2dismod php7.4
sudo a2enmod php8.1
sudo systemctl restart apache2
これによりライブラリエラーは解消しました。
②apache2: Syntax error on line 80 of /etc/apache2/apache2.conf:
DefaultRuntimeDir must be a valid directory, absolute or relative to
ServerRootというエラーが出力(Ubuntu22.02バージョンアップ時発生)
Apache2.confの設定ファイルにSyntaxエラーが発生しました。調査したところ,「DefaultRuntimeDir」という記述が理解できないようです。
この記述が定義されているファイルを確かめ,次のコマンドで認識させました。(apache2ctl
のデフォルト環境変数ファイルを指定)
Linuxコード
source /etc/apache2/envvars
③[ssl:warn] [pid 1789205:tid 1789205] AH02532: SSLProtocol: Protocol ‘all’
overrides already set parameter(s). Check if a +/- prefix is
missing.という警告が出力(Ubuntu22.02バージョンアップ時発生)
この「warning」エラーは,Apache/2.4.65バージョンで発生するようです。実はApache2にエラーが発生し起動できないところで,慌ててApache2の最新バージョンへのアップデートをやってしまいました。
そのため,Apache/2.4.65バージョンの潜在的エラーが出現したようです。設定ファイルの記述間違いですので以下のように記述します。
「/etc/apache2/mods-enabled/ssl.conf」の中の「SSLProtocol all all
-SSLv2 -SSLv3 -TLSv1 -TLSv1.1」表示において,「all」をひとつ削除します。
④RSA/SHA1 暗号方式鍵 (ssh-rsa)の無効対応
第2項でも記述しましたが,Ubuntu22.04ではRSA/SHA1 暗号方式の鍵 (ssh-rsa)
が無効になります。(RSA/SHA2を今後利用)
そのたの,ssh-rsa鍵でSSHログインされている場合は,ログインが使えなくなりますので。注意が必要です。あらかじめパスワードでもLoginできるようにするなどの対策が必要です。
RSA鍵を使っている場合は,必ず新しい暗号方式で鍵を構成し直してください。
⑤apt-keyが非推奨になる対応
今回の実証条件では「sudo apt update」コマンド実行時でも警告メッセージが発生しませんでした。どうやらアプリ側が徐々に新しい格納方式に切り替えているようです。
そのため,「apt-key list」と打つと徐々にファイル数が減っているようでした。Ubuntu24.04に移行した段階で,時期をみて新しい鍵格納方式に切り替えることにしました。
最終的に切り替える時点で,切り替え方法について追補いたします。
5.Ubuntuバージョンの確認と不要パケージ削除
Ubuntuバージョンの確認は以下のコマンドを実行します。
Linuxコード
lsb_release -a
不要パッケージは,以下のコマンドを実行します。
Linuxコード
sudo apt autoremove
以上で,Ubuntu20.04からUbuntu22.04にバージョンアップ出来ました。この繰り返しを再度行って,Ubuntu22.04からUbuntu24.04へのバージョンアップを行います。
6.まとめ
今回は,Ubuntuのバージョンアップを実証しました。UbuntuはOSのため,ファイヤーウォールUFWの設定やSSHの暗号化設定も司っており,バージョンアップ後はセキュリティの設定を確認してください。
最悪,上手くいかなかったときは,あらかじめ取得したバックアップを使って回復する必要が生じます。
日頃から,Apache2やWordPressあるいはユーザソフトなどのバックアップを取得している場合には,レンタルサーバのOSイメージを使って最初からインストールし直すことも可能です。
しかし,レンタルサーバでOSイメージを使ってインストールし直した場合,OS下にある全てのソフトが消滅し最初から再構築となる場合があります。
サーバ事業者に相談するなど十分ご注意ください。
それでは,楽しいITリテラシーライフをお過ごしください。
(ご注意)情報の正確性を期していますが,実施される場合には自己責任でお願いします。
0 件のコメント:
コメントを投稿