我有兴趣了解人们如何在生产环境中进行 Lisp webapp 部署和更新(尤其是更新)。
在 Ruby 中,包括我自己在内的许多人都使用 Capistrano 进行部署。它提供了一些很好的间接性和远程执行命令的能力,最重要的是(在我看来)回滚到工作代码库的能力。
我知道长期运行的 Lisp 进程通过 SSH 隧道通过 Swank 连接并就地修改的想法是一个流行的想法,但我没有喝过 Koolaid,主要是因为更新有状态的问题进程(如果出现问题,这似乎是在自找麻烦——比如内存中的当前状态与即将在内存中的新对象定义之间的不可预见的阻抗不匹配)。
鉴于您可以使用 hunchentoot 创建几乎无状态(或完全)的 web 应用程序(或在此处插入您最喜欢的 Lisp 应用程序服务器),如果 Lisp 进程(es ) 隐藏在其上游通道中的 nginx 后面,如果您可以正确编排取消 hunchentoot 进程并在更新代码后将它们重新启动,例如,将它们一直恢复,同时让至少一个 hunchentoot 进程在集群中运行任何给定的时刻(可以使用 CGI 或 mod_lisp,但我对这种方法并不特别感兴趣 - 虽然如果你真的喜欢这种方法,请至少说一下,我想学习)。例如,使用Passenger(将橙子与苹果进行比较,因为它按需启动流程),
好吧,这有点漫无边际,实际上我将尝试所有这些,但我想从其他人那里获得一些关于这些想法的反馈。也许你有更好的主意。
谢谢