今まで、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とかでとってくるような事ができるのかな??