4

私はHaskellWarpを使用して構築されたピクセルサーバーに取り組んでおり、デーモンモードで実行する方法を見つけるのに苦労しています。

ワープはうまくrun機能します-Network.Wai.Handler.WarpからHTTPを提供し、runTLSNetwork.Wai.Handler.WarpTLSからHTTPSを提供し、新しいスレッドを生成することで両方を実行できます。

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

私の問題は、MissingH(System.Daemon)からdetachDaemonを使用して、Ubuntuでサーバーをデタッチしてバックグラウンドで実行する方法を理解することです。

私のMain.hsで、次のdetachDaemonようなアクションを追加しようとしました。

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

しかし、プログラムはエラーなしで、実行時に何も表示されずにサイレントに終了しますps -ef | grep snowhuskyd

どのように使用すればよいdetachDaemonですか?Warpでも可能ですか?detachDaemonWebでの使用例は1つも見つかりません。助けをいただければ幸いです。

4

1 に答える 1

6

私はもう少し掘り下げてこのスレッドを見つけました。ここで、Yesodユーザー(YesodはWarp上に構築されたWebフレームワークです)がhdaemoniz e(別のデーモン化ライブラリ)を使用してYesodをデーモン化する方法を尋ね、Yesod/Warpヘッド本町Michaelスノイマンは言う:

余談ですが、デーモン化がプロセスを実行する正しい方法であるという考えには同意せず、Upstart(またはdaemontools、またはangel、または...)が正しいアプローチであると思います。しかし、私は他の人がこれについて異なる意見を持っていることを知っています。

言い換えれば、それは私たちが修正できるものではないと思います。この特定のケースでは、修正する価値はないと思います。

BumpチームのAngelは特に見栄えがよく、Haskellで書かれているので、自分のアプリに靴べらを付けようとするのではなく、おそらくそれを使うべきです。

人々が他のアイデアを持っている場合に備えて、今のところこの質問は開いたままにしておきます!

于 2012-03-29T23:15:59.873 に答える