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

2024-02-23

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

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

project-name -p 8000

snap 是否带有它自己的网络服务器(看起来像这样 http://hackage.haskell.org/package/snap-server-0.7.0.1),如果是这样,我该如何配置它作为某种守护进程运行?

有小费吗?

Edit 2:

On the wiki http://snapframework.com/docs/tutorials/snap-api他们说:

snap-server是一个HTTP服务器库,支持接口 在 snap-core 中定义。

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

包括自己的服务器。请参阅网络/框架 http://www.haskell.org/haskellwiki/Web/Frameworks

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

Edit:相关问题:部署使用 Snap 框架的 Haskell 代码 https://stackoverflow.com/questions/7539450/deploy-haskell-code-that-uses-the-snap-framework


好的,所以经过一些digging https://stackoverflow.com/a/7544384/74865 and asking https://serverfault.com/questions/404251/how-to-properly-configure-a-web-service-ubuntu-12-04,这就是我想出的。

Big idea

将 Snap 应用程序编译为二进制文件,然后在以下命令的帮助下将其作为服务运行upstart http://upstart.ubuntu.com/cookbook/.

一步步

  1. 编译您的网络应用程序。对于此示例,我们假设 Web 应用程序位于/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。您可以将其移至您喜欢的任何位置,但我们会将其留在那里。

  2. 在你的应用程序文件夹中创建一个日志,否则snap会抱怨:

    $ mkdir /home/john/webapps/mysite/log
    
  3. 现在我们将创建一个运行我们的 web 应用程序的服务。为此,我们将使用 Ubuntu 的服务工具,名为upstart http://upstart.ubuntu.com/cookbook/.

    a) 我们简单地通过创建一个conf文件来命名我们的服务,其中包含所需的名称/etc/init/目录。我们就这样称呼它吧mysite:

    $ sudo vi /etc/init/mysite.conf
    

    b) 现在让我们添加我们的服务的描述:

    start on startup
    chdir /home/john/webapps/mysite
    exec /home/john/.cabal/bin/mysite -p 80
    

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

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

    最后,我们指定实际将作为服务运行的二进制文件:/home/john/.cabal/bin/mysite。我们通过-p 80参数到 snap web 服务器以使其在端口 80 上运行。(注意:您必须禁用所有 apache 和 nginx 服务器,以便它们不再占用该端口)

  4. 完毕。您可以检查它是否正在运行,如果需要,可以手动启动它:

    initctl list | grep mysite
    initctl start mysite
    
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在生产中运行 Snap haskell webapp? 的相关文章

随机推荐