h2o nginxからh2oへ切り替えた

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

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

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

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

[bash]h2o -c /etc/h2o/h2o.conf -t [/bash]

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

[bash]

!/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 [/bash]

また、このままだと自分の環境(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とかでとってくるような事ができるのかな??