LoginSignup
17
17

More than 5 years have passed since last update.

h2oをリバースプロキシとして導入してみた

Last updated at Posted at 2015-07-29

流行りのh2o/h2oをインストールして動かしてみた
Apacheがすでに動いていてその上でPHPとかuwsgiとか動いていたので、今回はリバースプロキシとして導入することにした

環境

さくらVPS

$ cat /etc/redhat-release
CentOS release 6.6 (Final)
$ uname -r
2.6.32-504.3.3.el6.x86_64

インストール

Install - H2Oに書いてある

yumで提供されているっぽいこと書いてあったのでやろうとしたがだめだった

$ sudo yum install h2o
読み込んだプラグイン:downloadonly, fastestmirror, security
インストール処理の設定をしています
Loading mirror speeds from cached hostfile
 * base: ftp.nara.wide.ad.jp
 * extras: ftp.nara.wide.ad.jp
 * updates: ftp.nara.wide.ad.jp
パッケージ h2o は利用できません。
エラー: 何もしません

というわけで、ソース落としてきて手元でビルドした
手元の環境にはcmakeが入っていなかったので

sudo yum -y install cmake

していれた

ダウンロードからインストール
wget https://github.com/h2o/h2o/archive/v1.4.2.tar.gz
cmake -DWITH_BUNDLED_SSL=on .
make
sudo make install

これで/usr/local/bin/h2oに実行ファイルが格納される

設定ファイル

Quick StartProxy Directivesを参考にした

/etc/h2o/reverse_proxy.conf
user: nobody
hosts:
  "My own host":
    listen:
      port: 80
    paths:
      "/":
        proxy.reverse.url: http://127.0.0.1:8080/
      "/assets":
        file.dir: /path/to/assets/
access-log: /path/to/log/access_log
error-log: /path/to/log/error_log

pid-fileはとりあえず消した
リバースプロキシのためにproxy.reverse.urlを設定する
もちろん、もともと動いていたApacheのポートを8080に変更し、iptablesで8080を開ける作業が必要となる
これだけでいいのめっちゃ楽

動かす

CentOS/サービスの登録 - wiki.aokix.comをかなり参考にして起動スクリプトを書く
chkconfigのランレベルはapacheのものを拝借している
今回は雑にstarth2oを実行して、stoppkill h2oする、みたいなものとした
statusとかreloadもとりあえずいらないので削除

/etc/rc.d/init.d/h2o
#!/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 -c /etc/h2o/reverse_proxy.conf &
        RETVAL=$?
        if [ $RETVAL == 0 ]; then
          success
        else
          failure
        fi
        echo
}

stop() {
        echo -n $"Stopping $SERVICE_NAME: "
        pkill h2o
        RETVAL=$?
        if [ $RETVAL == 0 ]; then
          success
        else
          failure
        fi
        echo
}

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

exit $RETVAL

これでsudo chkconfig --add h2oすれば、以下のようにしてserviceを使って起動・停止出来るようになる

h2oの起動/停止
sudo service h2o start
sudo service h2o stop

最後に疎通確認でcurl --head <your host>して

Server: h2o/1.4.2

となっていれば終了
証明書とってなかったりでhttp2にはならなかったが、ひとまず動かすという目的は果たせた

17
17
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
17
17