8

假设我有一个独立的 Dancer webapp。我可以通过运行 make dist 将其部署到主机,获取 tarball 然后通过 cpanm 或类似方法安装它。但是,我似乎无法找到如何控制此部署。当我只是在应用程序上制作 dist,然后在其他地方安装应用程序时,它似乎只是安装了应用程序的模块。但是,应用程序脚本、各种 html 文件和模板、环境配置文件并没有安装到本地文件系统中。

从系统 a 上的 webapp -> tarball -> 系统 b 上的 webapp 的正确方法是什么?

编辑:

抱歉,我应该澄清一下,我知道我可以手动完成整个事情。我很惊讶没有快速的方法来使用几个命令进行安装,或者在应用程序本身中指定它认为可以安装各种组件的位置。

由于我大部分时间都使用 cpanm,这简化了系统 B 上的事情,因为我可以将它解压缩到一个目录,更改它,运行“cpanm”。并将依赖项和应用程序的模块安装到系统库中。

但是,这会导致应用程序模块同时位于 <>/lib/ 以及系统 perllib 安装路径中。这也意味着用户需要对 perl 有所了解。

我想我只是想知道自从安装 Perl Web 应用程序的最佳系统是什么之后,事情是否发生了变化?三年前被问到。随着现代 Perl 最先进技术的所有进步,这似乎是现在已经处理的那种问题。

4

1 回答 1

5

这是一种方法。在 system-a 上创建您的应用程序:

dancer -a Foo
cd Foo
perl Makefile.PL
make dist
scp Foo-0.1.tar.gz system-b:
ssh system-b

在系统-b 上:

sudo tar xf Foo-0.1.tar.gz -C /opt
cd /opt/Foo-0.1
perl Makefile.PL # this will tell you the deps you need to install
# install needed deps if any
make
sudo make install
./bin/app.pl # this starts your app

这种方法将您的应用程序安装到 /opt/Your-App。您的所有配置文件、脚本等都将单独包含在一个文件夹中。

您可能需要考虑的是将您的所有部门与您的应用程序捆绑在一起。您将在系统-a 上执行此操作。(请注意,这需要 system-a 和 system-b 具有相同的架构)捆绑您的 deps 的一种简单方法是使用 App::cpanminus:

cpanm -L extlib Dancer Plack YAML # and any other deps

然后,当您部署启动您的应用程序时,您将执行以下操作:

perl -Ilib -Iextlib/lib/perl5 -Iextlib/lib/perl5/x86_64-linux ./bin/app.pl

这种方法使您不必在 system-b 上安装任何东西。您可以提取您的应用程序并运行它。

于 2011-06-11T05:07:41.023 回答