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で通信出来ていることになります。
個人支援・寄付について
サイトラボでは個人支援・寄付を受けております。ご協力いただける方はお願いいたします。当サイトではビットコインで受け付けております。
- ビットコイン:3LHnADwZwUbic2L45EnVJEykiG6KfbqrwS