利用するのはnghttp2と呼ばれる日本人のtatsuhiro-tさんによって開発されたサーバソフト

必要パッケージのインストール

nghttp2の依存パッケージやgit、gcc4.9環境をインストール。(OSはubuntu前提)

sudo apt-get update

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

sudo apt-get update

sudo apt-get install git

sudo apt-get install -y python-software-properties

sudo apt-get update

sudo add-apt-repository ppa:ubuntu-toolchain-r/test

sudo apt-get update

sudo apt-get install -y gcc-4.9 g++-4.7

sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.9 40 --slave /usr/bin/g++ g++ /usr/bin/g++-4.7

sudo update-alternatives --list gcc

nghttp2のビルド

GitHubからnghttp2のソース一式をダウンロードし、ビルド

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

sudo apt-get update

cd nghttp2

autoreconf -i

automake

autoconf

./configure

make

cd src

makeで数分待つ

ここまで実行すると、srcディレクトリ内にnghttpdが作成される

### サーバ証明書、秘密鍵の生成

nghttp2では、httpsだけでなくhttpもサポートしているのですが、現時点でhttp/2に対応しているブラウザ(※1)はhttpsのみを前

提にしているので、SSL環境の構築が必要

openssl genrsa -des3 -passout pass:x -out server.pass.key 2048

openssl rsa -passin pass:x -in server.pass.key -out server.key

rm server.pass.key

openssl req -new -key server.key -out server.csr

openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt 

秘密鍵、サーバ証明書を作成しています

環境構築後のアクセス時にエラーを出さないようにするためにはブラウザに証明書をインポートしてください

※1 2015/3/8時点での対応ブラウザ:Firefox最新版、Chrome最新版(chrome://flags/でSPDY/4オプションのONが必要)

コンテンツ作成、nghttpd起動

Webページを作成し、nghttpdを起動

vi index.html

viでindex.htmlを編集

<html>
<body>Hello, World!</body>
</html> 

nghttp2は、nghttpdが置いてあるディレクトリと同じディレクトリを公開します

viの操作方法は省略しますが、「Hello, World!」のみが表示されるWebページを作成しています

PATH=$PATH:/home/○○(GCEインスタンスのユーザ名)/nghttp2/src
export PATH
nghttpd -v 8080 server.key server.crt

パスを通し、8080ポートでの起動と先ほど作成した秘密鍵、証明書を指定し、-vオプションをつけて起動します

-vオプションはHTTP/2フレームのやり取りを表示するためのオプションです

対応ブラウザからアクセス

対応ブラウザから、以下のアドレスにアクセスし、「Hello, World!」が表示されたらOK

https://[サーバIPアドレス or サーバURL]:8080/index.html

参考文献:ゼロからはじめるHTTP/2サーバ(nghttp2)環境構築



Published

12 July 2015

Tags