nginxからh2oに変えてみた


PC030437

カンボジアで泊まったホテルに居た猫。可愛かったなぁ。
いつか試したかったh2o。ちょっと時間が作れたのでメモしておこう。

広告

サイト構成

  • Digital Ocean 1GB (Singapore)
  • Ubuntu 16.04 LTS
  • PHP 7.0.14-1
  • nginx 1.10.11

こんな感じだろうか。今までDigital Oceanの2GBプランを使っていたけど調べてみるとほとんどメモリ使っていなかったので1GBプランに落とした。メモリも400MB程度しか使っていないので将来的に512MBのプランで運用しようかと思っている。

今回は、今までnginxで運用していたところをh2oに変えてみた。

h2oインストール

必要なパッケージをaptで入れて下記のコマンドをh2oの直下で行えば簡単にインストールすることが出来た。今回はmrubyも使いたいのでmrubyを有効にするオプションも忘れずに。
Install – H2O – the optimized HTTP/2 server

あとは、依存しているwebsocketのcライブラリであるwslayもソースからコンパイルして入れておく。インストール方法等は公式リポジトリから。
tatsuhiro-t/wslay: The WebSocket library in C

% cmake -DWITH_BUNDLED_SSL=on -DWITH_MRUBY=on .
% make
% sudo make install

WordPressのディレクトリ構造

このサイトはWordPressのマルチサイト機能を使っていて下記のようなディレクトリ構造になっている。

/var/www/fukata.org/index.php # WordPressのindex.php
/var/www/fukata.org/wordpress/ # WordPress本体

極力 wordpress という文字列をURLに含みたくなかったのでh2oの設定ファイルは下記のような感じになっている。多分もっとスマートに書く方法があるだろうから、追々編集するはず。

https://fukata.org ‘s h2o config

まとめ

意外とあっさりnginxからh2oに乗り換える事が出来たんだけど、もっと言えばnginxの時に使っていたレスポンス結果をディスクにキャッシュさせて任意のURLのキャッシュだけ削除したりなんて事が出来ると嬉しいかな。

現状どこまでmrubyを使ってh2oを拡張出来るのか把握していないので色々試したいところ。

関連記事