Best Practices for Django App Packaging

John.Florian at John.Florian at
Tue Jan 21 21:44:41 UTC 2014

> From: mrunge at
> To: <devel at>
> Date: 01/21/2014 15:38
> Subject: Re: Best Practices for Django App Packaging
> Sent by: devel-bounces at
> On 01/21/2014 05:22 PM, John.Florian at wrote:
> >> [1]
> >>
> >> openstack-dashboard.conf
> >> [2]
> >>
> >> openstack-dashboard-httpd-2.4.conf
> >> [3]
> >>
> >> python-django-horizon.spec
> > 
> > Thanks Matthias!  That's quite a complicated example, although I can 
> > there's much I can learn from it.  Unfortunately, it's not the ideal
> > example because it moves everything that builds into
> > /usr/share/openstack-dashboard.  I need to keep stuff under
> > /usr/lib/pythonX.Y/site-packages so that the other, non-Django, parts
> > continue to work as expected.  (I suppose I could just relocate the
> > Django-parts of the build, but sounds like it will break more things
> > that it will help.)
> Yes, you're right. It's not the ideal and simple example.
> On the other side, it doesn't matter if you put all that stuff to
> /usr/share or to %{python_sitelib}
> Basically, you just need the two files. Stephen had another, more simple
> example. This gets the job done. For most real world deployments you'd
> need some more config changes (database, caching, ssl, and more 
> Matthias

Yup, I'm seeing it now.  I realize sqlite is normally used for production 
deployments, but in my case I would have been totally fine with it since I 
know the number of "user" connections is always going to be less than 20 
or so: one real human on rare occasions and the rest from machines that 
are almost always going to get a cached page since they're each asking 
once a minute for their own same page.  However, SELinux made me adopt the 
better practice of using Postgresql since all the policy is there for 
that.  :-)

I've got a deployed (test) setup roughly working now.  Next step is to 
clean up the "hard to maintain & it's fragile" aspects.  I will probably 
wind up doing as openstack-dashboard does and moving some of the python 
package/modules out of /usr/lib/pythonX.Y and into /usr/share/my_app since 
the rpm spec can do that much smartly.  Then my puppet manifests can refer 
to things that aren't such moving targets.

I largely want to avoid a big mess of figuring out how to migrate the 
deployed instance to new hosts as Fedora releases come out.  (As a rule, 
we never upgrade; just reinstall with much help from puppet.  Think of it 
as a fire drill.)  Hopefully I'll get to keep playing with Django in the 
future so it all doesn't become foreign 6 months from now.

Thanks to all for the pointers.  They've been a big help.

John Florian
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <>

More information about the devel mailing list