私のメモです。参考になればいいですが、間違っていたらごめんなさい。14.04LTSから16.04LTSへのアップグレードのメモです。@2018.08.14
--------------------------------------------------------DN2820FYKHにインストールしていたUbuntu Linux14.04LTSを16.04LTSへアップグレードすることにしました。理由は、https接続に対応するのためにLet's encryptを使うには16.04LTSの方がletsencryptコマンドを使うことができて楽そうだからです。ただ、結果的にはセキュリティの関係で18.04LTSにアップグレードすることになります。
万が一に備えて、無くしては困るファイルはバックアップを取ります。僕の場合、設定がある/etc以下、ウェブページがある/var/www以下を丸ごとコピーしました。
14.04LTSから16.04LTSへのアップグレードは、後述のようにdo-release-upgradeコマンド一発なのですが、ja_JP.UTP-8がLANGに設定されていると、do-release-upgradeでのメッセージが全て文字化けして読めません。そこで、LANGコマンドで文字コードを「C」に設定しておきます。
# LANG=C
準備が出来たら、まずは現在の14.04をできるだけアップグレードしておきます。
アップグレードするパッケージがなくなったら、do-release-upgradeコマンドでいよいよ16.04LTSへアップグレードを実行します。
aptのサイトをチェック後、削除されるパッケージの個数、新しくインストールされるパッケージの個数、アップグレードされるパッケージの個数が表示され、続行するかを尋ねられます。ここで「y]を入力するとパッケージのダウンロードが始まり、16.04LTSへアップグレードが開始されます。
パッケージのダウンロードが終わると、大量のChange Logがレポートされます。Logを読み終えた後、実際にインストールが始まります。参考までに、僕のサーバでは、インストールを終えて再起動するまでに次のことを尋ねられました。
再起動後、分近く画面に何も表示されず、CUIにするためにCtrl+Alt+F1を押したところ、ログインプロンプトが表示され、ログイン後に無事にアップグレードできたことが確認できました。
Ubunt16.04のSSH接続は、古い暗号、弱い暗号の接続を認めなくなっています。僕の環境では、PuTTYで作成したKeyがssh-dssと古く、Windowsからの接続を拒否されるようになりました。
鍵を新しくすれば良いだけですので、PuTTYの最新版(2018/08/14で0.7)をダウンロード&アップデートし、puttygen.exeを起動してKeyを生成しなおしました。生成方法は以前と同じですが、ECDSAなど新しい暗号形式が選択肢に加わっています。僕はKey Typeに「ECDSA」を「Curve to use for generating this key」に「nistp521」を選択しました(下の左図)。その後、「Generate」ボタンを押すとKeyの生成を開始しますが、Keyの生成にマウスの動きを使うため、ボタンを押した後はボタンの上の進捗バー下辺りでマウスを動かします。
鍵の生成を終えたら、次のことを行います。
最後にsshdデーモンを再起動します。
# /etc/ini.d/ssh restart
ちょっと手が掛かったSSHの鍵の生成のほかに、僕の環境では次の修正をしました。
インストール時にメンテナのファイルに置き換えた際、「自動再起動」が無効になりました。コメントアウトされた「// Unattended-Upgrade::Automatic-Reboot "false";」を「Unattended-Upgrade::Automatic-Reboot "true";」にし、aptでアップデートした際に必要であれば自動で再起動するように修正しました。
ライブラリ関係もアップデートされたようなので、もう一度バイナリを生成しなおしました(confなどの設定ファイルはそのまま)。以前と同じバイナリを生成しないよう、./configureとmakeの間にmake cleanを入れて、バイナリを再作成するようにします。
|
|
|
https接続の需要が増してきたのもあり、僕のサーバでも導入することにしました。無料のサービスを探すと行きつくのがLet’s encryptで、Ubuntu16.04への導入事例もWeb上で豊富に見つかります。今回はHRENDOHさんのブログを参考にやってみました。僕の環境では、iptablesでポート443番を開けてからLet’s encryptの導入し、apacheの設定ファイルを修正しました。。
ウェブサーバを立てていると、既にport80番をiptablesでACCEPTにしているはずです。それに倣い、443番もACCEPTにしました。具体的には/etc/network/interfaceに記載されているiptablesのルールに、次の2行を追加しました。
上のように設定を終えたら、「/etc/init.d/networking restart」でネットワークを再起動します。また、僕のサーバのように、ブロードバンドルータを介してインターネットにつながっている場合、ブロードバンドルータのポートフォワードの設定で、「tcp 443」をサーバのIPアドレスに転送するよう設定する必要があります。
HRENDOHさんのブログの通り、以下のコマンドを実行するとインストールされます。
以下の「letsencrypt --apache」コマンドが正しく動くためには、apacheの設定ファイルにドメイン名を入力しておく必要があります。/etc/apache2/sites-available/000-default.confファイルに次のようにドメイン名を追記します。
追記したら、apacheを再起動します。
以下のコマンドでapacheに証明書をインストールするようにします。
すると、以下のように先ほど設定したドメイン名が選択された状態でダイアログが表示されます。「了解」を押して、処理を続けます。

ドメイン名を入力するダイアログが現れますので、ドメイン名を入力して「了解」を押します。

今度はメールアドレスを入力するダイアログが現れますので、メールアドレスを入力して「了解」を押します。

マニュアルのURLが現れますので、「Agree」を押します。

HRENDOHさんのブログではApacheのセットアップ方法を尋ねられたようですが、僕の環境ではスキップされ、以下の重要なお知らせが表示されました。

一見、ちゃんと設定できたように思いますが、実は重要なお知らせの上に「Client does not support any combination of challenges that will satisfy the CA」とうエラーが出ており、正しく設定されません。
この原因は、2018年1月ごろのセキュリティ対策のためのようです。Ubuntu16.04LTSでは、新しいcertbotコマンドはパッケージに入っていないため、PPAとしてインストールすることになります。
折角ここまで設定したのですが、PPAを使うほどのヘビーユーザーではなく、次のアップグレード時にトラブルの元になりそうなので、思い切って16.04LTSを18.04LTSにアップグレードすることにしました。