Как запустить Warp в режиме демона? - PullRequest
4 голосов
/ 29 марта 2012

Я работал на пиксельном сервере, построенном с использованием Haskell Warp, и изо всех сил пытался понять, как запустить его в демонизированном режиме.

Warp отлично работает - я могу использовать run из сети.Wai.Handler.Warp для обслуживания HTTP, runTLS из Network.Wai.Handler.WarpTLS для обслуживания HTTPS, и я могу запустить оба из них, создав новый поток:

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

Моя проблема заключается в выяснении того, какиспользовать detachDaemon от MissingH (System.Daemon), чтобы отключить и запустить мой сервер в фоновом режиме в Ubuntu.

В моем файле Main.hs я попытался добавить действие detachDaemonвот так:

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

но программа просто тихо завершает работу без ошибок и ничего не появляется, когда я запускаю ps -ef | grep snowhuskyd.

Как я должен использовать detachDaemon - этоэто вообще возможно с Warp?Я не могу найти ни одного примера использования detachDaemon в Интернете - любая помощь будет с благодарностью получена!

1 Ответ

6 голосов
/ 30 марта 2012

Я сделал еще несколько копаний и нашел эту ветку , где пользователь Yesod (Yesod - веб-фреймворк, построенный на основе Warp) спрашивает, как демонизировать Yesod с помощью hdaemoniz e (еще одна библиотека для демонизации), и главный секретарь Yesod / Warp Майкл Снойман говорит:

В качестве отступления, я не согласен с представлением о том, что демон - это право. способ запустить процесс, и думать, что Upstart (или daemontools, или ангел или ...) это правильный подход. Но я знаю, что другие разные мнения на этот счет.

Другими словами: я не думаю, что это что-то, что мы можем исправить, и в этом частный случай, я не думаю, что это стоит исправить.

Angel из команды Bump выглядит особенно красиво, и написано на Хаскеле, так что, возможно, я должен пойти с этим, а не пытаться внедрить демонизацию в свое собственное приложение.

Я пока оставлю этот вопрос открытым, если у людей появятся другие идеи!

...