HOWTO deploy Django in Jumpline
django pythonThe blogosphere discussed the headache of deployment for modern Web Framework on shared hosting recently in couple weeks ago. This HOWTO documents the bumps and workaround in deploying Django to Jumpline’s VDS(Virtual Dedicated Servers) hosting.
Compared with the ironclad shared hosting, VDS provides SSH access, and private Apache server. Jumpline’s plan is also shipped with mod_python(python 2.5) and write access to PYTHON/site-package and /usr/local/bin, that make the whole process less painful.
Setup the VirtualHost
Add a sub-domain as planet.kunxi.org
in VDS console as our testbed.
Install Django SVN
It is a pity that Subversion is not installed in the chroot
jail. In fact the
Subversion hosting is a premium feature you need to pay for. Anyway, we can just
check out the code in the local machine, then copy it back to the server. In the
server:
python setup.py build
python setup.py install --prefix=/home/lib
If you happen not to have write privilege PYTHON/site-package, you may consider
add --prefix
to override the default installation path, then add the prefix to
your PYTHONPATH
environment variable.
Setup the mod_python
Load mod*python in httpd.conf
LoadModule python_module modules/mod_python.so
As the name suggests, planet.kunxi.org
is a feed aggregation portal based upon
FeedJack, some enhancement are in plan to scratch the etch, now it is just
mere a simple deployment:
<VirtualHost *:80>
ServerName planet.kunxi.org
DocumentRoot /var/www/planet
SetHandler python-program
PythonHandler django.core.handlers.modpython
PythonDebug On
PythonPath "['/home/projects'] + sys.path"
SetEnv DJANGO_SETTINGS_MODULE feedpipe.settings
<Location "/media">
SetHandler None
</Location>
<Location "/static">
SetHandler None
</Location>
</VirtualHost>
/media
and /static
are set to host static media contents. /media
is mere a
soft symbol link to django/contrib/admin/media
. We also link
/static/feedjack
to feedjack’s media files as FeedJack’s document suggests.
Here is the feedpipe.settings
:
MEDIA_ROOT = '/var/www/planet/static'
MEDIA_URL = '/static/'
ADMIN_MEDIA_PREFIX = '/media/'
Restart httpd, done.