我已经阅读了我在这里可以找到的每个Haskell部署线程以及在更广泛的Web上找到的每个线程,但是我仍然一无所获。如果我已经为服务器编译了一个应用程序,并且可以ssh并运行它,那么我该如何运行它呢?假设我使用的是HTTP接口(interface)(不是FastCGI)。

例如,使用node.js,我们使用集群使应用程序在多个处理器内核上启动,然后为centOS创建一个init.d脚本来使事物运行,守护进程,具有pid文件等。

如何为Haskell应用程序执行此操作?

最佳答案

由于您没有提到您使用的是哪个框架,因此我将通常回答这个问题。

使用Haskell,您不必启动Web应用程序的多个实例(在群集中),因为如果应用程序支持并发,则它通常在内部使用多个线程。相反,您要做的是确保使用-threaded-rtsopts标志编译应用程序。然后,在运行应用程序时,传递标志+RTS -N<number of simultaneous threads>。例如,如果您使用在具有英特尔®超线程技术的8核计算机上的端口1234上运行的Snap Web应用程序,则应使用my-server -p 1234 +RTS -N16对其进行启动,以使其最多可并行化16个OS线程。

要守护Web应用程序,请使用与node.js相同的过程。您创建了一个初始化脚本,该脚本以各种UNIX运行模式启动可执行文件,而Bob是您的叔叔。

与任何其他Web应用程序一样,您可能希望使用将流量重定向到Web应用程序的前端服务器(这就是为什么您可能不想为Web应用程序使用端口80的原因)。有关如何执行此操作的详细信息,请访问the Web/Deploy page on HaskellWiki

关于haskell - 如何运行已部署的Haskell Web应用程序,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8827413/

10-12 03:58
查看更多