RSS | technovelty home | page of ian | ian@wienand.org
Although Django is well packaged for Debian, I've recently come to the conculsion that the packages are really not what I want. The problem is that my server runs Debian stable, while my development laptop runs unstable, and Django revisions definitely fall into the "unstable" category. There really is no way to use a system Django 1.1 on one side, and a system Django 1.0 on the other.
After a bit of work, I think I've got something together that works, and I post it here in the hope it is useful for someone else. This info has been gleaned from similar references such as this and this.
This is aimed at running a server using Debian stable (5.0) for production and an unstable environment for development. You actually need both to get this running. This is based on a project called "project" that lives in /var/www
$ virtualenv --no-site-packages project New python executable in project/bin/python Installing setuptools............done.
/var/www$ cd project /var/www/project$ . bin/activate (project) /var/www/project$
(project) /var/www/project$ easy_install pip Searching for pip Reading http://pypi.python.org/simple/pip/ Reading http://pip.openplans.org Best match: pip 0.4 Downloading http://pypi.python.org/packages/source/p/pip/pip-0.4.tar.gz#md5=b45714d04f8fd38fe8e3d4c7600b91a2 Processing pip-0.4.tar.gz Running pip-0.4/setup.py -q bdist_egg --dist-dir /tmp/easy_install-Wu9O-U/pip-0.4/egg-dist-tmp-xjSdxq warning: no previously-included files matching '*.txt' found under directory 'docs/_build' no previously-included directories found matching 'docs/_build/_sources' zip_safe flag not set; analyzing archive contents... pip: module references __file__ Adding pip 0.4 to easy-install.pth file Installing pip script to /var/www/project/bin Installed /var/www/project/lib/python2.5/site-packages/pip-0.4-py2.5.egg Processing dependencies for pip Finished processing dependencies for pip
(project) /var/www/project$ easy_install setuptools==0.6c9 Searching for setuptools==0.6c9 Reading http://pypi.python.org/simple/setuptools/ Best match: setuptools 0.6c9 Downloading http://pypi.python.org/packages/2.5/s/setuptools/setuptools-0.6c9-py2.5.egg#md5=fe67c3e5a17b12c0e7c541b7ea43a8e6 Processing setuptools-0.6c9-py2.5.egg Moving setuptools-0.6c9-py2.5.egg to /var/www/project/lib/python2.5/site-packages Removing setuptools 0.6c8 from easy-install.pth file Adding setuptools 0.6c9 to easy-install.pth file Installing easy_install script to /var/www/project/bin Installing easy_install-2.5 script to /var/www/project/bin Installed /var/www/project/lib/python2.5/site-packages/setuptools-0.6c9-py2.5.egg Processing dependencies for setuptools==0.6c9 Finished processing dependencies for setuptools==0.6c9
(project) /var/www/project$ cat requirements.txt -e svn+http://code.djangoproject.com/svn/django/tags/releases/1.0.3/#egg=Django (project) /var/www/project$ pip install -r requirements.txt Obtaining Django from svn+http://code.djangoproject.com/svn/django/tags/releases/1.0.3/#egg=Django (from -r requirements.txt (line 1)) Checking out http://code.djangoproject.com/svn/django/tags/releases/1.0.3/ to ./src/django (project) /var/www/project$ pip install -r requirements.txt Obtaining Django from svn+http://code.djangoproject.com/svn/django/tags/releases/1.0.3/#egg=Django (from -r requirements.txt (line 1)) Checking out http://code.djangoproject.com/svn/django/tags/releases/1.0.3/ to ./src/django ... so on ...
activate_this = "/var/www/project/bin/activate_this.py" execfile(activate_this, dict(__file__=activate_this)) from django.core.handlers.modpython import handler
(project) /var/www/project$ mkdir project (project) /var/www/project/project$ mkdir db django media www (project) /var/www/project/project$ cd django/ (project) /var/www/project/project/django$ django-admin startproject myproject
DocumentRoot /var/www/project
<Location "/">
SetHandler python-program
PythonHandler project-python
PythonPath "['/var/www/project/','/var/www/project/project/django/'] + sys.path"
SetEnv DJANGO_SETTINGS_MODULE myproject.settings
PythonDebug On
</Location>
Alias /media /var/www/project/project/media
<Location "/media">
SetHandler none
</Location>
<Directory "/var/www/project/project/media">
AllowOverride none
Order allow,deny
Allow from all
Options FollowSymLinks Indexes
</Directory>
With all this, you should be up and running in a basic but stable environment. It's easy enough to update packages for security fixes, etc via pip after activating your virtualenv.
posted at: Fri, 11 Sep 2009 22:49 | in /linux/debian | permalink | add comment (6 others)

This work is licensed under a Creative Commons Attribution-ShareAlike 2.5 License.