如何部署Perl应用程序?有哪些好的方法?

9
我发布了这个问题,寻找类似于Buildout的Perl工具。我认为Shipwright是我要找的工具,但我不太确定。我试着使用它并创建了一个项目,导入了所有源代码和依赖项,然后将所有内容导出到船只中。但随后文档就停止了更新。我该如何处理船坞船只?我应该在船只中进行实际开发工作,还是在Shipyard中进行开发?我假设船只仅用于部署,但我该如何将船只部署到Web服务器上(比如我使用的是Linux、Apache并直接运行CGI)?
Shipwright是我尝试实现目标的正确选择吗?还是有其他更适合的东西?理想情况下,我可以像使用Buildout一样使用Shipwright。我使用Buildout为我的开发创建一个良好的隔离环境,并且在部署到生产服务器时使用Buildout来管理我的应用程序的所有依赖关系。
编辑:以下是我可以使用Buildout完成的亮点,我希望能够在Perl中完成相同的操作。
使用Buildout,我在我的代码库中有一个列出依赖项的文件(对于Perl来说,这可能是CPAN模块或其他源存储库)。我可以运行引导脚本,该脚本将获取所有这些依赖项并将它们放入项目内的一个目录中,并不会在系统级别安装它们。Buildout还创建实用程序脚本,可以执行任何你想要的操作(运行测试、其他命令行工具等等),这些脚本明确地将依赖项添加到路径中,以便在我的脚本运行时,所有依赖项都可以被导入。
这个工具非常好的地方在于它允许我管理依赖项,而无需在系统级别安装任何东西。这使得从一个版本切换到另一个版本非常容易。此外,它允许我在同一系统上运行多个 Buildout 项目,使用相同模块的不同版本。最后,一个巨大的好处是,通过 Buildout 的目录结构,我只需要提交依赖项到源代码控制,并部署到新机器时,我只需要进行检出,所有依赖项都已满足,而无需触及任何已安装的系统级别内容。

你应该关注的选项很大程度上取决于你想要做什么。你可能也想看看PAR。 - tsee
好奇,因为我从未使用过Buildout;这样的系统解决了什么问题?分发代码?运行代码? - Øyvind Skaar
对于那些通过搜索Shipwright信息而来的人,这里有一个非常棒的教程,可以帮助你“装载”你的船只。http://serialized.net/2010/08/deploying-self-contained-perl-dancer-applications/ 我目前正在尝试为一个Web应用程序创建部署流程。 - Relequestual
1个回答

3
我认为在Perl中不会找到与Buildout完全相同的东西,但是您可以组合几个工具来完成相同的任务。
您可以使用标准的Build.PL脚本来管理依赖项并运行测试等命令,例如Module::Build
然后,您可以使用cpanminus将这些依赖项安装到本地(非系统)目录中。
最后,您可以使用Shipwright将项目与这些现在本地的依赖项捆绑和部署。

我喜欢这个听起来。从听起来的情况来看,我认为我不需要Shipwright,而是使用Module::Build和cpanminus。我会看一下它们,谢谢! - Matthew J Morrison
听起来这个可能与buildout类似,但它也涉及到很多手动工作(我想避免逐个安装每个依赖项),我正在寻找完全自动化的东西。也许我只需要开发自己的自动本地化环境,它将在底层使用cpanm。 - Matthew J Morrison
@matthew - Module::Build有一个"installdeps"目标,它将安装所有依赖项及其依赖项。我不知道是否有一种简单的方法将cpanm钩入其中,也不知道告诉它使用类似local::lib之类的东西在本地安装东西的最简单方法是什么。但这应该可以让你开始工作了。 - mpeters

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接