h2oのバージョンが上がっていたので、新しいバージョンのh2oのrpmファイルを作り、アップデート作業を行う。
@tatsushid さんが h2oをビルドするためのスペックファイルを準備してくれているので、こちらに甘えることとする。

また、コンパイルにはmakeが必要なので、 cmake をインストールしておく。

1
# yum install cmake

そもそもh2oとは?と疑問になる方は作者のKazuhoさんの記事なぜ今、新しいHTTPサーバが必要なのかをご覧ください。

rpm作成手順

h2o-rpmをcloneする

1
# git clone https://github.com/tatsushid/h2o-rpm.git

rpmbuild をする。すると必要ファイルがデフォルトだとホームディレクトリに作成される。

1
2
3
# cd h2o-rpm/rpmbuild/SPECS/
# rpmbuild -ba h2o.spec
エラー: ファイル /root/rpmbuild/SOURCES/v1.7.0.tar.gz: そのようなファイルやディレクトリはありません

なお、rpmbuildコマンドがない場合は以下実行。

1
# yum -y install rpm-build

執筆時点で、h2oの最新安定版は1.7.0だが、specファイルを少し触りたいので一つ前のバージョンを使用する。
こちらのtarballファイルを/root/rpmbuil/SOUCES 配下に配置する。

1
2
# wget https://github.com/h2o/h2o/archive/v1.6.3.tar.gz
# mv v1.6.3.tar.gz /root/rpmbuild/SOURCES/

デフォルトだと、v1.7.0をビルドしようとするので、specファイルの
Version:1.6.3 にする。

1
2
3
4
5
6
7
8
9
10
11
12
# diff -ur h2o.spec_old h2o.spec
--- h2o.spec_old 2016-02-09 12:51:17.899503647 +0900
+++ h2o.spec 2016-02-09 12:58:57.758516137 +0900
@@ -20,7 +20,7 @@

Summary: H2O - The optimized HTTP/1, HTTP/2 server
Name: h2o
-Version: 1.7.0
+Version: 1.6.3
Release: 1%{?dist}
URL: https://h2o.examp1e.net/
Source0: https://github.com/h2o/h2o/archive/v%{version}.tar.gz

h2o-rpm の SOURCESにはあらかじめ必要なconfや起動ファイルがあるのでこれを丸ごと、先ほど作った /root/rpmbuild/SOURCES/ にコピーする。

1
2
3
4
5
6
7
8
9
# ls -l ../SOURCES/
合計 20
-rw-r--r-- 1 root root 488 29 12:51 h2o.conf
-rw-r--r-- 1 root root 2432 29 12:51 h2o.init
-rw-r--r-- 1 root root 190 29 12:51 h2o.logrotate
-rw-r--r-- 1 root root 342 29 12:51 h2o.service
-rw-r--r-- 1 root root 177 29 12:51 index.html

# cp -p ../SOURCES/* /root/rpmbuild/SOURCES/

再度、rpmbuildをする。

1
# rpmbuild -ba h2o.spec

問題なければ、以下RPMファイルが作成できる。

1
2
3
4
5
# ls -l /root/rpmbuild/RPMS/x86_64/
合計 6196
-rw-r--r-- 1 root root 1845760 29 13:09 h2o-1.6.3-1.el7.centos.x86_64.rpm
-rw-r--r-- 1 root root 4241868 29 13:09 h2o-debuginfo-1.6.3-1.el7.centos.x86_64.rpm
-rw-r--r-- 1 root root 250784 29 13:09 h2o-devel-1.6.3-1.el7.centos.x86_64.rpm

h2oアップデート

あとはrpmコマンドでアップデートするだけ。

1
# rpm -Uvh /root/rpmbuild/RPMS/x86_64/h2o-1.6.3-1.el7.centos.x86_64.rpm

すでに起動している場合は、 daemonのリロードが必要なので、以下コマンドを実行。

1
2
# systemctl daemon-reload
# systemctl reload h2o.service