title_parttitle_parttitle_part
静岡県浜松市であれこれソフトを開発している A.K.I Software のブログです。日々の開発日記やサーバー・セキュリティ関連の話題なども掲載。
<< 2024/04 >>123456789101112131415161718192021222324252627282930
《《《 ネットワーク機器の購入は Amazon で! 》》》
Powered by BLOM 小型Webサーバ開発中
小さくも大きくも閉じたりもしません
14/06/15 01:32 / pHTTPServer

MJRecorder に内蔵する為、Webサーバの開発に着手するという車輪の大再発明をするという愚行を行っているのですが(Indy とか使えばいいんですけどね。Indy 嫌いなので)
デバッグ用に作っている UI 付きアプリの方も凝り始めて、なんか立派な形になってきました。

photo


こんな形でデバッグとテストしているんですよ。

無意味に高機能化していまして

1)HTTP 1.1 半準拠(必要な箇所しか実装してない)
2)CGI 動きます。
3)帯域制限機能も内蔵
4)シングルドメインのみ(マルチドメインにすると、ドメイン単位での設定が必要になるので、取り合えずシングルで)
5)HTTP認証も最初から使えます。Digest認証もOK
6)HTTPS も OK
7)接続フィルタも内蔵
8)ログのローテートも OK(Apache2 のログは別のプロセス経由で行うのでちょっといやーん)
9)MIME 設定も可能
10)Class(VCL)として作っているので、1時間でサービスアプリに転用可能。
11)小規模用

などが出来ています。
コレでhttpエンジンは 70KB ととてもお得なサイズです。

なんで、凝っているかと言うと、PMail Server2 の Webメールで Webサーバが必要なんですが、お問い合わせ頂く3割くらいが Webサーバの設定なんですよ。

IIS や Apache で構築されたことがあるユーザーさんはサクサクと10分で設定が完了する訳ですが、そうでない場合は、ちょっと敷居が高い場合があります。

そんなんでちょっと Webサーバもフリー版みたいな感じでリリースしてみようかなー、なんて考えていたりします。
最初から MIME 設定とか入れておけば、基本フォルダの設定して Webmail 入れて開始するだけで OK という感じにしたいなと思っている訳です。

まぁある程度の人数が利用するのであれば、IIS や Apache の方が遥かに良いんですが、イントラで数人が使う程度や、管理者が pmam.exe を動かすだけであれば、これくらいの方がいいかな、と。

でも、Webmail だけ動かすのにポートを1個使うのは申し訳ないという気持ち(どんな気持ちだ)がありますので、今時の最低限として、Perl とか PHP くらいは動かせるようにしておきたいと思った訳です。

で、Perl については深く考えることも無く動作したのですが、PHP がちょっと動きません。

正確に言うと、php-cgi.exe を起動することもできて(アプリケーション上の)エラーも返ってこないのですが、404 を返してきます。

最初、cgi.force_redirect = の設定を忘れて、動かないよ!って出ていたのですが、これを設定しても 404 を出します。

ちなみに cgi.force_redirect = 1 に設定すれば OK!って書かれているサイトがありますが、これ内部リダイレクトのチェックをするかしないかの設定で、安易に 1 に設定するとリスクがあるそうです。詳しくは検索して下さい・・・

んで、404 エラーを出すのが Web サーバだと思って MIME 設定おかしかったかな?とトレースして追っていたのですが、どうにも違うようです。
php-cgi.exe 自身が 404 を返しています。
エラーログにすら出力されていません。

最初アクセス権がおかしいのかと思っていたのですが、普通にフォルダを作れば Users が入るので関係なし。
試しにコマンドラインで動かしたのですが、コマンドラインでは問題なく動きます。

ふむ。http 経由で実行された場合のみ、なにかチェックが働いて 404 を出しているようです。

http 経由で起動しているかどうかをアプリケーション側で検知するには・・・
1)親プロセスを確認する。
2)環境変数を確認する。

のどっちかです。でも1は IIS や Apache 以外の場合は動かなくなるのでさすがにそんな杜撰な実装は無いだろうってことで、2の環境変数と狙いをつけます。

環境変数は、SERVER_NAME とか REMOTE_ADDR とかですね。
404 File not found が出ているので、QUERY_STRING がおかしいかなと思ったのですが、特に問題なし。
うーん、他に CGI で必要な環境変数ってあったかな?とコードを眺めていたのですが、SCRIPT_NAME もあるしなぁ・・・

あ!SCRIPT_FILENAME って環境変数を設定していないわ。

んで、SCRIPT_FILENAME を環境変数にセットして test.php を渡してみると

photo


ビンゴでーす!
SCRIPT_FILENAME って殆ど使ったこと無いからド忘れしていましたわ。

てなことで、これも近日中に公開できたらいいななんて考えています。

[更新日付:2014/08/23 00:27:59]
トラックバックを見る(0)
Log Link [https://akisoftware.com/cgi-bin/blom.exe?akisoft+sl+02a61b14aa7409d8031a6ccf61b72f9285b51d53]
TB Link [https://akisoftware.com/cgi-bin/blom.exe?akisoft+tb+02a61b14aa7409d8031a6ccf61b72f9285b51d53]

記事へのコメント

名前 : H.Matsuda (2014/07/09 08:57:45)

ついでに最新の状況をアップしましたので、続きのコメントはそちらへ。

WebDAV ってどうなんでしょうか?

私は WebDAV の必要が迫られるケースがなかったので未だ RFC すら読んでいないのですが(今10分程流し読みで読んできましたwそんなに難しくは無いですね。丁度必要な仮想フォルダや Digest認証は実装済みですしフォルダ単位の帯域制限も実装済みです)
SAMBA でいいんじゃないかなーなんて思ったりしています。

名前 : noppo (2014/07/09 07:30:24)

松田 様

いつもお世話になっております。

おもしろそうですね。
安定板が出たら使いたいです。
ただし、私的には・・・。

・マルチドメイン
・WebDAV(あれば便利・・・。)
・WebCabinet内臓(帯域制限等が実現できれば^^;)

まであれば、レジストしてでも使いたいです。

松田さんであれば、一気にまとまった時間が空けば、
数時間で作成してくれそうな気がします。ぉぃ

期待してます。

名前
コメントキー
 
コメントする時はキーを正確に入力して下さい
コメント
アドレスを含んだコメントはできません
© 2008-10 A.K.I Software all rights reserved.