On a related note I've been thinking a lot about how to simplify this
whole process. I might have a go during the conference sprint at a
deployment recipe.
The idea would be you could add the following to your development buildout
[deploy]
recipe=plone.recipe.deployment
host=myhost.com
then you could do
bin/buildout
bin/deploy
First time it would
- ssh in as root (asking for your password),
- setup a special user and install a ssh key
- check the linux version and install what is needed to run buildout
- login as the special user
- upload the buildout (possibly using git or rsync)
- upload the src eggs/products etc
- run the buildout
- start the instances etc
every time you run a subsequent bin/deploy
it will
- login as the special user
- shut down the instances etc
- backup the data.fs
- sync the buildout (possibly using git or rsync)
- sync the src eggs/products etc
- run the buildout
- start the instances etc
The idea being that all you need is a windows or linux working buildout
on your own dev machine and you can setup and deploy to almost any
(linux based) server in minutes. No intimidation factor with having to
learn any linux sys admin.
This creates a similar experience to google app engine (except you have
to pay for a host first) or web based installers for joomla etc that
ISPs have (except this would work on almost all VPS or dedicated host
providers).
Combine it with buildout builder and can go from zero to a very
functional live plone site in minutes.
I realise there are a lot of unknowns with this idea but I think it
could be a real win for plone as it would make it far more accessible to
more developers.
anyone else interesting in this idea?
Dylan.
Dylan Jay wrote:
Mark Phillips wrote:
On Tue, 2008-09-02 at 12:40 +0000, Maurits van Rees wrote:
Mark Phillips, on 2008-09-01:
In the world of Plone 3, it seems I have to merge the buildout.cfg from
my development machine and the one on my production machine, taking
care
to change only what needs to be changed - somewhat complicated by the
fact that the production server uses zeo and the development machine
uses a single instance of plone. Then, I copy over the src directory
and
run bin/buildout.
You can use the same buildout directory (stored and tagged in svn) for
development and deployment. Like Raphael said, you can use one cfg
file for each situation. This is how we do it at Zest Software:
http://vanrees.org/weblog/archive/2007/12/27/buildout-development-production-strategy
The merging of buildout.cfg files seems to be a very error-prone manual
process.
You can make the two different cfg files look as much alike as you can
so they are easy to compare. See:
http://vanrees.org/weblog/archive/2008/07/08/versions-buildout
BTW, those two weblog entries are from my brother Reinout, not from
me. :-)
I read through the two blog entries, and I am just too new to
buildout.cfg to understand what you are doing. Is there a tutorial you
can point me to that will bring me up to the level you guys are at so I
can begin to appreciate what you have created?
I do have a tutorial for this but its not yet published called "$20
plone site in 20min"
The basics however are as follows:
1. How arrange your buildout files so that have different configurations
for development, testing and production.
2. How to get the buildout under source control
3. how to get the buildout uploaded to the server
4. how to get your eggs in src to the server
There are differing opinions on these issues.
What I do is
1. follow similar suggestions as above for breaking up teh buildout into
different files.
2. create a svn repos on the host if I don't already have one handy. I
then put just 1st level of the buildout dir under source control
(basically just the .cfg files)
3. I push my changes to the repos then ssh into the host and checkout
the buildout and then build it.
4. I check each dev egg in seperatly and then use svn-develop buildout
extension in my buildout such that when I run my production buildout on
the server (in step 2) it will pull in my dev eggs from the repos.
Part of the reason I haven't published that tutorial is that this
process is a bit hard and ugly.
I know other people create release versions of the dev eggs and then scp
them to the server. I haven't experimented with that.
Others go further and run a local pypi on their server to grab those eggs.
Others use svn externals so that a checkout of the buildout also pulls
in the dev eggs. I went away from that method as sometimes I want to
checkout a version of the buildout with only some of the dev eggs. and I
personally think its buildouts job to define which software is used in
the setup and where it comes from, not svn.
Hope this makes it clearer.
Dylan
_______________________________________________
Product-Developers mailing list
[email protected]
http://lists.plone.org/mailman/listinfo/product-developers