自宅サーバーUbuntuをhttp/2化した

ディストリが最新とかではないのでパッケージシステム経由ではインストール出来ない

ソースからインストール

  • git clone

Install - H2O - the optimized HTTP/2 server
でインストール
ちょっと回り道して

apt-get install locate git cmake build-essential checkinstall autoconf pkg-config libtool python-sphinx wget libcunit1-dev nettle-dev libyaml-dev libuv-dev -y

を予めしていた。makeはそんなに時間かからない

Apacheの設定ファイルのLISTENポート変更して再起動しておく

h2oで443を待ち受けたいので4430とかにずらしておく。

SSLのpemとか

fullchainが欲しかったので再作成。let's encrypt最高。

./letsencrypt-auto certonly --standalone --email hoge@example.com --domain hoge.example.com

設定ファイル

Quick Start - Configure - H2O - the optimized HTTP/2 server
を参考にする。
下記のようになった。

listen:
  port: 443
  ssl:
     certificate-file: /etc/letsencrypt/live/hoge.netvolante.jp/fullchain.pem
     key-file: /etc/letsencrypt/live/hoge.netvolante.jp/privkey.pem
user: www-data
hosts:
  "hoge.netvolante.jp":
    paths:
      /:
        proxy.reverse.url: http://127.0.0.1/
access-log: /var/log/h2o/access-log
error-log: /var/log/h2o/error-log
pid-file: /tmp/h2o.pid

/var/log/h2o掘ったりとかchmodとかは省略するね。

initスクリプト

hb.matsumoto-r.jp
を参考に下記のようになった。我が家はubuntuが元気に稼働しておる。
chmod +xとかは省略するね。

#!/bin/bash
#chkconfig: 2345 85 15
#descpriction: h2o Web Server

# source function library
#. /etc/rc.d/init.d/functions #こんなのねぇ。

RETVAL=0
SERVICE_NAME=`basename $0`

start() {
        echo -n $"Starting $SERVICE_NAME: "
        /usr/local/bin/h2o -m daemon -c /etc/h2o/h2o.cfg
        RETVAL=$?
        if [ $RETVAL == 0 ]; then
          echo success
        else
          echo failure
        fi
        echo
}

stop() {
        echo -n $"Stopping $SERVICE_NAME: "
        kill -TERM `cat /tmp/h2o.pid`
        RETVAL=$?
        if [ $RETVAL == 0 ]; then
          echo success
        else
          echo failure
        fi
        echo
}

reload() {
        echo -n $"Graceful $SERVICE_NAME: "
        kill -HUP `cat /tmp/h2o.pid`
        RETVAL=$?
        if [ $RETVAL == 0 ]; then
          echo success
        else
          echo failure
        fi
        echo
}

case "$1" in
  start)
        start
        ;;
  stop)
        stop
        ;;
  reload|graceful)
        reload
        ;;
  restart)
        stop
        start
        ;;
  *)
        echo $"Usage: $0 {start|stop}"
        exit 1
esac

h2o起動する。OKっぽい。

結果

Content-Encoding: gzip
Content-Length: 1892
Content-Type: text/html
Date: Tue, 22 Dec 2015 15:37:20 GMT
Server: h2o/1.7.0-alpha1
Vary: Accept-Encoding
X-Firefox-Spdy: h2
X-Powered-By: PHP/5.5.9-1ubuntu4.14

f:id:new_pill:20151223010300p:plain

感想

あっさりとできた。30分ぐらい?