CADDYというHTTP2対応サーバーを見つけたので簡単に使ってみる。
Goで書かれていて、インストールは各プラットホーム毎のバイナリを適当に配置するだけなので、インストールが楽。
起動する
とりあえずPATHが通っているところに置いて叩いてみる。
$ caddy
0.0.0.0:2015
デフォルトポートが2015なのだけど、来年になったら2016になるのだろうか。
curlで叩いてヘッダを見てみる。
$ curl -I localhost:2015
HTTP/1.1 404 Not Found
Server: Caddy
Date: Tue, 12 May 2015 13:52:04 GMT
Content-Length: 13
Content-Type: text/plain; charset=utf-8
404だけど、とりあえず動いている。HTTP2はHTTPSじゃないと動かないので、HTTP/1.1なのが残念。
(CADDYのサイトはCADDYでホストされていて、HTTP2が使われていることをブラウザで確認しています)
設定を変える
CADDYの設定ファイルは-conf
オプションで任意のファイルを指定出来るけど、デフォルトではコマンドを叩いたディレクトリにあるCaddyfileを見るらしい。
1行目には必ずlistenするアドレスを書けということなので、ポートをデフォルトから変更したものを記述してみる。
$ echo "localhost:2016" > Caddyfile
$ caddy
localhost:2016
無事ポート2016で起動した。
ちなみに1行目と言うのは、設定値としての1行目で、コメントは普通にかける。コメントはapacheと同様、#
から始まる文字列。
静的ファイル配信
このままでは404を返すだけのサーバーなので、とりあえず静的ファイルを返すようにしてみる。
まずはドキュメントルートとなるディレクトリを作り、適当なHTMLファイルを置く。
$ mkdir public_html
$ echo "Hello, world" > public_html/index.html
次にCaddyfileをこんな感じに編集する。
root
はドキュメントルートを指定するディレクティブ。カッコでくくらずに、そのまま次の行に書いてもよいのだけど、書いた方が分かりやすいと思う。
# example
localhost:2016 {
root ./public_html/
}
再起動して、curlしてみる。
$ curl localhost:2016
Hello, world
無事、静的ファイルを配信出来た。
markdown配信
リダイレクトやプロキシといった機能の他に、CADDY特有の機能がいくつかある。その一つのmarkdown配信機能を使ってみる。
設定はmarkdownディレクティブの後ろに、適用するPATHを記述する。このPATHはリクエストのパスであると同時にmarkdownファイルを置くディレクトリの事も示すらしい。
つまりmarkdownファイルは、public_html/blogではなくblogというディレクトリに置く必要がある。
# example
localhost:2016 {
root ./public_html/
markdown /blog
}
次に記事を作る。
$ mkdir blog
$ echo "# Hello, markdown" > blog/hello.md
curlで確認。
$ curl localhost:2016/blog/hello.md
<!DOCTYPE html>
<html>
<head>
<title># Hello, markdown</title>
<meta charset="utf-8">
</head>
<body>
<h1>Hello, markdown</h1>
</body>
</html>
ソースを確認したところ、markdownの処理には https://github.com/russross/blackfriday を使っていた。
性能
性能について、FAQには正確に答えるのは難しいとしながら、概ね速いと書いてある。
Apacheよりは速くて、nginxよりちょっと遅いぐらいという事なので、実用上十分な速さと思っておけば良さそう。
CADDYのコンセプトは設定が簡単なWebサーバなので、それでよいのだと思う。
感想
全部の機能を試したわけではないけど、1バイナリで完結して、設定が簡単に出来て、それなりに速いという使い勝手の良いサーバーという印象。
ちょっとしたサーバーが欲しいのだけど、Apacheやnginxだと大げさ過ぎるとか、設定が面倒という時に重宝しそう。
あとはfcgiを使ったプロジェクトのルートディレクトリにCaddyfileを置いといて、git cloneしてcaddyと叩いたら開発環境として立ち上がるみたいな使い方とか。
小回りが効くので、応用範囲が広そう。
0 件のコメント:
コメントを投稿