CentOS6にhttp2の設定をしてみる

現在http1.1がデフォルトの設定になっていますが、今後はhttp2が主流になる可能性があります。そこで今回はhttp2の構築をApacheでやってみたいと思います。

http2って何?

色々なサイトの方が書いてくれているのでそちらを見て頂いたほうが早いです。

結構色々なサイトでhttp2の紹介がされています。一言で表すなら「時代が変わってミドルウェアも変わった」という感じです。

時代が変わった?

http1.1から16年ぶりの変更らしいです。http1.1の時代はテキストデータを扱うことをメインに考えられていたみたいです。ただ今は画像ファイルやCSS、JSなどの動きのあるサイトや処理が多くなってきています。今の動きに合わせた形になったとおもいます。

CentOS6でも使えるの?

http2はApache(ミドルウェア)の問題なので、CentOSなどのOSには基本的に依存しないので技術的に使う事は可能です。実際Apache2.4をCentOS6でも動かしているサイトはいくつもあります。

CentOS6にインストールは簡単?

簡単ではないかもしれません。CentOS6の標準だとApacheは2.2系になります。標準リポジトリを使わないで作業することになります。

ソースからインストール?

http2とApache2.4系でのインストールだとソースからインストールするというのが紹介されています。僕はソースからインストールができないのでyumからインストールしています。なので今回紹介する方法もyumになります。というわけでIUSのリポジトリをインストールします

yum -y install https://centos6.iuscommunity.org/ius-release.rpm

IUSのリポジトリをデフォルトからはずす

基本的なパッケージのアップデートやインストール時は、対象にならないようにデフォルトから外しておきます。

vi /etc/yum.repos.d/ius.repo
[ius]
name=IUS Community Packages for Enterprise Linux 7 - $basearch
#baseurl=https://dl.iuscommunity.org/pub/ius/stable/CentOS/7/$basearch
mirrorlist=https://mirrors.iuscommunity.org/mirrorlist?repo=ius-centos7&arch=$basearch&protocol=http
failovermethod=priority
enabled=0 #enabled=1から変更
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/IUS-COMMUNITY-GPG-KEY

デフォルトから外れました

Nghttp2のインストール

http2を使うにはnghttp2が必要になります。これのインストールが必要ですがデフォルトパッケージにはないのでepelリポジトリを追加します

yum -y install epel-release

インストール後の/etc/yum.repos.d/epel.repoにあるenabled=1を書き換えておいてください。

vi /etc/yum.repos.d/epel.repo

...
enabled=0
...

nghttp2のインストールをします

yum --enablerepo=epel install nghttp2

/etc/mime.typesのインストール

もうひとつ、事前にインストールが必要になるパッケージがあります。/etc/mime.typesパッケージです。/etc/mime.typesパッケージはmailcapパッケージの中に含まれています。baseリポジトリからインストールできます。

yum -y install mailcap

Apacheのインストール

最新のApache(2.4.25)インストールします。

yum --disablerepo=base,extras,updates --enablerepo=ius install httpd

これでインストール完了です

SSLのインストール

yum -y install openldap-devel expat-devel

yum --disablerepo=base,extras,updates --enablerepo=ius -y install httpd-devel mod_ssl

SSLのインストール完了です

http2の設定

必要なミドルウェアのインストールをしたので、今度は設定を確認していきます。

モジュールの確認

http2を動かすのに必要なモジュールがインストールされている確認します。

cat /etc/httpd/conf.d/

LoadModule http2_module modules/mod_http2.so

ちゃんとロードされています。これがないとhttp2は使えないので確認してください。IUSリポジトリからインストールしている場合は問題無く入っていると思います。

SSLのconfファイルに設定

http2ではSSLが必須になるので、confファイルに書き込んでいきます

vi /etc/httpd/conf.d/00photoshoplab.conf

#SSL
<VirtualHost *:443>
Protocols h2 http/1.1
 </VirtualHost>

再起動します

/etc/init.d/httpd restart

これで完了です。実際にhttp2になっているか確認します。

確認

確認方法はfirefoxの開発ツールで、ネットワークタブをクリックしてバージョン:HTTP/2.0となっているのを確認したらhttp2で通信出来ていることになります。