h2oをリバースプロキシとして導入してみた
2015-07-29
QiitaHTTPさくらVPSh2o流行りの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 StartとProxy Directivesを参考にした
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 のものを拝借している
今回は雑にstart
でh2o
を実行して、stop
でpkill h2o
する、みたいなものとした
status
とかreload
もとりあえずいらないので削除
#!/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
を使って起動・停止出来るようになる
sudo service h2o start
sudo service h2o stop
最後に疎通確認でcurl --head <your host>
して
Server: h2o/1.4.2
となっていれば終了 証明書とってなかったりで http2 にはならなかったが、ひとまず動かすという目的は果たせた
from: https://qiita.com/petitviolet/items/7881424584b461787f62