[2016.6.18 時点の話] 実のところ,最新の Cygwin には libev および nghttp2 が含まれているので, h2load の機能を使うために,自分で nghttp2 をビルドする必要は無くなったのだが,それでも, nghttp2 をビルドするなら, Jansson および spdylay は, Cygwin にパッケージがないので,自分でビルドしなければならない。ただ,昨今の情勢からすると, spdylay はいらないかなとも思う。
—————————————————————————————————————————————————
以下の 2 ファイルが手元にある。ひとつは H2LOAD_dll_package_x86.zip で,もうひとつは H2LOAD_dll_package_x64.zip である。ダウンロードして展開し,コンソール上で,
> h2load -n100000 -c100 -m10 https://localhost
とでもやれば, Windows 上で h2load テストができる。
テストをやる場合はローカルにテストサーバを用意すべきだ。 -n -c -m の値によっては,対象サーバへのサイバー攻撃になりかねないからね。気を付けましょう。
前に,「なんかどう見ても使用前の結果のほうが速いように見えません???ナンデェ!」と書いたのだが,今回のテスト結果は興味深い。 HTTPS with HTTP/2 と HTTPS without HTTP/2 をご覧あれ。 HTTP/2 をサポートしているサーバは,していないサーバよりも同時ストリー ムをうまく処理している。 HTTP/2 の特長の一つが顕著に表れているわけだ。
さて,わが苦難の道の記録を書くことにしようかい (^_^;).
[注意]:以下の手順を踏むと, H2LOAD_dll_package_x64.zip のファイル群ができる。 H2LOAD_dll_package_x86.zip のファイルを手に入れるには, Windows x86 のパソコン上で setup-x86.exe を使って同じことをやらないといけない。
- [1. Cygwin のインストール]
- Cygwin から setup-x86_64.exe (か setup-x86.exe) をダウンロードする。私は, setup-x86_64.exe を落とした。
- pubring.asc と setup-x86_64.exe.sig (か setup-x86.exe.sig) を Installing and Updating Cygwin Packages からダウンロードする。
コマンドプロンプトを管理者として実行し signature を確認する。 signatures の確認て, Linux だとルーチンになっているが,日ごろ書かないだけで, Windows でも結構やっている。 Apache, MariaDB, なんかね。 GnuPG modern は GnuPG binary releases から落とせるから,なんだったらやってみてください。
> pushd x:Cygwin
>gpg --import pubring.asc
gpg: key 676041BA: public key "Cygwin <cygwin@cygwin.com>" imported
gpg: Total number processed: 1
gpg: imported: 1
>gpg --verify setup-x86_64.exe.sig
gpg: assuming signed data in 'setup-x86_64.exe'
gpg: Signature made 10/19/15 04:38:02 東京 (標準時) using DSA key ID 676041BA
gpg: Good signature from "Cygwin <cygwin@cygwin.com>" [unknown]
gpg: WARNING: This key is not certified with a trusted signature!
gpg: There is no indication that the signature belongs to the owner.
Primary key fingerprint: 1169 DF9F 2273 4F74 3AA5 9232 A9A2 62FF 6760 41BA
signature の trust 作業を飛ばしているから WARNING が出ているが,見たかったのは Good signature と Primary key fingerprint だけだから,無問題。 - setup-x86_64.exe で Cygwin をインストール。ダウンロード先以外は,「次へ」をクリックしていけばいい。ミラーを選ぶところだけは,近くのを選ぶ。まあ .jp を選ぶってことね。
wget がいると思うので setup-x86_64.exe をもう 1 回走らせて,インストール。
setup-x86_64.exe を終了。 - デスクトップの Cygwin64 Terminal icon をクリック。 Download と Source ディレクトリを作る。
$ pwd
☜ 現在位置の確認。
/home/UserID
$ mkdir Download
☜ ダウンロードファイル用。
$ mkdir Source
☜ ソースファイル用。 - 使い勝手のために, apt-cyg をインストールしておく。
$ pwd
/home/UserID
$ cd Download
$ lynx -source rawgit.com/transcode-open/apt-cyg/master/apt-cyg > apt-cyg
$ install apt-cyg /usr/local/bin
apt-cyg のインストール完了。
ftp://ftp.jaist.ac.jp をミラーに設定して(-m オプション)からアップデートをかけておく。
$ apt-cyg -m ftp://ftp.jaist.ac.jp/pub/cygwin/ update
- [2. libev のコンパイルとインストール]
- Notes for building on Windows (Mingw/Cygwin) によると, h2load のコンパイルには libev がいるらしい。libev のコンパイルに先立ち,以下のパッケージをインストールした。 Cgwin64 Terminal を起動。
$ apt-cyg install autoconf automake make libtool gcc-core gcc-g++
- libev’s tarball のコンパイル自体はうまくいったんだけどねぇ, exe と DLL ができなかったのだ。 Cygwin に超うといせいか,どうしてもこれが解決できなかった。仕方がないので,ほかに方法がないかネットをうろうろした。 fd00 氏のリポジトリ を GitHub でめっけたよー。h2load のビルドに必要なのに Cygwin にはないパッケージについて,すべてリポがある。 cygport を使うらしい。ということで,バイナリパッケージができる。自前リポができるジャン。 fd00 様,感謝です m(_”_)m。
‘libev’ について ☞ https://github.com/fd00/yacp/tree/master/libev
‘Jansson’ について ☞ https://github.com/fd00/yacp/tree/master/jansson
‘spdylay’ について ☞ https://github.com/fd00/yacp/tree/master/spdylay
‘nghttp2’ について ☞ https://github.com/fd00/yacp/tree/master/nghttp2
h2load は ‘nghttp2’ パッケージに含まれている。- libev のコンパイル。
$ apt-cyg install cygport
$ cd /usr/src
$ wget http://dist.schmorp.de/libev/libev-4.20.tar.gz
$ wget https://github.com/fd00/yacp/raw/master/libev/libev-4.20-1bl1.cygport
$ wget https://github.com/fd00/yacp/raw/master/libev/libev-4.20-1bl1.src.patch
$ cygport ./libev-4.20-1bl1.cygport all
どうしてだか, cygport 内の PATCH_URI がうまく働かなかったので,下記のファイルは手動で落とした。
$ wget https://sources.gentoo.org/cgi-bin/viewvc.cgi/gentoo-x86/dev-libs/libev/files/libev-pc.patch
再度,
$ cygport ./libev-4.20-1bl1.cygport all
- libev のインストール。
libev のバイナリパッケージが生成された。自前リポづくりにトライ。
$ cd ~Download
$ wget https://sourceware.org/viewvc/cygwin-apps/genini/genini?revision=1.16&view=co
$ mv genini@revision=1.16 genini
$ install genini /usr/local/bin
$ cd /usr/src/libev-4.20-1bl1.x86_64/dist
$ cp -R libev /cygdrive/x/Apache24/htdocs/cygwin/x86_64/release
$ cd /cygdrive/x/Apache24/htdocs/cygwin
$ genini --recursive x86_64 | bzip2 -c > x86_64/setup.bz2
ここで出てくる Apache はテストサーバ用のもの。
setup-x86_64.exe を ‘-X (= --no-verify)’ オプションで起動。どうしても,自前リポに入れなかった。これって ‘Error Installing Cygwin (setup-x86_64.exe & setup-x86) – No setup.ini.sig found.’ と関係あるのかな? Achim Gratz のローカル版も試してみたが,何も変わりなし。仕方ないので,マニュアルでインストール。なんてこったい!
$ install /usr/src/libev-4.20-1bl1.x86_64/inst/usr/bin/cygev-4.dll /usr/bin
$ mkdir /usr/include/libev
$ install /usr/src/libev-4.20-1bl1.x86_64/inst/usr/include/libev/ev* /usr/include/libev
(ev* = ev.h ev++.h event.h)
$ install /usr/src/libev-4.20-1bl1.x86_64/inst/usr/lib/libev.dll.a /usr/lib
$ install /usr/src/libev-4.20-1bl1.x86_64/inst/usr/lib/pkgconfig/libev.pc /usr/lib/pkgconfig
$ install /usr/src/libev-4.20-1bl1.x86_64/inst/usr/share/man/man3/ev.3.gz /usr/share/man/man3
- libev のコンパイル。
- [3. Jansson のコンパイルとインストール]
- Jansson のコンパイル。
$ apt-cyg install cmake
$ cd /usr/src
$ wget http://www.digip.org/jansson/releases/jansson-2.7.tar.bz2
$ wget https://github.com/fd00/yacp/raw/master/jansson/jansson-2.7-1bl1.cygport
$ wget https://github.com/fd00/yacp/raw/master/jansson/jansson-2.7-1bl1.src.patch
$ cygport ./jansson-2.7-1bl1.cygport all
- Jansson のインストール。
- 上記の体たらくなので,マニュアルでインストール。なんてこったい!
$ install /usr/src/jansson-2.7-1bl1.x86_64/inst/usr/bin/cygjansson-4.dll /usr/bin
$ install /usr/src/jansson-2.7-1bl1.x86_64/inst/usr/include/ja* /usr/include
(ja* = jansson.h jansson_config.h)
$ install /usr/src/jansson-2.7-1bl1.x86_64/inst/usr/lib/libjansson.dll.a /usr/lib
$ install /usr/src/jansson-2.7-1bl1.x86_64/inst/usr/lib/pkgconfig/jansson.pc /usr/lib/pkgconfig
- 上記の体たらくなので,マニュアルでインストール。なんてこったい!
- [4. spdylay のコンパイルとインストール]
- spdylay のコンパイル。
$ apt-cyg install libxml2-devel CUnit
なんでだか libevent と libevent-devel が apt-cyg でインストールできなかったので, setup-x86_64.exe から入れた。
OpenSSL 関連の全パッケージも setup-x86_64.exe で入れた。$ cd /usr/src
$ wget https://github.com/tatsuhiro-t/spdylay/releases/download/v1.3.2/spdylay-1.3.2.tar.xz
$ wget https://github.com/fd00/yacp/raw/master/spdylay/spdylay-1.3.2-1bl1.cygport
$ wget https://github.com/fd00/yacp/raw/master/spdylay/spdylay-1.3.2-1bl1.src.patch
$ cygport ./spdylay-1.3.2-1bl1.cygport all
requirements で読んでいたのに, pkg-config を入れ忘れてたもので,エラーが出た。
./configure: line xxxxx: syntax error near unexpected token `0.20′
./configure: line xxxxx: `PKG_PROG_PKG_CONFIG(0.20)’
☞ 参照URL: spdylay/issues/16
$ apt-cyg install pkg-config
$ cygport ./spdylay-1.3.2-1bl1.cygport all
をもっ 1 回。
- spdylay のインストール。
- 上記の体たらくなので,マニュアルでインストール。なんてこったい!
$ install /usr/src/spdylay-1.3.2-1bl1.x86_64/inst/usr/bin/*.exe /usr/bin
(*.exe = shrpx.exe spdycat.exe)
$ install /usr/src/spdylay-1.3.2-1bl1.x86_64/inst/usr/bin/cygspdylay-7.dll /usr/bin
$ mkdir /usr/include/spdylay
$ install /usr/src/spdylay-1.3.2-1bl1.x86_64/inst/usr/include/spdylay/spd* /usr/include/spdylay
(spd* = spdylay.h spdylayver.h)
$ install /usr/src/spdylay-1.3.2-1bl1.x86_64/inst/usr/lib/libspdylay.dll.a /usr/lib
$ install /usr/src/spdylay-1.3.2-1bl1.x86_64/inst/usr/lib/pkgconfig/libspdylay.pc /usr/lib/pkgconfig
- 上記の体たらくなので,マニュアルでインストール。なんてこったい!
- [5. nghttp2 のコンパイルとインストール]
- nghttp2 のコンパイル。
$ cd /usr/src
$ wget https://github.com/tatsuhiro-t/nghttp2/releases/download/v1.4.0/nghttp2-1.4.0.tar.xz
$ wget https://github.com/fd00/yacp/raw/master/nghttp2/nghttp2-1.4.0-1bl1.cygport
$ wget https://github.com/fd00/yacp/raw/master/nghttp2/nghttp2-1.4.0-1bl1.src.patch
$ cygport ./nghttp2-1.4.0-1bl1.cygport all
- nghttp2 のインストール
- 上記の体たらくなので,マニュアルでインストール。なんてこったい!
$ install /usr/src/nghttp2-1.4.0-1bl1.x86_64/inst/usr/bin/* /usr/bin
(* =cygnghttp2-14.dll deflatehd.exe h2load.exe inflatehd.exe nghttp.exe nghttpd.exe nghttpx.exe)
$ mkdir /usr/include/nghttp2
$ install /usr/src/nghttp2-1.4.0-1bl1.x86_64/inst/usr/include/nghttp2/*.h /usr/include/nghttp2
(*.h = nghttp2.h nghttp2ver.h)
$ install /usr/src/nghttp2-1.4.0-1bl1.x86_64/inst/usr/lib/libnghttp2.dll.a /usr/lib
$ install /usr/src/nghttp2-1.4.0-1bl1.x86_64/inst/usr/lib/pkgconfig/* /usr/lib/pkgconfig
- 上記の体たらくなので,マニュアルでインストール。なんてこったい!
やり残し: setup-x86_64.exe で自前リポを使うこと。
追記(2016/1/4):
libev-4.22 と nghttp2-1.6.0 が出たので, h2load.exe をリビルドした。
「Cygwin 上で h2load をビルドする。」への4件の返信
こんにちは
これはかなりがんばりましたね。
準備だけで記事3個くらいかけそうだし、
大分お腹いっぱいになりそうですな。
それと数日前にうけたテストと同じgpgコマンドが(w
https://nghttp2.org/documentation/h2load-howto.html#basic-usage
これがh2loadコマンドですか、
これからベンチマークの主流になるかもしれませんね?覚えることがふえそうだけど、apacheとかどうするんだろう。
くりくりさん,こんにちは。
> 大分お腹いっぱいになりそうですな。
まさしくその通りで,初めは準備とテストなどは分けて書くつもりだったのですが,だんだん面倒くさくなって, 1 個になってしまいました(汗)。
> それと数日前にうけたテストと同じgpgコマンドが(w
考えてみたら, Windows 上での GnuPG の使い方を書いたことがなかったなと思って,この機会に書いておこうかと……まあ,コマンドなんて, LINUX となんら変わりませんが。
> これからベンチマークの主流になるかもしれませんね?
> apacheとかどうするんだろう。
HTTPS が増えて来たらそうなるでしょうね。 ab を https://localhost に対して使おうとしたら, SSL not compiled in; no https support が出ました。ディストリによっては,コンパイル時に SSL が入っている ab もあるんでしょうか?
Windows 上に限らず,今は自分でビルドしないと h2load を使えないようですが,そのうち, mod_http2 と同じように 各 Web server ソフトのコアに含まれるようになるんじゃないですかね。
おはようございます。
https://wiki.php.net/todo/php70#timetable
明日こそはphp7がでるのか?
期待しています。
todosの方でも話題にでましたが、
コアに対応していないプラグインやテーマ以外にもphpのバージョンもありそうなんで簡単にバージョンアップできないでしょうね。
じっくり検証しませんと
>mod_http2 と同じように 各 Web
http/2よりhttpsが広まらない無理でしょうから
まだまだ先なのかな?
くりくりさん,おはようございます。
> 明日こそはphp7がでるのか?
延びちゃったみたいですよ。昨夜つうか今朝っつうか,まりあちゃんを 10.1.9 にし,ついでに, phpMyAdmin を 4.5.2 にしました。そのときに,一応 Apache, ActivePerl, PHP も見たんですが,またもや Anatol のメールで, 12/3 になると書いてありました。相変わらず,何かに手こずっているんでしょうかねぇ?
> まだまだ先なのかな?
でしょうか?でも,始まったら雪崩を打つことがあるからなぁ,ネットの世界は。雪崩の兆しに気をつけないといけないですよね。