2

Haskell で書かれた fastCGI プログラムを実行する lighttpd サーバーをセットアップしようとしています。これまでのところ、私はこのhaskellプログラムを手に入れました:

import Network.CGI
import Text.XHtml

page :: Html 
page = body << h1 << "Hello World!"

cgiMain :: CGI CGIResult
cgiMain = output $ renderHtml page

main :: IO ()
main = runCGI $ handleErrors cgiMain

そしてこのlighttpd構成:

server.document-root = "/home/userwww/www/" 

server.port = 80

server.username = "userwww" 
server.groupname = "userwww" 

mimetype.assign = (
  ".html" => "text/html", 
  ".txt" => "text/plain",
  ".jpg" => "image/jpeg",
  ".png" => "image/png" 
)

static-file.exclude-extensions = (".php", ".rb", "~", ".inc" )
index-file.names = ( "index.html" )
server.event-handler = "poll"
server.modules              = (
            "mod_access",
            "mod_accesslog",
            "mod_fastcgi",
            "mod_rewrite",
            "mod_cgi",
            "mod_auth"
)


fastcgi.server = ("/test" =>
                   ("test" =>
                     ("socket" => "/tmp/test.sock",
                      "bin-path" => "/home/userwww/www/test.fcgi",
                      "check-local" => "disable"
                     )
                   )
                 )

Lighttpd は正常に起動し、index.html を開くと動作しますが、 http: //127.0.0.1/testを開こうとすると、Web ページの読み込みが開始され、何も表示されずに無限に読み込まれ続けます。

私の lighttpd.conf ファイルが間違っているか不完全であると思われますが、ドキュメントを見ても何が問題なのかわかりません。

4

2 に答える 2

2

Network.CGIの代わりにNetwork.FastCGIを使用したいと思います。また、Haskellプログラムを構成して、ソケットを適切な場所で探すか、適切なポートでリッスンするようにする必要があります。

于 2009-12-30T18:29:17.143 に答える
1

あなたのHaskellプログラムは、fastCGIスクリプトではなく、CGIスクリプトのように見えます。

CGIスクリプトとして実行してみてください(またはコマンドラインから実行してみてください---終了する前にいくつかのヘッダーを出力してから「Helloworld」ページを出力する必要があります)。

于 2009-12-30T18:13:38.083 に答える