OpenBSDでh2oをビルドしhttp/3でコンテンツを配信する
OpenBSDでソースコードからh2oをビルドし、http/3でコンテンツを配信する。
基本的にはh2oのインストレーション ドキュメント https://h2o.examp1e.net/install.html に従う。ビルドにのみ注意点がある。
build
ビルド時に --std=c11
を指定する必要がある
# ビルドツール (cmake) をインストールしておく sudo pkg_add -i cmake # h2oのリポジトリを取得 (この記事を書いている時点では @4f31229e6) git clone https://github.com/h2o/h2o # ビルドディレクトリに移動 mkdir -p h2o/build && cd h2o/build # cmake && make の実行 # 今回はインストール先に /usr/local/h2o を指定 # CFLAGSに "-std=c11" を指定する # (picotls が stdlib.h: aligned_alloc()を用いるため # "-std=c11" を指定しなければビルドに失敗する) cmake -DCMAKE_INSTALL_PREFIX=/usr/local/h2o -DCMAKE_C_FLAGS="-std=c11" .. make -j$(expr $(sysctl -n hw.ncpu) + 1) sudo make install
configuration
OpenBSD用のh2oの rc Script は 過去記事 から拝借する
# /etc/rc.d/h2o の配置 sudo wget -O /etc/rc.d/h2o \ https://github.com/0x8100/handytools/raw/main/OpenBSD/etc/rc.d/h2o # 環境設定(詳細は環境に合わせて) sudo mkdir -p /var/h2o/run sudo chown -R www:www /var/h2o/run sudo mkdir -p /usr/local/h2o/etc # h2oの設定ファイルを配置する(HTTP/3対応) # https://h2o.examp1e.net/configure/quick_start.html sudo bash -c 'cat > /usr/local/h2o/etc/h2o.conf <<EOF error-log: "| logger -t h2o -i -p local0.err" access-log: "| logger -t h2o -i -p local0.info" pid-file: /var/h2o/run/h2o.pid user: www listen: port: 80 hosts: hoge.example.net: header.add: "Alt-Svc: h3=\":443\";ma=60,quic=\":443\";ma=60" listen: &listen_ssl port: 443 ssl: certificate-file: /etc/letsencrypt/live/hoge.example.net/fullchain.pem key-file: /etc/letsencrypt/live/hoge.example.net/privkey.pem listen: <<: *listen_ssl type: quic paths: "/": file.dir: "/usr/www/hoge.example.net/" EOF' # h2o を起動 sudo rcctl start h2o