Help us understand the problem. What is going on with this article?

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

More than 5 years have passed since last update.

流行りの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にはならなかったが、ひとまず動かすという目的は果たせた

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした