Wyvern: ミニウェブサーバ

更新履歴

[2007/10/02 (Tue)]
wyvern 2.2.10-RELEASE を公開。
連想配列処理に潜在的な Buffer Overflow の危険性があったのを排除。 未対応のプロトコルでアクセスされた場合に、落ちる不具合に対処。

[2007/09/03 (Mon)]
wyvern 2.2.9-RELEASE を公開。
リクエスト処理でエンバグしていたのに対処。

[2007/08/21 (Tue)]
wyvern 2.2.8-RELEASE を公開。
レスポンスヘッダは writev(2) を利用するように改良。 POST メソッドの送信データサイズを <max-post-size> で指定可能にした。 SQLite2 のサポートをやめた。

[2007/07/06 (Fri)]
wyvern 2.2.7-RELEASE を公開。
PostgreSQLSQLite3 をバックエンドに利用した ログモジュールとユーザ認証モジュールなどを実装。

[2005/08/31 (Wed)]
wyvern 2.2.1.7-RELEASE を公開。
ユーザ認証モジュールでシステム領域の認証が正常に動作しない不具合を解決。

[2005/08/10 (Wed)]
wyvern 2.2.1-RELEASE を公開。
Mutex のバグにより接続を維持したまま暴走する不具合を解決。 SQLite3 を利用したログモジュールを実装。

[2005/02/09 (Wed)]
wyvern 2.2-RELEASE を公開。
マルチスレッド化や設定ファイルの XML 化など全面書き換えしました。 そのため、2.0系/2.1系との互換性はありません。 また、実行サイズも若干大きくなりましたが、パフォーマンスも向上しました。 実運用でほぼ問題ないようなので公開します。 詳細は、オンラインマニュアルをどうぞ。
2005年2月10日 OpenBSD-3.4 と NetBSD-1.6.2 対応版に置き換えました。FreeBSDでの動作変更はありません。

[2003/11/28 (Fri)]
wyvern-2.1.2 および wyvern-2.0.8 をリリース。
wyvern-2.1.2 は、ログファイルのタイムスタンプがローカル時間になりました。 wyvern-2.0.8 は、IA64 でコンパイルできない不具合に対応しただけです。 ちなみに、現在の最新版は wyvern-2.2 だけど未公開です。

[2003/10/10 (Fri)]
ウィルスチェックソフトがマニュアル中の SSI 関係の記述にある 実行例を Unix.Penguin と誤検知するようです。 多くの方からご指摘されましたので、ここに明記しておきます。 作者としては、ウィルスに感染したソースコードではないと断言しますが、 本ソフトウェアを使用するしないは、利用者の方の判断にお任せします。

2.1系の方針は、安全で拡張性のある安定したちっちゃいウェブサーバの実装です。 2.0系からの主な変更点は次のとおりです。

  1. とにかくセキュリティ重視の実装
  2. モジュール管理構造の改良
  3. SuExec機能を実装
  4. 再設計によるパフォーマンスの向上
  5. syslogd 経由のログ収集の廃止
  6. HTTP/1.1 パイプラインリクエストに対応
  7. デフォルトで IPv4/IPv6 どちらも対応
  8. その他バグフィックスなど

概要

Wyvern は、 シンプルな機能設計と簡単な設定操作および安全で堅牢なウェブサーバを 目標に開発を続けているウェブサーバです。
サブノート上での運用を考慮しているため、少ないメモリでも動作するように、 実行サイズを小さく、低負荷となるように設計しています。 組み込み機器の制御用ウェブサーバとしても利用可能です。 更なる安全性と安定性を備えたウェブサーバの実現を目指して実装を続けています。 以下の特徴を備えています。

  1. select() と Non-blocking I/O による単一プロセス/単一スレッド(2.0系/2.1系)マルチスレッド(2.2系)での動作
  2. HTTP/1.1 に準拠(RFC2616 を参考に部分的実装)
  3. ネームベースのバーチャルホスト機能の提供
  4. エラードキュメントをカスタマイズ可能
  5. IPv6 対応(SSL と IP アドレスによるアクセス制御は未対応)
  6. SSL による暗号化通信が可能
  7. SuExec機能を用いたCGIプログラムの実行が可能
  8. モジュールによる機能の拡張
  9. Basic/Digest認証に対応(2.2系)
  10. 認証パスワードは MD5 形式で管理(2.0系/2.1系)
  11. セキュリティに配慮
  12. 導入と設定が簡単
  13. 低負荷/高パフォーマンスを実現
  14. 実行サイズが小さい

ドキュメント

オンラインマニュアルは、ソースアーカイブに同梱されているままの状態です。 そのため、本ウェブページに戻って来る場合は、 ブラウザの「戻る」ボタンを利用して下さい。

Wyvern 2.2.1.7-RELEASE(2005/08/31)

Wyvern 2.1.2-RELEASE(2003/11/28)

Wyvern 2.0.8-RELEASE(2003/11/28)

ダウンロード

Wyvern 2.2.10-RELEASE(2007/10/02)

XML解析ライブラリ sxml は、 wyvern 設定ファイルの解析に利用していますので、 一緒にダウンロードしてください。 なお、スレッドライブラリ wtl は wyvern 本体に同梱されています。 ソースコードは、すべて tar + bzip2 でアーカイブ圧縮されています。

パッケージ名 サイズ MD5値
wyvern-2.2.10.tar.gz 569,999 f6d76a6c691540786f40a3919cdb2cad
wyvern-2.2.10.tar.bz2 500,866 07f20b892d03d376574966ae940133b2
wtl-1.0.2.tar.bz2 129,359 4b5d22cac7c540a7e6f1fff415062bd1

Wyvern 2.2系は、2.0系/2.1系と設定ファイルおよびモジュールの互換性はありません。 また、マルチスレッド形式を採用していますが、 pthread などの POSIX準拠のライブラリを利用していません。

Wyvern 2.1.2-RELEASE(2003/11/28)

パッケージ名 サイズ MD5値
2.1.2-RELEASE (gzip版) 502,841 efd12c369b8446bd37518208ecd3908f
2.1.2-RELEASE (bzip2版) 425,115 c859a86344269a1ac0bf6f0da35fe632

Wyvern 2.0.8-RELEASE(2003/11/28)

パッケージ名 サイズ MD5値
2.0.8-RELEASE (gzip版) 454,825 6b40395a9e32d5101d9e7878dd18b6d2
2.0.8-RELEASE (bzip2版) 370,698 bc524f4a30b0ff5b55a63de0abc294b9

実装時に参考にしたRFCアーカイブ
参考RFC (bzip2 版のみ) (サイズ:774,487 バイト)

おまけ:超ミニミニウェブサーバ

CGI などを使用せず静的なコンテンツのみの配信を行いたい場合、 Wyvern 本体よりも高速に動作するウェブサーバがあります。 ライブラリの使用例として実装したプログラムで、 ソースコード中に lib/examples/httpd.c というファイル名で入っています。 Wyvern をコンパイルした後であれば、次の手順でコンパイルできます。

  % cd lib/examples
  % make httpd

起動も簡単で、オプションはすべてコマンドラインの引数で指定します。 ただし、デーモン化しないので手動でバックグラウンドのプロセスにします。

  % ./httpd -a 192.168.1.23 -p 80 -d /usr/local/www/htdocs
    -l /var/log/httpd.log -u www &
Google