【问题标题】:Configure Yesod app as CGI将 Yesod 应用程序配置为 CGI
【发布时间】:2012-10-28 18:47:15
【问题描述】:

给定一个新搭建的 Yesod 应用程序,要获得一个充当 CGI 程序的可执行文件所需的最小更改集是多少?包装程序是可以接受的。如果 'cabal build' 构建的默认可执行文件是 CGI 程序,则必须为其设置哪些环境变量才能充当 CGI(默认情况下,它将绑定到端口并尝试在那里提供请求。)

对于 FastCGI 的类似答案也将不胜感激。

【问题讨论】:

    标签: haskell cgi fastcgi yesod


    【解决方案1】:

    使用以下内容更新您的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 添加到依赖项列表中。

    【讨论】:

    • 这会破坏“yesod devel”吗?
    • 只是为了澄清原因:脚手架站点被构建为一个库,它(基本上)提供了一个IO Application。然后有两个可执行文件:main.hs 用于生产,devel.hs 用于yesod devel。所以对main.hs的更改对开发没有影响。
    猜你喜欢
    • 2021-01-07
    • 1970-01-01
    • 2016-02-12
    • 2013-05-31
    • 2019-11-05
    • 2023-03-07
    • 2017-11-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多