APM: web application deployment?

Sam Foster austin.pm at sam-i-am.com
Mon Sep 8 03:13:37 PDT 2008

hi all,
I've not yet hooked up with my local pm group, so you are still my local 
community for now :)
I've got a pretty simple perl/cgi app that I need to deploy in a couple 
places. One is a shared hosting account where I have shell access. 
Another is a shared hosting account where I dont have shell access, and 
a third is a friends server where I currently have no account at all and 
will be delivering a hopefully-easily-deployable package of some sort. 
All are linux boxes of various flavours, all have other jobs they need 
to do. To compound the fun I'm developing primarily on osx (intel), 
though I've got a ubuntu vm that its running on too.

In brief, what are the best practices for this kind of thing?

My app is simple, but it has a number of dependencies, including things 
like the JSON module, and XML::LibXML - which have XS components. I dont 
have the option of sitting on the server and manually installing these 
modules. Using the cpan shell to install stuff is a non-starter anyway 
as 1) I dont have a shell everywhere, and 2) I dont want to require that 
of my friend who is not familiar with perl. So I've spent a while with 
the PAR and pp tools to create a self-contained package, but I'm 
buggered if I can get it to work fully - even fiddling with the various 
switches to do runtime dependency checking and adding known dynamic 
dependencies with -M. I can bully through that if that's the way to go, 
but I'm also discouraged because the standalone executable is large and 
loads like a dog (does it play with FastCGI? I dunno the ins and out of 
that). I've tried just using pp to create a par file and writing a 
little deployment script to unpack and install that on the remote server 
and that's a little less magical, but still awkward, and until I can get 
every dependency accounted for not viable. I'm also not clear that I can 
expect architecture-sensitive modules like XML::LibXML to work on 
different hardware and linux flavors when I built them on my Ubuntu vm.

The other option is to do module installation from my deployment script, 
rather than shipping them myself. I'm not sure what that looks like though

You all have presumably been though this before - what do you do?


More information about the Austin mailing list