2012-10-28 33 views
6

Với ứng dụng Yesod được dàn dựng mới, bộ thay đổi tối thiểu cần thiết để có được tệp thực thi hoạt động như một chương trình CGI là gì? Một chương trình bao bọc là chấp nhận được. Nếu thực thi mặc định được xây dựng bởi 'xây dựng cabal' là một chương trình CGI, các biến môi trường nào phải được đặt cho nó hoạt động như một CGI (như mặc định nó sẽ liên kết với một cổng và cố gắng phục vụ các yêu cầu ở đó.)Định cấu hình ứng dụng Yesod dưới dạng CGI

Một câu trả lời tương tự cho FastCGI cũng sẽ được đánh giá cao.

Trả lời

7

Cập nhật của bạn app/main.hs như sau:

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 

Bạn sẽ cần phải thêm wai-extra đến sự phụ thuộc trong file cabal của bạn. Để sử dụng FastCGI thay thế, thay thế Network.Wai.Handler.CGI bằng Network.Wai.Handler.FastCGI và thêm wai-handler-fastcgi vào danh sách phụ thuộc thay thế.

+0

Điều này có vi phạm 'yesod devel' không? –

+0

Câu trả lời dường như không có! :-) –

+1

Chỉ cần làm rõ lý do tại sao: trang web được xây dựng được xây dựng như một thư viện (về bản chất) cung cấp một 'Ứng dụng IO'. Sau đó, có hai tập tin thực thi: 'main.hs' được sử dụng để sản xuất và' devel.hs' được sử dụng cho 'yesod devel'. Vì vậy, các thay đổi đối với 'main.hs' không ảnh hưởng đến sự phát triển. –