2016年1月8日金曜日

超軽量httpdであるmongooseとcivetwebをコンパイルして使ってみた

最近、Raspberry Piなどの小型マイコンボードで工作するのが流行っています。
このようなボードをスマホから遠隔操作するようなことをしたい時に必要になるのが、cgiを実行できるhttpdです。

Apacheでも良いんですが、もっと軽量でしかも簡単にソースコードを変更できて、簡単にコンパイルできてCGIが実行できるものでないと、サーバ側を作るのがめんどくさくて、ちょっとした遊び感覚でサーバを作れないです。

そこで、最近のオープンソースのhttpdを色々調べてみました。
そうしたところ、どうもmongooseというオープンソースのhttpdがかなり使えそうです。
https://code.google.com/p/mongoose/

このライブラリは、まだあまり日本語で記事になっていないので今回ブログを書くことにしたのですが、とても軽量です。

どのくらい軽量化というと、c言語で書かれていてメインの部分はたった一つのソースファイルでできています。しかも、linux,windows,macos,ios,androidなどあらゆるosで動きます。

コンパイルも超簡単。
gcc mongoose.c simplest_web_server.c
と打てばサーバが作れてしまいます。
もちろんWindowsのVisualStudioやMacOSXのXcodeでもコンパイルできます。
ライブラリにはhttpのクライアントもあるので、このライブラリだけでサーバとクライアントの両方を作ることができます。本当にすごいです。

唯一の不満はソースコードがGPLである点。ソースがGPLではスマホ用のhttpdが欲しい時に商用では使えないじゃん。

ところが、すごいことに、このmongooseから派生したcivetwebというhttpdがあるのです。
https://github.com/civetweb/civetweb

こちらはホームページがあまり親切ではありませんが、BSDライセンスなので自由に改変を行うことができます。mongooseから派生しているので、使い方もmongooseとほとんど同じでとても便利。

ということでとりあえず、mongooseとcivetwebでサーバを作ってみました。
何に使うかはまだ決まってません・・・・。

0 件のコメント:

コメントを投稿