[Web-SIG] WSGI deployment use case
chrism at plope.com
Tue Jul 26 09:55:27 CEST 2005
On Tue, 2005-07-26 at 01:18 -0500, Ian Bicking wrote:
> Well, the stack is really just an example, meant to be more realistic
> than "sample1" and "sample2". I actually think it's a very reasonable
> example, but that's not really the point. Presuming this stack, how
> would you configure it?
I typically roll out software to clients using a build mechanism (I
happens to use "pymake" at http://www.plope.com/software/pymake/ but
anything dependency-based works).
I write "generic" build scripts for all of the software components. For
example, I might write makefiles that check out and build python,
openldap, mysql and so on (each into a "non-system" location). I leave
a bit of room for customization in their build definitions that I can
override from within a "profile". A "profile" is a set of customized
software builds for a specific purpose.
I might have, maybe, 3 different profiles for each customer where the
profile usually works out to be tied to machine function (load balancer,
app server, database server). I mantain these build scripts and the
profiles in CVS for each customer. I never install anything by hand, I
always change the buildout and rerun it if I need to get something set
This usually works out pretty well because to roll out a new major
version of software, I just rerun the build scripts for a particular
profile and move the data over. Usually the only thing that needs to
change frequently are a few bits of software that are checked out of
version control, so doing "cvs up" on those bits typically gets me where
I need to be unless it's a major revision.
So in this case, I'd likely write a build that either built Apache from
source or at least created an "httpd-includes" file meant to be
referenced from within the "system" Apache config file with the proper
stuff in it given the profile's purpose. The build would also download
and install Python, it would get the the proper eggs and/or Python
software and the database, and so forth. All the configuration would be
done via the "profile" which is in version control.
I don't know if this kind of thing works for everybody, but it has
worked well for me so far. I do this all the time, and I have a good
library of buildout scripts already so it's less painful for me than it
might be for someone who is starting from scratch. That said, it is
time-consuming and imperfect... upgrades are the most painful. New
installs are simple, though.
So, anyway, the short answer is "I write a script to do the config for
me so I can repeat it on demand".
More information about the Web-SIG