说我有一个独立的Dancer webapp。我可以通过运行make dist,获取tarball然后通过cpanm或类似方法安装它来将其部署到主机。但是,我似乎无法找到如何控制此部署。当我在应用程序上创建dist时,然后在其他地方安装应用程序,它似乎只是安装应用程序的模块。但是,应用程序脚本,各种html文件和模板,环境配置文件未安装到本地文件系统。
从系统a上的webapp开始的正确方法是什么?> tarball - >系统b上的webapp?
编辑:
抱歉,我应该澄清一点,我知道我可以手动完成所有事情。我很惊讶没有快速方法可以使用几个命令进行安装,或者在应用程序本身中指定感觉各种组件可以安装的地方。
由于我在大多数情况下使用cpanm,这简化了系统B上的操作,因为我可以将其提取到目录,更改为它,运行'cpanm'。它将依赖项和应用程序的模块安装到系统库中。
但是,这会导致应用程序模块位于<> / lib /以及系统perllib安装路径中。这也意味着用户需要了解一下perl。
我想我只是想知道自从三年前问What's the best system for installing a Perl web app?以来事情是否发生了变化。随着现代Perl技术发展的所有进步,似乎这就是现在已经处理过的那类问题。
答案 0 :(得分:5)
这是一种方法。在system-a上创建你的应用程序:
dancer -a Foo
cd Foo
perl Makefile.PL
make dist
scp Foo-0.1.tar.gz system-b:
ssh system-b
在system-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。所有配置文件,脚本等都将自包含在一个文件夹中。
您可能需要考虑的事情是将所有deps与您的应用捆绑在一起。你可以在system-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上安装任何东西。您只需提取应用并运行即可。