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