【问题标题】:Haskell Snap: Application deployment and run-time dependenciesHaskell Snap:应用程序部署和运行时依赖项
【发布时间】:2012-04-15 21:08:37
【问题描述】:

清理 Snap 项目源目录(删除 dist)会产生以下抱怨:

A web handler threw an exception. Details:
GHC error: can't find a package database at dist/package.conf.inplace

所以如果我清理源目录它会停止工作?只有当我使用开发标志编译时才会发生这种情况吗?

这让我想到了快照应用程序部署的问题。 我们实际上 rsync 到服务器的内容是什么,运行时依赖项是什么? 我当然不想在部署服务器上安装整个 haskell 平台。 我在服务器上需要的只是项目可执行文件和 *.tpl、*.css 等静态文件。这样是否正确?

我可以看到两种部署应用程序的方法:rsync 可执行文件及其依赖项,或者创建二进制分发 tarball 并将其转移到服务器。 常见的做法是什么?

我需要在二进制 tarball 或 rsync 脚本中包含哪些文件才能满足所有运行时依赖项?

谢谢

【问题讨论】:

    标签: haskell haskell-snap-framework


    【解决方案1】:

    首先,是的,这只是使用开发模式的结果。它使用编译环境中的各种工件。 (这是确保在进行动态重新加载时正确复制您的编译环境的唯一方法。)如果您删除它们,它将停止工作。

    但在生产模式下,您只需要二进制和静态资源。好吧,无论 GHC 将可执行文件链接到什么动态库。这主要是像 libc 这样的标准东西。标准 linux 安装中有时缺少的唯一一个是 libgmp。当然,如果您使用任何绑定到其他动态库的 FFI 代码,您需要确保这些库也被覆盖。

    【讨论】:

    • 谢谢。我认为这与开发模式有关。
    猜你喜欢
    • 2011-04-25
    • 2014-10-16
    • 1970-01-01
    • 2014-05-13
    • 2017-03-18
    • 2010-12-12
    • 1970-01-01
    • 2020-04-04
    • 1970-01-01
    相关资源
    最近更新 更多