Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Configure Yesod app as CGI

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.

like image 275
Edward Z. Yang Avatar asked Oct 28 '12 08:10

Edward Z. Yang


1 Answers

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.

like image 170
Michael Snoyman Avatar answered Sep 28 '22 10:09

Michael Snoyman