h2o nginxからh2oへ切り替えた

Pocket

今まで、nginx+fastcgi+wordpressで運用していたこのサイト
h2o+fastcgi+wordpressへ切り替えてみた

h2oのソースダウンロードとインストールは下記URLの通り実行
Install – H2O

設定ファイルは下記の通りにした

ついでに起動スクリプトも作成
H2Oとmrubyを使ってIPアドレスベースでアクセス制御しつつリバースプロキシとして動かしてWebサイトをHTTP/2化しよう
@matsumotoryさんのブログに書いてあるのをベースにconfigtestも追加しておいた

h2o -c /etc/h2o/h2o.conf -t 

でチェックできるんですが、毎回打つのが面倒だったので

#!/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`
prog=/usr/local/bin/h2o
conf=/etc/h2o/h2o.conf

start() {
        echo -n $"Starting $SERVICE_NAME: "
        $prog -c $conf -m daemon 
        RETVAL=$?
        if [ $RETVAL == 0 ]; then
          success
        else
          failure
        fi
        echo
}

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

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

configtest() {
        echo -n $"$SERVICE_NAME "
        $prog -c $conf -t
        RETVAL=$?
        if [ $RETVAL == 0 ]; then
          success
        else
          failure
        fi
        echo
}

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

exit $RETVAL

また、このままだと自分の環境(CentOS6)だと何故か起動時に
No support for IPv6. Please update Perl (or Perl modules)と表示されてエラーになってました。

cpanmでServer::StarterやApp::FatPacker等入れてみたけど改善せず・・・
調べてみたら
h2o と server_starter で graceful restart with Docker
@kazeburoさんの記事にこう書いてあった

ちなみに、現在のstart_serverはIPv4のみをサポートしているので、設定ファイルのhost: 0.0.0.0を書かないと、h2oがIPv6もbindしようとするので、エラーとなります。

h2o Server::Starter how to use ? #84
あぁ。。
というわけでconfファイルの2〜4行目の所に

listen:
port: 80
host: 0.0.0.0

を追加したら起動するようになりました。

設定ファイルが短くなるのはありがたいですね!
nginxのstub_status_moduleみたいな物が欲しい所ですが
mrubyとかでとってくるような事ができるのかな??

h2o nginxからh2oへ切り替えた
Tagged on: