2012-10-28 13 views
6

Biorąc pod uwagę świeżo złoŜoną aplikację Yesod, jaki jest minimalny zestaw zmian koniecznych do uzyskania pliku wykonywalnego, który działa jako program CGI? Program opakowania jest akceptowalny. Jeśli domyślny plik wykonywalny zbudowany przez 'cabal build' jest programem CGI, jakie zmienne środowiskowe muszą być ustawione, aby działał jako CGI (domyślnie będzie wiązał port i będzie próbował obsługiwać żądania tam.)Konfiguracja aplikacji Yesod jako CGI

Podobna odpowiedź dla FastCGI również byłaby doceniana.

Odpowiedz

7

zaktualizować swój app/main.hs z następujących czynności:

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 

Musisz dodać wai-extra z zależnościami w pliku cabal. Zamiast tego użyj FastCGI, zamień Network.Wai.Handler.CGI na Network.Wai.Handler.FastCGI i dodaj wai-handler-fastcgi do listy zależności.

+0

Czy to przełamuje "takod devel"? –

+0

Odpowiedź brzmi "nie"! :-) –

+1

Tylko po to, by wyjaśnić, dlaczego: strona z rusztowaniem jest zbudowana jako biblioteka, która (zasadniczo) zapewnia "Aplikację IO". Następnie są dwa pliki wykonywalne: 'main.hs' jest używany do produkcji i' devel.hs' jest używany do 'yesod devel'. Tak więc zmiany w 'main.hs' nie mają wpływu na rozwój. –