2018-06-22

tobijibu

H2Oをインストール

brotliの配信のために、前回nginxをソースからインストールしました。 H2Oはデフォルトでbrotliに対応しているとのことで、今度はH2Oをインストールしてみます。

yumのリポジトリ追加

今回はインストール時にオプションを指定する必要がないので、 yumを使ってインストールします。

まずはH2Oのリポジトリを追加します。

$ sudo vim /etc/yum.repos.d/h2o-rpm.repo
[h2o-rpm]
name=h2o-rpm
baseurl=https://dl.bintray.com/tatsushid/h2o-rpm/centos/$releasever/$basearch/
gpgcheck=0
repo_gpgcheck=0
enabled=1

インストール

通常のパッケージインストールと同じようにyumでインストールします。

$ sudo yum install -y h2o
$ h2o -v
h2o version 2.2.5
OpenSSL: LibreSSL 2.4.5
mruby: YES

設定ファイル変更

brotliを使うために設定を変更します。 今回は圧縮済みの.brを使うので、 file.send-compressedプロパティを指定します。

共通設定ファイルを開いて、(ドメイン).confを読み込むように設定します。
(ここでは便宜上tr.you84815.spaceとして説明します。)

$ sudo vim /etc/h2o/h2o.conf
user: nobody
hosts:
  "localhost:443":
    ...
  "localhost:80":
    ...
  <<: !file /etc/h2o/tr.you84815.space.conf

(ドメイン).confの"ドメイン"はURIで指定するドメインを指定します。 ドメインがtr.you84815.spaceであれば、tr.you84815.space.confになります。

ドメインごとにファイルを分けることで管理しやすくなります。 これは書き方が違うだけでnginxでも同じですね。

$ sudo vim /etc/h2o/tr.you84815.space.conf
...
"tr.you84815.space:443":
  ...
  file.send-compressed: ON
  ...

設定ファイルをチェックします。

$ sudo service h2o configtest
...
configuration OK

H2O起動

設定ファイルを保存したら、H2Oを起動します。

$ sudo service h2o start;

これでH2Oがインストールできました。

on-the-fly

あらかじめ.brに圧縮するのではなく、 ユーザーが取得する時点で圧縮(on-the-fly)する場合は、 compressプロパティを指定します。

compress: ON

ブラウザが対応していれば.brを使い、 対応していなければ.gzipを使うようH2Oが判断してくれます。 とても賢いです。

その他

最初にインストールしたサーバで、 Perlのバージョンが古いということでエラーがでました。 perl5.20以上じゃないと動かないようです。

なので、必要に応じてPerlをインストールしてください。

$ wget http://www.cpan.org/src/5.0/perl-5.26.2.tar.gz
$ tar -xzf perl-5.26.2.tar.gz
$ cd perl-5.26.2
$ ./Configure -des -Dprefix=$HOME/localperl
$ make
$ make test
$ sudo make install
$ ~/localperl/bin/perl -v
$ sudo ln -sb ~/localperl/bin/perl /usr/bin/perl

とても時間がかかります。1時間程度だったと思います。