【发布时间】:2012-10-28 18:47:15
【问题描述】:
给定一个新搭建的 Yesod 应用程序,要获得一个充当 CGI 程序的可执行文件所需的最小更改集是多少?包装程序是可以接受的。如果 'cabal build' 构建的默认可执行文件是 CGI 程序,则必须为其设置哪些环境变量才能充当 CGI(默认情况下,它将绑定到端口并尝试在那里提供请求。)
对于 FastCGI 的类似答案也将不胜感激。
【问题讨论】:
给定一个新搭建的 Yesod 应用程序,要获得一个充当 CGI 程序的可执行文件所需的最小更改集是多少?包装程序是可以接受的。如果 'cabal build' 构建的默认可执行文件是 CGI 程序,则必须为其设置哪些环境变量才能充当 CGI(默认情况下,它将绑定到端口并尝试在那里提供请求。)
对于 FastCGI 的类似答案也将不胜感激。
【问题讨论】:
使用以下内容更新您的app/main.hs:
import Prelude (IO, (>>=))
import Yesod.Default.Config (fromArgs)
import Yesod.Default.Main (defaultMain)
import Settings (parseExtra)
import Application (makeApplication)
import Network.Wai.Handler.CGI (run)
main :: IO ()
main = fromArgs parseExtra >>= makeApplication >>= run
您需要将wai-extra 添加到您的cabal 文件中的依赖项中。要改用 FastCGI,请将 Network.Wai.Handler.CGI 替换为 Network.Wai.Handler.FastCGI 并将 wai-handler-fastcgi 添加到依赖项列表中。
【讨论】:
IO Application。然后有两个可执行文件:main.hs 用于生产,devel.hs 用于yesod devel。所以对main.hs的更改对开发没有影响。