2011-06-10 38 views
8

假設我有一個獨立的Dancer web應用程序。我可以通過運行make dist將其部署到主機,然後獲取tarball,然後通過cpanm或類似軟件進行安裝。但是,我似乎無法找到如何控制此部署。當我只是開發應用程序,然後在其他地方安裝應用程序,它似乎安裝應用程序的模塊。但是,應用程序腳本,各種html文件和模板,環境配置文件沒有安裝到本地文件系統。如何控制Dancer Web應用程序的部署?

什麼是正確的方式來從webapp系統a - > tarball - > webapp系統b上?

編輯:

對不起,我應該澄清,我知道我可以手動做這件事。我很驚訝沒有快速的方法來使用幾個命令來安裝,或者在應用程序本身中指定它感覺各種組件可以安裝的方式。

由於我在大多數情況下使用cpanm,因此可以簡化系統B上的操作,因爲我可以將它提取到目錄中,然後更改爲「cpanm」。它會將依賴關係和應用程序的模塊安裝到系統庫中。

但是,這會導致應用程序模塊在<>/lib /以及系統perllib安裝路徑中。這也意味着用戶需要了解一些關於Perl的知識。

我想我只是想知道自從What's the best system for installing a Perl web app?三年前被問及事情是否發生了變化。隨着現代Perl技術的進步,看起來這就是現在已經解決的那類問題。

回答

5

這是一種方法。在系統中創建一個您的應用程序:

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 /你的應用程序內。所有的配置文件,腳本等都將自包含在一個文件夾中。

你可能想要考慮的事情是將你所有的代幣與你的應用捆綁在一起。你會在系統上做到這一點。 (注意,這需要系統和系統-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 

這種方法使得它不需要在系統b上安裝任何東西。你可以提取你的應用程序並運行它。