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