Apache 2.4.17のmod_http2試す

mod_h2が Apache2.4.17でデフォルトで組み込まれたのでビルドして試してみる。


今回はopenssl1.0.2を使いたいのでubuntu15.10を使います。
以前のubuntuだとうまくいかないかもしれない

nghttp2のインストール

nghttp2をインストールしておく必要があります
https://github.com/tatsuhiro-t/nghttp2#requirements

sudo apt-get install make binutils autoconf  automake autotools-dev libtool pkg-config \
  zlib1g-dev libcunit1-dev libssl-dev libxml2-dev libev-dev libevent-dev libjansson-dev \
  libjemalloc-dev cython python3.4-dev python-setuptools

git clone https://github.com/tatsuhiro-t/nghttp2.git
cd ./nghttp2

autoreconf -i
automake
autoconf
./configure
make

sudo make install
sudo ldconfig



apache2.4.17のビルド

ソースからビルド。
configure時に --enable-http2

sudo apt-get install git gcc g++ libpcre3-dev libcunit1-dev libev-dev libjansson-dev \
  libjemalloc-dev cython make binutils autoconf automake autotools-dev libtool pkg-config \
  zlib1g-dev libssl-dev libxml2-dev libevent-dev python3.4-dev libevent-openssl-2.0-5

wget http://ftp.jaist.ac.jp/pub/apache//httpd/httpd-2.4.17.tar.gz
tar zxvf ./httpd-2.4.17.tar.gz

wget http://ftp.yz.yamagata-u.ac.jp/pub/network/apache//apr/apr-1.5.2.tar.gz
tar zxvf ./apr-util-1.5.4.tar.gz
mv ./apr-1.5.2 ./httpd-2.4.17/srclib/apr

wget http://ftp.yz.yamagata-u.ac.jp/pub/network/apache//apr/apr-util-1.5.4.tar.gz
ar zxvf ./apr-util-1.5.4.tar.gz 
mv ./apr-util-1.5.4 ./httpd-2.4.17/srclib/apr-util

cd ./httpd-2.4.17/
./configure --enable-http2
make
sudo make install

設定

http2の設定としては、Protocolsにh2を指定する。
その他https用の設定を入れているだけです。


/usr/local/apache2/conf/httpd.conf

LoadModule ssl_module modules/mod_ssl.so     #コメントアウト解除
LoadModule http2_module modules/mod_http2.so #コメントアウト解除 
Include conf/extra/httpd-ssl.conf            #コメントアウト解除

Protocols h2 http/1.1 #追記


/usr/local/apache2/conf/extra/httpd-ssl.conf

#SSLSessionCache        "shmcb:/usr/local/apache2/logs/ssl_scache(512000)" #コメントアウト

#証明書と鍵を設定
SSLCertificateFile "/home/y/server.crt"
SSLCertificateKeyFile "/home/y/server.key"

起動確認

sudo /usr/local/apache2/bin/httpd 

netstat -ta |grep -e http -e https                                               
tcp6       0      0 [::]:http               [::]:*                  LISTEN                   
tcp6       0      0 [::]:https              [::]:*                  LISTEN                   


./nghttp2/src/nghttp https://localhost -v|grep HEADERS
[  0.008] send HEADERS frame <length=37, flags=0x25, stream_id=13>                           
          ; END_STREAM | END_HEADERS | PRIORITY                                              
[  0.012] recv HEADERS frame <length=115, flags=0x04, stream_id=13>                          
          ; END_HEADERS    

./nghttp2/src/nghttp http://localhost -v|grep HEADERS
[  0.001] send HEADERS frame <length=37, flags=0x25, stream_id=13>                           
          ; END_STREAM | END_HEADERS | PRIORITY                                              
[  0.004] recv HEADERS frame <length=115, flags=0x04, stream_id=13>                          
          ; END_HEADERS