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