前書き
Ubuntuには、標準と長期サポート(または「LTS」)の2種類のリリースがあります。 標準アップデートは6か月ごとにリリースされ、Ubuntuから少なくとも9か月間セキュリティアップデートを受け取ります。LTSのアップデートは2年ごとにリリースされ、少なくとも5年間サポートされます。
現在Ubuntu 12.04を使用している場合、少なくとも2017年10月までセキュリティアップデートが提供されます。 そのサポート期間を延長し、新しい機能や更新プログラムにアクセスしたい場合は、サーバーを最新のLTSリリースにアップグレードできます。 このガイドでは、既存の構成を維持するように注意しながら、Ubuntu 12.04サーバーを14.04に安全にアップグレードする方法について説明します。
[。警告]##
Warning:オペレーティングシステムのメジャーリリース間のほとんどすべてのアップグレードと同様に、このプロセスには、障害、データ損失、またはソフトウェア構成の破損という固有のリスクが伴います。 包括的なバックアップと広範なテストを強くお勧めします。
これらの問題を回避するには、可能な場合、インプレースアップグレードではなく、新しいUbuntu 14.04サーバーに移行することをお勧めします。 アップグレード時にソフトウェア構成の違いを確認する必要がある場合がありますが、コアシステムの安定性は高くなります。 how to migrate to a new Linux serverに関するシリーズに従って、サーバー間で移行する方法を学ぶことができます。
[[step-one -—- backing-up-existing-data]] ==ステップ1—既存のデータのバックアップ
12.04サーバーを使用して機密性の高いタスクやデータを処理している可能性が高いため、サーバー構成とファイルの現在の状態をバックアップすることが非常に重要です。 今後のプロセスは、リリースアップグレードを実行するための推奨方法ですが、リリースアップグレードがソフトウェアまたは構成に問題を引き起こさないことを保証する方法はありません。 事前にデータをバックアップしておくと、アップグレードの結果として問題が発生した場合の復旧がはるかに簡単になります。
この手順では、複数のバックアップ方法について説明します。 DigitalOceanを使用している場合は、ファイルをローカルコンピューターに同期するだけでなく、コントロールパネルからスナップショットを作成することをお勧めします。 この方法では、復元が必要なシナリオの性質に応じて、個々のファイルを復元するか、スナップショット全体を復元することができます。
ファイルをローカルコンピューターに同期する
Ubuntuサーバー上のファイルをバックアップするには、いくつかの効果的な方法があります。 この例では、rsync
を使用して、サーバーのファイルをローカルコンピューターのバックアップフォルダーにコピーします。 ファイルシステムのすべてのフォルダをバックアップすることはできません。それらのいくつかはプロセスを実行するための一時的なストレージです。 幸いなことに、これらのフォルダーをバックアップから除外できます。
次のコマンドを使用して、redでマークされたサーバー資格情報を変更するように注意しながら、サーバーのファイルシステムをコピーできます。 サーバーでSSHキーベースの認証を使用する場合、rootユーザーにはデフォルトでパスワードが設定されていないため、rsync
が秘密キーファイルを指すようにする必要があります。 このファイルは通常、/home/username/.ssh/id_rsa
にあります。 サーバーファイルをローカルでダウンロードするため、コマンドは、バックアップするサーバーではなく、ローカルコンピューターから実行する必要があります。
sudo rsync -aAXv --exclude={"/dev/*","/proc/*","/sys/*","/tmp/*","/run/*","/mnt/*","/media/*","/lost+found"} -e 'ssh -i /path/to/private_key' root@SERVER_IP_ADDRESS:/* ~/backup/
aAX
フラグは、rsync
に、アクセス許可、所有権、変更時間などの重要なファイル属性を保持するように指示します。 Dockerまたは別の仮想化ツールを使用している場合は、S
フラグを追加して、rsync
が仮想ストレージなどのスパースファイルを適切に処理できるようにする必要があります。
Note:rsync
は、LinuxやOSXなどのUnixベースのオペレーティングシステムでのみ使用できます。 ローカルコンピューターがWindowsを実行している場合は、FilezillaなどのSFTPクライアントを使用してサーバーのファイルをコピーできます。How To Use Filezilla to Transfer and Manage Files Securely on your VPS
後でサーバーファイルの一部を復元する必要がある場合は、次のように、ソースパラメータと宛先パラメータを逆にしてrsync
を再度使用できます。sudo rsync -aAXv -e 'ssh -i /path/to/private_key' ~/backup/ root@SERVER_IP_ADDRESS:/*
DigitalOcean Dropletスナップショットを作成する
DigitalOceanを使用している場合、問題が発生した場合に簡単に復元できるドロップレットのスナップショットを作成できます。 2016年10月から、スナップショットの費用は、ファイルシステム内の使用済みスペースの量に基づいて、ギガバイトあたり月額0.05ドルです。 このオプションを使用できる場合は、冗長性を確保するために、どちらか一方の方法を選択するのではなく、両方のバックアップ方法を使用することをお勧めします。 アップグレードが問題なく完了したことを確認したら、スナップショットを削除できます。
まず、サーバーの電源をオフにして、スナップショットの現在の状態が保持されるようにします。 実行中のシステムのスナップショットを作成することは可能ですが、データがディスク上で一貫していることを確認するには、電源を切ることをお勧めします。
sudo poweroff
次に、DigitalOceanコントロールパネルにログインし、アップグレードするドロップレットを選択します。 Snapshotsパネルに移動し、新しいスナップショットの名前を入力して、Take Snapshotを選択します。
スナップショットプロセスが完了すると、サーバーが自動的に再起動されるため、SSH経由で再接続してアップグレードを続行できます。
後でサーバーをこのスナップショットに復元する必要がある場合は、DropletのコントロールパネルのDestroyセクションでそのイメージから再構築できます。
[[ステップ2 -—-アップグレードの準備]] ==ステップ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
更新マネージャーがインストールされたことを確認したら、アップグレードプロセスを開始する準備ができました。
[[step-three -—- upgrading-to-14-04]] ==ステップ3—14.04へのアップグレード
これで、root権限で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を示している場合は、UbuntuLTSサーバーが正常にアップグレードされています。
[[step-four -—- upgrading-the-kernel]] ==ステップ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コントロールパネルにログインし、アップグレードするサーバーを選択します。 Settingsパネルで、Kernelタブを選択します。
ここでは、利用可能なカーネルのドロップダウンリストが表示されます。 ダウンロードしたカーネルのディストリビューション、リリース、およびバージョン番号に一致するカーネルを選択します(上記の例では3.13.0-39-generic
)。
カーネルを選択したら、Changeをクリックして、そのカーネルをサーバーにロードします。 新しいカーネルの使用を開始するには、サーバーの電源を切る必要があります。 これはコントロールパネルで行うことができますが、これはコンピューターの電源プラグを抜くのと似ているため、代わりに端末から電源を切ることをお勧めします。
sudo poweroff
サーバーが完全にシャットダウンしたら、コントロールパネルで起動し直すことができます。 Powerパネルで、Bootを選択します。
これで、SSH経由でサーバーに再接続し、uname
を使用して、新しいカーネルが使用されていることを確認できます。
uname -ri
次のような出力が表示されます。
3.13.0-39-generic i686
カーネルバージョンがコントロールパネルにロードしたカーネルと一致する場合、カーネルは正常に更新されています。
結論
これで、Ubuntuサーバーが最新のLTSリリースにアップグレードされ、少なくとも2019年まで最新のソフトウェア更新プログラムとセキュリティ更新プログラムにアクセスできるようになりました。 アップグレード後にプログラムとの互換性の問題が発生した場合は、そのプログラムのドキュメントをチェックして、構成の変更を必要とする重要な変更があったかどうかを確認してください。