gpt4 book ai didi

haskell - 如何在生产中运行 Snap haskell webapp?

转载 作者:行者123 更新时间:2023-12-03 09:21:19 24 4
gpt4 key购买 nike

我已经在我的生产 Ubuntu 服务器(在 EC2 上)上安装了 Snap/Haskell,并 checkout 了我的项目——但是我该如何运行它呢?

我的意思是,在本地,我从命令行运行它:

project-name -p 8000

snap 是否带有它自己的网络服务器( it looks like it ),如果是这样,我该如何配置它以作为某种守护进程运行?

有小费吗?

编辑2:

wiki他们说:

snap-server is an HTTP server library that supports the interface defined in snap-core.



在这里,关于“haskell web 代码的部署/后端选项”的 haskell wiki 说 Snap:

includes its own server. see Web/Frameworks



但是 如何 ?我将如何运行它自己的服务器?如果我只是对编程感兴趣,为什么我必须知道该死的东西的部署......

编辑:相关问题: Deploy Haskell code that uses the Snap Framework

最佳答案

好的,所以经过一些 diggingasking ,这就是我想出的。

大创意

将您的 Snap 应用程序编译成二进制文件,然后在 upstart 的帮助下将其作为服务运行.

一步步

  • 编译你的 web 应用程序。为了这个例子,我们假设 webapp 位于 /home/john/webapps/mysite :
    $ cd /home/john/webapps/mysite
    $ cabal install
    ...
    Preprocessing executable 'mysite` for 'mysite-0.1'...
    Installing executable(s) in /home/john/.cabal/bin

    如我们所见,二进制文件放在 /home/john/.cabal/bin 中。 .你可以把它移到你喜欢的任何地方,但我们会把它留在那里。
  • 在您的应用程序文件夹中创建一个日志,否则 snap 会报错:
    $ mkdir /home/john/webapps/mysite/log
  • 现在我们将创建一个运行我们的 webapp 的服务。为此,我们将使用名为 upstart 的 Ubuntu 服务工具。 .

    a) 我们只需在 /etc/init/ 中创建一个具有所需名称的 conf 文件来命名我们的服务。目录。我们就叫它mysite :
    $ sudo vi /etc/init/mysite.conf

    b) 现在让我们添加对我们的服务的描述:
    start on startup
    chdir /home/john/webapps/mysite
    exec /home/john/.cabal/bin/mysite -p 80

    首先,我们说服务应该在系统启动(或启动)时运行。

    其次,由于 snap 需要它是 snaplets和其他静态资源(比如我们之前创建的日志目录)——我们告诉服务在我们的项目目录中运行。

    最后,我们指定实际作为服务运行的二进制文件:/home/john/.cabal/bin/mysite .我们通过 -p 80 snap webserver 的参数,使其在端口 80 上运行。(注意:您必须禁用所有 apache 和 nginx 服务器,以便它们不再占用该端口)
  • 完毕。您可以检查它是否正在运行并在需要时手动启动它:
    initctl list | grep mysite
    initctl start mysite
  • 关于haskell - 如何在生产中运行 Snap haskell webapp?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11214167/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com