Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
部署使用Snap框架的Haskell代码_Haskell_Capistrano_Web Deployment_Githooks_Haskell Snap Framework - Fatal编程技术网

部署使用Snap框架的Haskell代码

部署使用Snap框架的Haskell代码,haskell,capistrano,web-deployment,githooks,haskell-snap-framework,Haskell,Capistrano,Web Deployment,Githooks,Haskell Snap Framework,以稳定的方式在Snap中部署用于生产的Haskell代码,您有什么经验 如果在服务器上编译失败,则我希望中止部署,如果成功,则我希望它关闭快照服务器并启动新版本 我知道有很多方法。从rsync到git钩子(git拉动是一场噩梦)。但我想听听你的经验。在我工作的地方,我们使用Happstack并部署在Ubuntu linux上。实际上,我们对web应用程序和所有依赖项进行debianize,然后在autobuilder中构建它们 要在服务器上实际安装,我们只需运行apt get update&&a

以稳定的方式在Snap中部署用于生产的Haskell代码,您有什么经验

如果在服务器上编译失败,则我希望中止部署,如果成功,则我希望它关闭快照服务器并启动新版本


我知道有很多方法。从rsync到git钩子(git拉动是一场噩梦)。但我想听听你的经验。

在我工作的地方,我们使用Happstack并部署在Ubuntu linux上。实际上,我们对web应用程序和所有依赖项进行debianize,然后在autobuilder中构建它们

要在服务器上实际安装,我们只需运行
apt get update&&apt get install webapp production

此系统的优点是,它使所有开发人员都可以轻松地针对相同版本的依赖项进行开发。你知道所有的源代码都被正确地签入,并且可以在任何地方重建。。不仅仅是在一台特定的机器上。此外,它还提供了一种机制,可以在需要时从黑客攻击中为库制作补丁


不利的一面是,apt get和阴谋集团安装不能很好地相处。您要么通过apt get构建所有内容,要么通过cabal安装完成所有内容。

以下是我们要做的。首先,我们的服务器和我们的开发机器都是同一版本的ubuntu。我们在我们喜欢使用的任何操作系统中编写代码、测试等,当我们准备好推动时,我们在devel机器上构建。只要编译干净,我们就停止(前端服务器的数量)/2,重新同步
资源
目录和二进制文件的新副本,然后使用脚本启动备份。然后对另一半重复


在我看来,如果外部库(数据库、图像等)版本与构建环境匹配,那么当您可以轻松地传输二进制和静态资产时,您应该质疑在前端服务器上维护完整工具链的逻辑。见鬼,您也可以使用virtualbox实例进行最终编译,只要操作系统和库的发布版本相匹配。

这里通常不鼓励提出类似列表的广泛问题。专注于一个框架并添加更多关于平台、扩展等方面的需求的信息会更有建设性。@hammar编辑禁止回答。我目前正在使用Happstack(best docs and stable)。但是主页上没有新闻让我害怕得要命。@Daniel W--如果你遵循回购协议,你会发现Happstack仍在积极维护和开发中。happstack服务器等软件包的黑客上传历史也揭示了同样的情况。Happstack只是在所有框架中投入最少的精力进行推广,而且工作通常比“性感”更具增量。很抱歉。我将进行一些更改,以便对当前的开发进行更多的持续更新。您如何“对web应用程序和所有依赖项进行debianize,并在autobuilder中构建它们”?对不起,我是linux的新手,对我来说这听起来像:这是我通常采用的方法。有时我用git部署我的二进制+静态文件。是的,git repo是巨大的,因为它有二进制文件,但这使得在出现问题时恢复到上一个好的设置变得微不足道。我也通常在一个外壳脚本中运行我的应用程序,该脚本由一个while(1)语句包围。这样,如果它以任何方式崩溃,它会自动重新启动。这也允许你切换到一个新版本,只需简单的“git pull”和运行的二进制文件。你能描述一下需要启动什么样的脚本,比如Snap或happstack webapp吗?我的snap应用程序在本地机器上运行,但我完全不知道如何在生产服务器上启动它?我还发布了一个关于这个的问题,如果你有空闲时间: