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.