2012-10-28 89 views
6

鑑於一個新搭腳架的Yesod應用程序,獲取可充當CGI程序的可執行文件所需的最少一組更改是什麼?包裝程序是可以接受的。如果'cabal build'構建的默認可執行文件是CGI程序,則必須設置哪些環境變量以充當CGI(默認情況下,它將綁定到端口並嘗試在那裏提供請求)。將Yesod應用程序配置爲CGI

對於FastCGI也會有同樣的答案。

回答

7

更新您的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到依賴於你的陰謀文件。若要使用FastCGI,請將Network.Wai.Handler.CGI替換爲​​,並將wai-handler-fastcgi替換爲依賴項列表。

+0

這是否打破'yesod devel'? –

+0

答案似乎不是! :-) –

+1

只是爲了闡明原因:腳手架站點是作爲一個庫(基本上)提供了一個IO應用程序。然後有兩個可執行文件:'main.hs'用於生產,'devel.hs'用於'yesod devel'。所以'main.hs'的變化對開發沒有影響。 –