証明書の準備もできたのでh2oをビルドしてみます。
※各バージョンは2016年12月15日現在のものです。
■必要そうなパッケージのインストール
事前に必要そうなパッケージを入れておきます。
yum install \
gcc-c++ \
libarchive \
libarchive-devel \
expat \
expat-devel \
json-c.x86_64 \
json-c-devel.x86_64 \
openssl.x86_64 \
openssl-devel.x86_64 \
ruby-devel \
texi2html \
libtool \
automake \
python27-sphinx
■cmakeをインストール
cmakeが必要なのでインストールします。
こちらのサイトからバイナリをダウンロードして使いました。
ソースからビルドも試したけど、うまくいかないのであきらめました。
https://cmake.org/download/
適当なディレクトリで以下のコマンドを実行しました。
1 2 3 |
wget https://cmake.org/files/v3.7/cmake-3.7.1-Linux-x86_64.sh chmod 755 cmake-3.7.1-Linux-x86_64.sh sudo ./cmake-3.7.1-Linux-x86_64.sh --prefix=/usr/local --exclude-subdir |
■yamlをインストール
http://pyyaml.org/download/libyaml/
こちらからソースをダウンロードしてビルドします。
1 2 3 4 5 6 |
wget http://pyyaml.org/download/libyaml/yaml-0.1.7.tar.gz tar xvf yaml-0.1.7.tar.gz cd yaml-0.1.7 ./configure make sudo make install |
■libuvをインストール
https://github.com/libuv/libuv
こちらからgit cloneしてビルドします。
1 2 3 4 5 6 7 |
git clone https://github.com/libuv/libuv cd libuv/ sh autogen.sh ./configure make make check sudo make install |
■CUnitをインストール
http://jaist.dl.sourceforge.net/project/cunit/CUnit
こちらのサイトからソースをダウンロードしてビルドしました。
1 2 3 4 5 6 7 8 9 |
wget http://jaist.dl.sourceforge.net/project/cunit/CUnit/2.1-3/CUnit-2.1-3.tar.bz2 tar xvfj CUnit-2.1-3.tar.bz2 cd CUnit-2.1-3 autoreconf -i automake autoconf ./configure make sudo make install |
■nettleをインストール
https://git.lysator.liu.se/nettle/nettle
こちらのサイトからgit cloneしてビルドしました。
1 2 3 4 5 6 |
git clone https://git.lysator.liu.se/nettle/nettle.git cd nettle/ ./.bootstrap ./configure --disable-documentation make sudo make install |
■libwslayをインストール
https://github.com/tatsuhiro-t/wslay
こちらのサイトからgit cloneしてビルドします。
1 2 3 4 5 6 7 8 |
git clone https://github.com/tatsuhiro-t/wslay cd wslay/ autoreconf -i automake autoconf ./configure make sudo make install |
■ライブラリパスを追加する
/etc/ld.so.conf.d/ に usr-local-lib.conf とか適当なファイル名で以下の内容を記述する。
1 |
/usr/local/lib |
以下のコマンドでキャッシュを作成する。
1 |
ldconfig |
ldconfig -p で以下のライブラリが追加されていることを確認する。
1 2 3 4 5 6 7 |
libyaml-0.so.2 (libc6,x86-64) => /usr/local/lib/libyaml-0.so.2 libwslay.so.0 (libc6,x86-64) => /usr/local/lib/libwslay.so.0 libwslay.so (libc6,x86-64) => /usr/local/lib/libwslay.so libuv.so.1 (libc6,x86-64) => /usr/local/lib/libuv.so.1 libuv.so (libc6,x86-64) => /usr/local/lib/libuv.so libcunit.so.1 (libc6,x86-64) => /usr/local/lib/libcunit.so.1 libcunit.so (libc6,x86-64) => /usr/local/lib/libcunit.so |
■h2oをビルドする
https://github.com/h2o/h2o
こちらのサイトからgit cloneしてビルドする。
1 2 3 4 5 6 |
git clone https://github.com/h2o/h2o cd h2o/ git submodule update --init --recursive cmake -DWITH_BUNDLED_SSL=on -DWITH_MRUBY=on . make h2o sudo make install |
■h2oを実行するユーザーを作成する
この辺はお好みで。
apacheやnginxから移行するなら、そのユーザーでもいいかも。
グループIDやユーザーIDも、他とぶつからないように適当に。
1 2 3 4 5 6 7 |
groupadd -g 199 h2o useradd -s /sbin/nologin -u 199 -g 199 h2o mkdir /var/www mkdir /var/www/html chown -R h2o.h2o /var/www/ mkdir /var/log/h2o chown -R h2o.h2o /var/log/h2o |
ドキュメントルートとログディレクトリも作成しておきました。
■h2o.conf を作成
https://h2o.examp1e.net/configure/quick_start.html
こちらのサンプルを参考に h2o.conf を作成します。
先に作ったサーバ証明書を指定して、リダイレクトなどやってみます。
/usr/local/etc/h2o.conf としてこんな内容で作成しました。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 |
user: h2o num-threads: 1 listen: 80 listen: port: 443 ssl: certificate-file: /etc/letsencrypt/live/e-kamo.net/fullchain.pem key-file: /etc/letsencrypt/live/e-kamo.net/privkey.pem file.custom-handler: extension: .php # h2oに任せる場合 #fastcgi.spawn: "PHP_FCGI_CHILDREN=10 exec /usr/local/bin/php-cgi" # php-fpmを使う場合 fastcgi.connect: port: /var/run/php-fpm/php-fpm.sock type: unix file.index: [ 'index.php', 'index.html' ] hosts: "e-kamo.net:80": paths: "/": redirect: status: 301 url: https://e-kamo.net/ "e-kamo.net:443": paths: "/": # 以下に静的ファイルが存在したら返す file.dir: /var/www/html file.dirlisting: OFF # wpのパーマリンク対応 redirect: url: /index.php/ internal: YES status: 307 "www.e-kamo.net:80": paths: "/": redirect: status: 301 url: https://e-kamo.net/ "www.e-kamo.net:443": paths: "/": redirect: status: 301 url: https://e-kamo.net/ access-log: /var/log/h2o/access-log error-log: /var/log/h2o/error-log pid-file: /var/run/h2o.pid |
このサイトで実際に使っている内容なので、パスやらドメイン名は好きなように書き換えてください。
起動スクリプトや、ログのローテートも必要になります。
まつもとりー様のサイトを参考にさせていただきました。
http://hb.matsumoto-r.jp/entry/2015/07/31/220948
何もかもめちゃくちゃ参考になりました。
ありがとうございます。