Ubuntu16.04のApache2でHTTP/2する

Pocket

あると思ったらなかったHTTP/2対応(?)

$ sudo a2enmod http2
ERROR: Module http2 does not exist!
$ ls /etc/apache2/mods-available/http2.load
ls: cannot access '/etc/apache2/mods-available/http2.load': No such file or directory

マジかよ。

 

ぐぐってきたら、mod_http2.soが無いらしいので自前でapache2ビルドしてやれ、という情報が。やってやるぜ!

 

参考サイト:

How To Set Up Apache with HTTP/2 Support on Ubuntu 16.04 – WebSetNet

Bug #1543572 “mod_http2 is not available under apache 2.4.18 / U…”:Bugs:apache2 package:Ubuntu

流れは、

1. ソースを拾えるようにリポジトリリストをいじる
2. ビルドに必要なパッケージをインストール
3. ビルドする
4. mod_http2.soをコピー
5. mods-availableに配置するべきloadファイルを作成する

参考サイトでは最初にlibnghttp2-devをインストールさせてるけど、ぶっちゃけようわからん(まがお)一応入れました

 

さて作業。

$ sudo apt-get install libnghttp2-dev
$ tail -n3 /etc/apt/sources.list
deb-src http://archive.ubuntu.com/ubuntu xenial main universe restricted multiverse
deb-src http://security.ubuntu.com/ubuntu xenial-security main universe restricted multiverse
deb-src http://archive.ubuntu.com/ubuntu xenial-updates main universe restricted multiverse
$ sudo apt-get update
$ cd ~
$ mkdir apache2 
$ cd apache2
$ apt-get source apache2
$ sudo apt-get build-dep apache2
$ cd apache2-2.4.18
$ fakeroot debian/rules binary

以上でビルドが完了するはず。あとはコピーして有効化してなんたらかんたら

$ sudo cp ~/apache2/apache2-2.4.18/debian/apache2-bin/usr/lib/apache2/modules/mod_http2.so /usr/lib/apache2/modules/
$ cat /etc/apache2/mods-available/http2.load
LoadModule http2_module /usr/lib/apache2/modules/mod_http2.so

<ifModule http2_module>
LogLevel http2:info
</ifModule>
$ sudo a2enmod http2
$ cat /etc/apache2/sites-enabled/default-ssl.conf
<ifModule mod_ssl.c>
<VirtualHost _default_:443>
〜略〜
Protocols h2 http/1.1
〜略〜
$ sudo service apache2 restart

あとはDeveloper Toolsでプロトコル調べるとかなんとかして動作チェックしよう。

お茶漬け

たまーに飲み屋で食べるお茶漬けめちゃウマい

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です