2012-03-29 6 views
4

저는 하스켈 워프 (Haskell Warp)를 사용하여 빌드 된 픽셀 서버에서 작업 해 왔으며 데몬 모드로 실행하는 방법을 고민하고 있습니다.워프를 데몬 모드로 실행하는 방법은 무엇입니까?

: 나는 HTTPS를 제공하기 위해 Network.Wai.Handler.WarpTLS에서 HTTP, runTLS를 제공하기 위해 Network.Wai.Handler.Warp에서 run을 사용할 수 있습니다, 나는 새 스레드를 산란에 의해 모두를 실행할 수 있습니다 -

워프 잘 작동

startBoth :: Config -> IO() 
startBoth config = do 
    _ <- forkIO $ startHTTPS config 
    startHTTP config 

내 문제는 MissingH (System.Daemon)의 detachDaemon에서 내 서버를 분리하고 우분투의 백그라운드에서 실행하는 방법을 알아내는 것입니다. 내 Main.hs에서

는 그래서 같은 detachDaemon 조치를 추가하는 시도했다 : 나는 ps -ef | grep snowhuskyd을 실행할 때

main :: IO() 
main = 
    detachDaemon >> cmdArgs options >>= getConfig . optionsConfig >>= start 

하지만 프로그램이 그럼 그냥 자동으로 오류없이 종료, 아무것도없이이 게재.

어떻게 사용해야합니까? detachDaemon - 워프로도 가능합니까? 웹상에 detachDaemon을 사용하는 한 가지 예를 찾을 수 없습니다 - 도움을 주신 분들께 감사드립니다!

답변

6

은 내가 Yesod/워프 좀 더 파고를 수행하고 Yesod 사용자가 (Yesod는 워프 위에 구축 된 웹 프레임 워크) Yesod이 hdaemoniz 전자 (다른 daemonization lib 디렉토리)를 사용하여 디먼 화하는 방법을 묻는 this thread을 발견하고, 한 헤드 혼쵸 마이클 Snoyman는 말한다 : 여담으로

, 내가 daemonizing이 프로세스를 실행 할 수있는 권리 방법이라는 개념에 동의하고, 생각 갑자기 출세 한 그 (또는 데몬 툴즈, 또는 천사, 또는 ...) 올바른 접근법입니다. 하지만 다른 사람들이 이것에 대한 의견이 인 것을 알고 있습니다.

다른 말로하면 : 나는 그것이 우리가 고칠 수있는 것이라고 생각하지 않으며,이 특별한 경우에, 나는 고칠 가치가 있다고 생각하지 않는다. 범프 팀

Angel

특히 멋진 외모, 그리고 하스켈로 작성, 그래서 아마도 내가 아니라 내 자신의 응용 프로그램에 daemonization 구둣 주걱하는 것보다, 그와 함께 가야한다.

사람들에게 다른 아이디어가있는 경우를 대비하여이 질문을 열어 두겠습니다.

+3

나는이 견해를 공유하고 외부에서 나의 데몬을 분리한다. 빠르고 더러운 해결책은 시스템에 start-stop-daemon을 사용하는 것입니다. –