APM: web application deployment?
austin.pm at sam-i-am.com
Mon Sep 8 03:13:37 PDT 2008
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