当社はIT技術のオンライン教育を得意としたセミナー専門会社です。 | 一戸英男

ITエンジニアの技術力UPをお約束します。

CentOS7/CentOS6 共通h2o HTTP/2対応Web サーバのインストール with WORDPRESSで動かしてみる。

h2oサーバの導入の動機

h2oを使ってみようと思った理由はHTTP/2.xで通信できることかな。最近のGoogle検索順位は早さも大切な評価ウェイトをしめているためサイトの速度アップは重要なことです。
このHTTP/2.xのプロトコルはHTTPS通信において表示速度を向上させ並列してリクエストを処理できるため、表示速度が向上します。
Nginxも早いのですが、H2OはそのNginxを凌ぐ早さで表示できるようです。通信スレッドはマルチプロセス・マルチスレッド方式です。CPUのコア数に合わせてnum-threadsを設定すれば良いようだ。

h2oのレポジドリーの追加

h2oのインストールはCentOS7/CentOS6で共通です。基本はyumのレポジトリーに以下の記述を追加し保存するだけでyum経由でレポジトリー からのインストールが可能になります。

h2oのインストールと起動

h2oを実際にyumを使ってインストールし、起動する手順になります。

ユーザh2oの作成とドキュメントルート作成&WORDPRESSの設置

SSL & WORDPRESSを動かす際のコンフィグレーション例(h2o.conf)

今回はSSLを使ってh2o環境でWORDPRESSを動かすケースのh2o.confを挙げてみたいと思います。
let’s encryptを使ってSSLライセンス取得し、実験してみました。Let’s Encrypt取得のやり方はここ
ドキュメントルートに/opt/html/content1として、実行ユーザはh2oユーザを新たに作り設定しています。
nginxにも似ている書き方にも感じますが、インデントで設定の範囲がきまるので注意しましょう。
尚、fastCGIをh2oは直接管理できるので通常行うようなfastCGIの設定は不要です。
SSL証明書の項目設定の中でCAファイル(認証局証明、中間証明等)を設定する箇所はありません。
従ってサーバ証明書とCAファイルはcatコマンドで結合を行ってください。結合後に結合ファイルの終点と開始点の間に改行が正しく入っていなかったらエラーになりますので必ず結合の後にチェックが必要です。
最初にサーバ証明書が来るようにするのがポイントです。尚、LetsEncryptの場合fullchain.pemが既に結合されたものです。

おまけ:ソースからのh2oコンパイル

CentOS6.10のデフォルトのgccバージョン(4.4.7)では宣言エラー(同じ関数名で異なるタイプ宣言)が出てしまいました。しかしHomebrewで導入しているgccのバージョン(5.5.0)では 問題なくコンパイルが完了しました。gccバージョン毎のプロトタイプ宣言の解釈と処理の違いがあるようです。尚centOS7,centOS8では簡単にコンパイルできます。ライブラリーが足りないと途中出てきますが2つほどマニュアルでライブラリー追加すれば問題ありません。Ubuntu系の最新バージョンではソースコード中のUINT_MAXをUINT8_MAXに置き換える作業がありましたがこちらもすんなりコンパイル出来ます。