Ponieważ nie wspomnisz, z której struktury korzystasz, po prostu odpowiem na to pytanie w ogólności.
Dzięki Haskell nie trzeba uruchamiać wielu wystąpień (w klastrze) aplikacji internetowej, ponieważ jeśli aplikacja obsługuje współbieżność, zwykle korzysta z wielu wątków wewnętrznie. Zamiast tego, chcesz się upewnić, że aplikacja jest skompilowana z flagami -threaded
i -rtsopts
. Następnie, po uruchomieniu aplikacji, przekazujesz flagi +RTS -N<number of simultaneous threads>
. Jeśli użyjesz aplikacji internetowej Snap działającej na porcie 1234 na 8-rdzeniowym komputerze z Intel® Hyper-Threading, na przykład uruchomisz go z my-server -p 1234 +RTS -N16
, aby uzyskać równoległość do maksymalnie 16 wątków systemu operacyjnego.
Aby zemonizować aplikację internetową, należy wykonać tę samą procedurę, co w przypadku pliku node.js. Tworzysz skrypt init, który uruchamia plik wykonywalny w różnych trybach uruchamiania w systemie UNIX, a Bob jest twoim wujkiem.
Podobnie jak w przypadku każdej innej aplikacji internetowej, możesz użyć serwera front end, który przekierowuje ruch do Twojej aplikacji internetowej (dlatego możesz nie chcieć używać portu 80 w swoich aplikacjach internetowych). Aby uzyskać szczegółowe informacje, jak to zrobić, odwiedź stronę the Web/Deploy page on HaskellWiki.
Czy używasz określonego frameworka? (Happstack/Yesod/etc?) – alternative
Tak. :) Interesuje mnie zarówno Happstack, jak i Snap. Gram z Hackem 2, ale używa on serwera Snapa. –