r.s*_*cky 5 haskell haskell-snap-framework
清理Snap项目源目录(删除dist)会产生以下抱怨:
A web handler threw an exception. Details:
GHC error: can't find a package database at dist/package.conf.inplace
Run Code Online (Sandbox Code Playgroud)
所以,如果我清理源目录它停止工作?如果我用开发标志编译,这只会发生吗?
这让我想到了snap应用程序部署的问题.我们实际上是什么rsync到服务器以及什么是运行时依赖项?我当然不想在部署服务器上安装整个haskell平台.我在服务器上需要的只是项目可执行文件和静态文件,如*.tpl,*.css等.这是正确的吗?
我可以看到两种部署应用程序的方法:rsync可执行文件及其依赖项,或创建二进制分发tarball并将其转移到服务器.常见的做法是什么?
我需要在二进制tarball或rsync脚本中包含哪些文件才能满足所有运行时依赖性?
谢谢
首先,是的,这只是使用开发模式的结果。它使用编译环境中的各种工件。(这是确保在动态重新加载时正确复制编译环境的唯一方法。)如果删除它们,它将停止工作。
但在生产模式下,二进制和静态资源就足够了。好吧,以及 GHC 将可执行文件链接到的任何动态库。这主要是像 libc 这样的标准东西。标准 Linux 安装中有时会缺少的唯一一个是 libgmp。当然,如果您使用任何绑定到其他动态库的 FFI 代码,您需要确保这些库也被覆盖。