前書き

Ubuntuには、標準と長期サポート(または「LTS」)の2種類のリリースがあります。 標準アップデートは6か月ごとにリリースされ、Ubuntuから少なくとも9か月間セキュリティアップデートを受け取ります。LTSのアップデートは2年ごとにリリースされ、少なくとも5年間サポートされます。

現在Ubuntu 12.04を使用している場合、少なくとも2017年10月までセキュリティアップデートが提供されます。 そのサポート期間を延長し、新しい機能や更新プログラムにアクセスしたい場合は、サーバーを最新のLTSリリースにアップグレードできます。 このガイドでは、既存の構成を維持するように注意しながら、Ubuntu 12.04サーバーを14.04に安全にアップグレードする方法について説明します。

ステップ1-既存のデータのバックアップ

12.04サーバーを使用して機密性の高いタスクやデータを処理している可能性が高いため、サーバー構成とファイルの現在の状態をバックアップすることが非常に重要です。 これから説明するプロセスは、リリースアップグレードを実行するための推奨方法ですが、リリースアップグレードがソフトウェアまたは構成に問題を引き起こさないことを保証する方法はありません。 事前にデータをバックアップしておくと、アップグレードの結果として問題が発生した場合の復旧がはるかに簡単になります。

この手順では、複数のバックアップ方法について説明します。 DigitalOceanを使用している場合、ファイルをローカルコンピューターに同期することに加えて、コントロールパネルからスナップショットを作成することをお勧めします。 この方法では、復元が必要なシナリオの性質に応じて、個々のファイルを復元するか、スナップショット全体を復元することができます。

ファイルをローカルコンピューターに同期する

Ubuntuサーバー上のファイルをバックアップするには、いくつかの効果的な方法があります。 この例では、 `+ rsync`を使用して、サーバーのファイルをローカルコンピューターのバックアップフォルダーにコピーします。 ファイルシステムのすべてのフォルダをバックアップすることはできません。それらのいくつかはプロセスを実行するための一時的なストレージです。 幸いなことに、これらのフォルダーをバックアップから除外できます。

次のコマンドを使用して、サーバーのファイルシステムをコピーし、でマークされているサーバーの資格情報を変更するように注意できます。 サーバーでSSHキーベースの認証を使用する場合、rootユーザーにはデフォルトでパスワードが設定されないため、 `+ rsync `にプライベートキーファイルを指定する必要があります。 このファイルは通常、 ` / home //。ssh / id_rsa +`にあります。 サーバーファイルをローカルでダウンロードするため、コマンドは、バックアップするサーバーではなく、ローカルコンピューターから実行する必要があります。

sudo rsync -aAXv --exclude={"/dev/*","/proc/*","/sys/*","/tmp/*","/run/*","/mnt/*","/media/*","/lost+found"} -e 'ssh -i ' [email protected]:/*

`+ aAX `フラグは、パーミッション、所有権、変更時間などの重要なファイル属性を保持するように ` rsync `に指示します。 Dockerまたは別の仮想化ツールを使用している場合、 ` rsync `が仮想ストレージなどのスパースファイルを適切に処理するように、 ` S +`フラグを追加する必要があります。

注意: `+ rsync +`は、LinuxやOS XなどのUnixベースのオペレーティングシステムでのみ使用できます。 ローカルコンピューターでWindowsを実行している場合は、FilezillaなどのSFTPクライアントを使用してサーバーのファイルをコピーできます:https://www.digitalocean.com/community/tutorials/how-to-use-filezilla-to-transfer-and-manage -files-securely-on-your-vps [Filezillaを使用してVPSでファイルを安全に転送および管理する方法]

後でサーバーファイルの一部を復元する必要がある場合は、次のように、ソースと宛先のパラメーターを逆にして、 `+ rsync `を再度使用できます。 ` sudo rsync -aAXv -e ‘ssh -i’ root @:/ * + `

DigitalOcean Dropletスナップショットを作成する

DigitalOceanを使用している場合、問題が発生した場合に簡単に復元できるドロップレットのスナップショットを作成できます。 2016年10月から、スナップショットの費用は、ファイルシステム内の使用済みスペースの量に基づいて、ギガバイトあたり月額0.05ドルです。 このオプションを使用できる場合は、冗長性を確保するために、どちらか一方の方法を選択するのではなく、両方のバックアップ方法を使用することをお勧めします。 アップグレードが問題なく完了したことを確認したら、スナップショットを削除できます。

まず、サーバーの電源をオフにして、スナップショットの現在の状態が保持されるようにします。 実行中のシステムのスナップショットを作成することは可能ですが、ディスク上でデータの一貫性を確保するために、電源を切ることをお勧めします。

sudo poweroff

次に、DigitalOceanコントロールパネルにログインし、アップグレードするドロップレットを選択します。 * Snapshots パネルに移動し、新しいスナップショットの名前を入力して、 Take Snapshot *を選択します。

image:https://assets.digitalocean.com/articles/upgrade_1204_to_1404/snapshot_take_snapshot.png [スナップショットを撮る]

スナップショットプロセスが完了すると、サーバーは自動的に再起動されるため、SSH経由で再接続してアップグレードを続行できます。

後でこのスナップショットにサーバーを復元する必要がある場合は、ドロップレットのコントロールパネルの[破棄]セクションでそのイメージから再構築できます。

ステップ2-アップグレードの準備

リリースアップグレードを開始する前に、既にインストールされているソフトウェアが最新であることを確認する必要があります。 インストールされたソフトウェアを更新することで、リリースアップグレードが多くのパッケージの飛躍を減らし、エラーの可能性が減少します。

`+ apt +`を使用してローカルパッケージインデックスを更新し、現在インストールされているソフトウェアをアップグレードします。

sudo apt-get update
sudo apt-get upgrade

リリースのアップグレードを管理するには、「+ update-manager-core 」を使用します。 このパッケージは、ほとんどのUbuntu 12.04インストールでデフォルトでインストールされますが、 ` apt-cache +`を使用してサーバーにインストールされているかどうかを確認できます。

apt-cache policy update-manager-core

コマンドがインストールされているバージョン番号を返さない場合(つまり、 + Installed:(none)+)と表示されている場合は、 `+ apt`を使用してUbuntuソフトウェアリポジトリから更新マネージャーをダウンロードします。

sudo apt-get install update-manager-core

更新マネージャーがインストールされたことを確認したら、アップグレードプロセスを開始する準備ができました。

ステップ3-14.04へのアップグレード

ルート権限で `+ do-release-upgrade`コマンドを実行できるようになりました。 これは、Ubuntuのリポジトリから最新のリリースソフトウェアを取得し、サーバーにさまざまなアップグレードを適用する自動化されたスクリプトです。 このアップグレードには数分かかる場合があり、時々プロンプトが表示されるため、アップグレードの進行中はSSHセッションに注意してください。

sudo do-release-upgrade

更新マネージャーは、次のLTSリリースへの移行に関連する詳細のほとんどを処理しますが、プロンプトが表示されたらいくつかの決定を行う必要があります。 これらのプロンプトのほとんどは、既存の構成ファイルの上書きについて尋ねます。 デフォルトのアクションは、すでに存在する構成を保持することです。これは一般に、安定性を確保するための最良のオプションです。 ただし、オプションを選択する前に各プロンプトを注意深く読んでください。また、問題のパッケージを検索して適切な選択をすることを恐れないでください。

アップグレードプロセスの終わり近くに、サーバーを再起動するように求められます。 「y」で確認して、再起動を開始します。

SSHセッションは切断されるため、アップグレードが期待どおりに行われたことを確認するために再接続する必要があります。 再接続したら、 `+ lsb_release +`を使用して、新しいUbuntuバージョン番号を確認します。

lsb_release -a

次のような出力が表示されます。

No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 14.04.1 LTS
Release:    14.04
Codename:   trusty

`+ Release:+`が14.04と表示されていれば、Ubuntu LTSサーバーは正常にアップグレードされています!

ステップ4-カーネルのアップグレード

更新されたリリースに合わせて新しいカーネルをダウンロードしたとしても、サーバーのホストに使用されるソフトウェアで使用するためにカーネルがアクティブ化されない場合があります。 DigitalOceanを使用している場合、ホスティングソフトウェア(KVMと呼ばれます)は、サーバーイメージの外部でカーネルを維持するため、個別に更新する必要があります。

サーバーが現在使用しているカーネルのバージョンは、 `+ uname +`で確認できます。

uname -ri

出力は次のようになります。

3.2.0-24-virtual i686

カーネルバージョンが3.13より低い場合、サーバーはまだUbuntu 14.04のカーネルを使用していないことを意味します。 古いカーネルでソフトウェアの問題が発生することはほとんどありませんが、新しいカーネルではパフォーマンスの向上や役立つ新機能が見られる場合があります。

アップグレードプロセス中に、サーバーはUbuntu 14.04で使用するためにロードされる新しいカーネルをダウンロードしました。 `+ / lib / modules +`ディレクトリの内容を確認することで、ダウンロードされたカーネルバージョンを確認できます。

ls /lib/modules

次のようなリストが表示されます。

3.13.0-39-generic  3.2.0-24-virtual

新しくインストールしたカーネルを使用するには、ドロップレットのコントロールパネルでカーネルの選択を更新してから、ドロップレットの電源を切って起動する必要があります。

最初に、DigitalOceanコントロールパネルにログインし、アップグレードするサーバーを選択します。 *設定*パネルで、*カーネル*タブを選択します。

ここでは、利用可能なカーネルのドロップダウンリストが表示されます。 ダウンロードしたもののディストリビューション、リリース、バージョン番号に一致するカーネルを選択します(上記の例では + 3.13.0-39-generic +):

image:https://assets.digitalocean.com/articles/upgrade_1204_to_1404/change_kernel.png [カーネルの変更]

カーネルを選択したら、[変更]をクリックして、そのカーネルをサーバーにロードします。 新しいカーネルの使用を開始するには、サーバーの電源を切る必要があります。 これはコントロールパネルで行うことができますが、これはコンピューターの電源プラグを抜くのと似ているため、代わりに端末から電源を切ることをお勧めします。

sudo poweroff

サーバーが完全にシャットダウンしたら、コントロールパネルで再起動できます。 * Power パネルで、 Boot *を選択します。

image:https://assets.digitalocean.com/articles/upgrade_1204_to_1404/change_kernel_boot.png [パワーサイクル]

これで、SSH経由でサーバーに再接続し、「+ uname +」を使用して新しいカーネルが使用されていることを確認できます。

uname -ri

次のような出力が表示されます。

3.13.0-39-generic i686

カーネルバージョンがコントロールパネルにロードしたカーネルと一致する場合、カーネルは正常に更新されています。

結論

これで、Ubuntuサーバーが最新のLTSリリースにアップグレードされ、少なくとも2019年まで最新のソフトウェア更新プログラムとセキュリティ更新プログラムにアクセスできるようになりました。 アップグレード後にプログラムとの互換性の問題が発生した場合は、そのプログラムのドキュメントをチェックして、構成の変更を必要とする重要な変更があったかどうかを確認してください。