我正在尝试设置一个lighttpd服务器,它将运行用haskell编写的fastCGI程序。 到目前为止,我得到了这个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时,它只是开始加载网页并继续无限期地加载它而不显示任何内容。
我怀疑我的lighttpd.conf文件错误或不完整但在查看文档后我找不到它的错误。
答案 0 :(得分:2)
我认为你想使用Network.FastCGI而不是Network.CGI。您还必须确保将Haskell程序配置为在套接字的正确位置查找或者在正确的端口上进行侦听。
答案 1 :(得分:1)
你的Haskell程序看起来像CGI脚本,而不是fastCGI脚本。
尝试将其作为CGI脚本运行(或者甚至尝试从命令行运行它 - 它应该在终止之前输出一些标题然后输出“Hello world”页面。)