LoginSignup
0
0

CentOS7.9 で h2o をソースビルドする

Last updated at Posted at 2023-12-05

CentOS に h2o をインストールしよう。そういうとき、定石では vi /etc/yum.repos.d/bintray-tatsushid-h2o-rpm.repo するところだけど、執筆時点(2022年3月現在)ではこの手は使えない。リポジトリに指定する bintray が昨年5月の時点でサービス終了してしまっているのだ。

色々と検索してみたものの代替手段が見つからなかった。そこで、備忘録ついでに記事として残しておく。

環境

  • OS:CentOS7.9(AWS EC2 AMI:ami-0ddea5e0f69c193a4)
  • h2o:v2.2.6

必要なツールをインストールする。bison と ruby は mruby を使用する場合に必要。

sudo yum install wget gcc gcc-c++ bison ruby

手順

ソースコードの入手

cd /usr/local/src
sudo wget https://github.com/h2o/h2o/archive/refs/tags/v2.2.6.tar.gz
sudo tar -zxvf ./v2.2.6.tar.gz
cd ./h2o-2.2.6

以下を CMakeLists.txt の最下行に追記する。そうしなければ cmake 時に gnu99 を指定しなさいというエラーが返る。

sudo vi CMakeLists.txt
SET(CMAKE_C_FLAGS “-std=gnu99 -O2 -g ${CC_WARNING_FLAGS} ${CMAKE_C_FLAGS} -DH2O_ROOT=\“${CMAKE_INSTALL_PREFIX}\” -DH2O_CONFIG_PATH=\“${CMAKE_INSTALL_SYSCONFDIR}/h2o.conf\“)

ビルド

sudo mkdir -p build
cd ./build
sudo cmake ..
sudo make
sudo make install

confを用意

sudo mkdir -p /etc/h2o/
sudo vi /etc/h2o/h2o.conf

service に追加(任意)

sudo vi /usr/lib/systemd/system/h2o.service
[Unit]
Description=H2O - the optimized HTTP/1, HTTP/2 server
After=network.target remote-fs.target nss-lookup.target

[Service]
Type=simple
ExecStart=/usr/local/bin/h2o -m master -c /etc/h2o/h2o.conf
ExecReload=/bin/kill -HUP ${MAINPID}
ExecStop=/bin/kill -TERM ${MAINPID}
PrivateTmp=true
LimitNOFILE=infinity

[Install]
WantedBy=multi-user.target
sudo systemctl start h2o

途中、cmake の段階で libvu のバージョンが古すぎたり、libwslay が見つからないというエラーが出るが、そのまま問題なく make; make install できた。もしかしたら何か起きるかもしれない。

ソースビルドなんていつぶりだろう。たまにやると、パッケージマネージャー(yum。8以降や streamでは dnf)様様だということがよくわかる。

おわりに

「今更h2o?」「今更CentoOS7?」という感じもあるが、久々に Amazon Linux 2023 で環境構築しようとしたところ、h2o のインストールでこけてしまい、結局 nginx に置き換えたあと、むかし自前のブログに書いたこの記事を思い出したので移植しました。誰かの役に立てば嬉しいな。

おしまい

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0