ApacheがHTTP/2へ

定番ウェブサーバApacheがバージョン2.4.17でHTTP/2への対応を果たしました。
すったもんだもあったHTTP/2は結局のところGoogleのSPDY/4が化けたようです。
今年初めにServersMan@VPSを再設定した際、
どうせもうすぐHTTP/2が始まるし、ということでSPDYへの対応をしなかったのですが、
これでようやくHTTP/2に対応できます。
で、動かしているUbuntu 14.04で早速バージョンアップ、
といいたいところですが、OpenSSLのバージョンもあげなきゃなりませんし、

# apt-get install apt-show-versions
# apt-show-versions | grep apache

して確認してもapt-getでアップグレードできるバージョンはずいぶん古く、
ソースからインストールする必要がありそうです。
ちょーめんどー。

ところでUbuntuにはPPA(Paersonal Package Archive)という、
誰かが勝手に公開しているパッケージをインストールすることができます。
これならソースをビルドする必要はありません。
で、探してみるとondrejさんが作ってくれていました。
14.04(Trusty)用もあります。感謝感謝。

ということでインストール、というかアップグレードです。
が、その前にadd-apt-repositoryがない…orz
ということでこれからインストールです。
パッケージ名が分からなかったので、

# apt-get install apt-file
# apt-file update
# apt-file search add-apt-repository

で探したところ”software-properties-common”のようなので

# apt-get install software-properties-common

でインストールしました。次いで

# add-apt-repository ppa:ondrej/apache2
# apt-get update

で準備完了です。

# apt-show-versions | grep apache

の結果を見ると、希望どおり2.4.17に上げられそうです。

これでやっとアップグレードできます。

# apt-get install openssl
# apt-get install apache2

を実行すると、途中”/etc/apache2/mods-available/ssl.conf”の上書きについて警告されますが、
別シェルでログインし、元のファイルをコピーして保存した上で、
[Y or I : install the package maintainer’s version]を選択し、後で調整です。
まあ実際には差は大したことなかったので、
今回提供されたものをそのまま使っています。
完了後には一応、

# apt-cache policy apache2
# apt-cache policy openssl

でインストールされているパッケージのバージョンを確認しておきます。
実体のバージョンは

# openssl version
# apache2 -v

で確認できます。

このままではまだHTTP/2は有効になっていないので

# a2enmod ssl http2

を実行し、”/etc/apache2/sites-enabled/”ディレクトリにある
SSLサイトの各設定ファイルのServerNameディレクティブの直後辺りに

Protocols h2 http/1.1

を追加し、

# /etc/init.d/apache2 restart

を実行して有効化します。
ちなみにSSLじゃないサイトについては”h2″ではなく”h2c”を指定すればいいようです。

で、Chromeブラウザからそのサイトにアクセスして、
同時に”chrome://net-internals/#http2″をみると…
[HTTP/2 sessions]項目の表にそのサイトのURLがあります。
どうやらこれで良さそうです。