Configure Yesod app as CGI

cgi, fastcgi, haskell, yesod

Solution

Update your `app/main.hs` with the following:

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

You'll need to add `wai-extra` to the dependencies in your cabal file. To use FastCGI instead, replace `Network.Wai.Handler.CGI` with `Network.Wai.Handler.FastCGI` and add `wai-handler-fastcgi` to the dependency list instead.

Problem

Given a freshly scaffolded Yesod application, what is the minimal set of changes necessary to get an executable which acts as a CGI program? A wrapper program is acceptable. If the default executable built by 'cabal build' is a CGI program, what environment variables must be set for it to act as a CGI (as by default it will bind to a port and attempt to serve requests there.) A similar answer for FastCGI would also be appreciated.

Original source