単純Webサーバー
ver1.10
概要
設定なしでシングルスレッドで動作する単純なWebサーバーです。
公開したいHTMLファイルや画像ファイルを配置するだけです。
なにも余計なことを考えずにただ動くだけのWebサーバーを目指して開発しました。
CGIも動作します。(各言語のインタープリタのインストールは必要になります)
CGIとして動作可能なものはPerl(.pl),PHP(.php),Ruby(.rb),Python(.py)や
C,C++,C#言語等で作成した.exeファイルです。
CGIはモジュールとしては動作しません。
ログファイルや一時ファイルは作成しません。
認証はサポートしてません。
apacheやIISのインストールとか設定に関わりたくない人にとっては最適なサーバーです。
jQuery UIやjQuery Mobileなどを利用したWebページを作成する時にも便利です。
(例 demoフォルダに本実行ファイルをコピーして実行するだけ)
ご利用にあたっての注意事項
商用、非商用に関わらず自由にご利用ください。他アプリケーションに組み込んでも結構です。
ただし、本アプリケーションの正常・不具合・不備に関わらず一切の責任は持ちません。
動作確認済環境
.NetFramework4.0以上の動作するWindows7,8.1
ver1.10の変更点
.NetFramework2.0から.NetFramework4.0を使うように変更。
mimeタイプをかなり追加。
インストール・実行方法
ダウンロードファイルを解凍して、tanjunwsv.exeを右クリックして管理者権限で実行してください。
画面上なにも変化しませんが、裏で動作してます。
ブラウザでhttp://localhost/readme.html
を開くとこのReadMeが見れると思います。
あとは、配信したいファイルを実行ファイルと同じフォルダ以下に配置してください
サブフォルダ名がそのままURLのパスになります。
基本的に終了させる方法はありませんが、どうしても終了させたい人は
タスクマネージャでプロセスを終了させてください。
(カスタマイズ可能な設定は以下の2つのみです)
公開フォルダを変更したい場合は、Windowsの環境変数として、
DOCUMENT_ROOT
を作成して、絶対パスを設定してください。
ポートを変更したい場合は(初期値は80番)
SERVER_PORT
を作成して、ポート番号を設定してください。
(その他の注意点)
CGIファイルは.cgiの拡張子でなくても結構ですが、
.cgiとした場合は1行目を解析して動作させてます。
1行目に記述するパスはよくあるLinux的な記述のままでも結構です。
例:
#!/usr/bin/perl
上記の場合、perlを実行します。perl.exeのフォルダが環境変数PATHに登録されている
必要があります。
PHPの場合はphp.exeよりも自動的にphp-cgi.exeを優先的に実行するようにしてます。
CGIの実行はプロセスを起動して、標準出力されたものを一括してクライアントに返します。
C#言語等でCGIを作成する場合は、環境変数(GETなどの場合)や標準入力(POST)を利用することで、
作成できます。 C#の場合、例えばこんな感じです。(ビルドは各自で行ってください)
(System.Webへの参照設定必要)
using System;
using System.Collections.Generic;
using System.Text;
using System.IO;
namespace test
{
class Program
{
static void Main(string[] args)
{
string method = Environment.GetEnvironmentVariable("REQUEST_METHOD");
string query="";
if (method == "GET")
{
query = Environment.GetEnvironmentVariable("QUERY_STRING");
}
if (method == "POST")
{
query = Console.In.ReadToEnd();
Encoding encoding = Encoding.GetEncoding("Shift-JIS");
query = System.Web.HttpUtility.UrlDecode(query, encoding);
}
Console.WriteLine("Content-Type: text/html");
Console.WriteLine("");
Console.WriteLine("");
Console.WriteLine("");
Console.WriteLine("");
Console.WriteLine("");
Console.WriteLine("METHOD="+method + "
");
Console.WriteLine("QUERY="+query+"
");
Console.WriteLine("");
Console.WriteLine("");
}
}
}
最後に
Javaのclassファイルとかjarファイルとかも動作したりしますが、サーブレットやJSPが
動作する訳ではなく、混乱を招くので説明しません。
ASPやASP.netも動作しませんので、C#が使えても意味ないかもしれませんが、
スクリプト言語以外のCGIに関するサンプルが世の中少ないですし、
初心者の方がコンパイラ言語でCGIが作れないと誤解しないように、C#のサンプルを掲載しました。
個人的にはC#と.NetFrameworkでCGIを作るのも悪くないと考えてます。