我已经阅读了我在这里可以找到的每个Haskell部署线程以及更广泛的网络上的几个,但我仍然没有得到一件事.如果我为我的服务器编译了一个应用程序,并且可以ssh并运行它,我该如何运行该东西呢?假设我使用的是HTTP接口(不是FastCGI).
例如,对于node.js,我们使用cluster来启动在几个处理器内核上启动的应用程序,然后为centOS创建一个init.d脚本来运行,daemonize,有一个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相同的过程.您创建一个init脚本,以各种UNIX运行模式启动可执行文件,Bob是您的叔叔.
与任何其他Web应用程序一样,您可能希望使用将流量重定向到Web应用程序的前端服务器(这就是您可能不希望将端口80用于Web应用程序的原因).有关如何执行此操作的详细信息,请访问HaskellWiki上的Web/Deploy页面.