Installing Django with Satchmo on Debian Etch
This is how I got Django and Satchmo set up on my Debian Etch box with Apache2, MySQL, mod_python and Memcached.
The machine I started with had Debian Etch installed as well as Apache2 and MySQL.
Note: I am assuming you are working as root on your machine. If not you will have to do sudo in front of all of the following commands.
Make sure that your /etc/apt/sources.list is up to date and then update your repositories and installed packages. I usually get my sources from here...
# apt-get update
# apt-get upgrade
Since it is a new server and my locales are not right, I reconfigure them.
# dpkg-reconfigure locales
Install GCC, G++ and Make so you can compile code
# apt-get install gcc g++ make
Install the newest version of Python (2.5.2 as of this writing).
# cd ~/
# wget http://www.python.org/ftp/python/2.5.2/Python-2.5.2.tgz
# tar -zxvf Python*
# cd Python*
# ./configure --enable-shared
# make
# make install
Set up a config file for python.
# vi /etc/ld.so.conf.d/python2.5.conf
Put the following in it (path to the libpython2.5.so.1.0):
/usr/local/lib
Make the settings take effect.
# ldconfig
Make this version of python the default version.
# vi /usr/share/python/debian_defaults
Change the contents of this file to:
[DEFAULT]
# the default python version
default-version = python2.5
# all supported python versions
supported-versions = python2.4, python2.5
# formerly supported python versions
old-versions = python2.3
# unsupported versions, including older versions
unsupported-versions = python2.3
Create a symlink to point to the new version of python.
# rm /usr/bin/python
# ln -s /usr/local/bin/python2.5 /usr/bin/python
Set up MySQL (MySQL-python) to work with Python.
# apt-get install libmysqlclient15-dev
# cd ~/
# wget http://voxel.dl.sourceforge.net/sourceforge/mysql-python/MySQL-python-1.2.2.tar.gz
# tar -zxvf MySQL-python*
# cd MySQL-python*
# python setup.py build
# python setup.py install
Installing mod_python for Apache2 in Debian Etch is a total PITA. Here are the steps I took to get it installed...
# apt-get install apache2-prefork-dev
# cd ~/
# wget http://ftp.wayne.edu/apache/httpd/modpython/mod_python-3.3.1.tgz
# tar -zxvf mod_python*
# cd mod_python*
# ./configure --with-apxs=/usr/bin/apxs2 --with-python=/usr/local/bin/python2.5
# make
# make install
Install the newest version of Django (1.0 as of this writing).
# cd ~/
# wget http://www.djangoproject.com/download/1.0/tarball/
# tar -zxvf Django*
# cd Django*
# python setup.py install
On my machine, this installed Django into /usr/local/lib/python2.5/site-packages.
Set up your Django project.
# cd ~/
# django-admin.py startproject mysite
Set up your MySQL database. Since my machine is a fresh install I need to set up a password first.
# mysqladmin -u root password PASSWORD
# mysql -u root -p
mysql> CREATE DATABASE mysite CHARACTER SET utf8;
Set up your project settings in settings.py.
* Enter up your admin information.
* Enter up your database connection info.
* Change your timezone and language settings if needed.
Sync your installed apps and your database.
# cd ~/mysite
# python manage.py syncdb
Check this Django documentation page for how to set up mod_python.
You need to set up a directory where mod_python can extract eggs and you need to set up the permissions so it can write to it (don't use 777 as in my example in production).
# cd ~/mysite
# mkdir cache_directory
# chmod 777 cache_directory
# chown www-data cache_directory
Now set up a config file to import those settings.
# vi cache_file.py
Put the following lines in that file:
import os
os.environ['PYTHON_EGG_CACHE'] = '/absolute/path/to/cache_directory'
Configure mod_python to work with Apache2.
# vi /etc/apache2/httpd.conf
Add the following lines to that file:
LoadModule python_module /usr/lib/apache2/modules/mod_python.so
PythonInterpreter mysite
PythonImport /absolute/path/to/cache_file.py mysite
<Location "/">
SetHandler python-program
PythonHandler django.core.handlers.modpython
SetEnv DJANGO_SETTINGS_MODULE mysite.settings
PythonOption django.root /mysite
PythonDebug On
PythonPath "['/path/to/project'] + sys.path"
</Location>
Restart Apache.
# /etc/init.d/apache2 restart
At this point you should have a working Django install and you should be able to start adding apps...
Now lets get our install ready for Satchmo. We will need to install a bunch of things, as laid out on this page...
Install Python Imaging Library...
# cd ~/
# wget http://effbot.org/downloads/Imaging-1.1.6.tar.gz
# tar -zxvf Imaging*
# cd Imaging*
# python setup.py install
Install Python cryptography toolkit...
# cd ~/
# wget http://www.amk.ca/files/python/crypto/pycrypto-2.0.1.tar.gz
# tar -zxvf pycrypto*
# cd pycrypto*
# python setup.py install
Install ReportLab...
# apt-get install libfreetype6 libfreetype6-dev
# cd ~/
# wget http://www.reportlab.org/ftp/ReportLab_2_2.tgz
# tar -zxvf ReportLab*
# cd ReportLab*
# python setup.py install
Install Tiny RML2PDF...
# cd ~/
# wget http://tinyforge.org/frs/download.php/1/trml2pdf.tar.gz
# tar -zxvf trml2pdf*
# cd trml2pdf*
# mv trml2pdf /usr/local/lib/python2.5/site-packages
# python
>>> import trml2pdf
Install django-comment-utils...
# cd ~/
# wget http://django-comment-utils.googlecode.com/files/comment_utils-0.3p1.tar.gz
# tar -zxvf comment_utils*
# cd comment_utils*
# python setup.py install
Install Django Registration...
# cd ~/
# wget http://django-registration.googlecode.com/files/django-registration-0.6.tar.gz
# tar -zxvf django-registration*
# cd django-registration*
# python setup.py install
Install Memcached for caching (including its dependencies and python bindings)...
# cd ~/
# wget http://www.monkey.org/~provos/libevent-1.4.8-stable.tar.gz
# tar -zxvf libevent*
# cd libevent*
# ./configure
# make
# make install
Create a link so the memcached knows where to find the library...
# ln -s /usr/local/lib/libevent-1.4.so.2 /lib/libevent-1.4.so.2
# cd ~/
# wget http://danga.com/memcached/dist/memcached-1.2.6.tar.gz
# tar -zxvf memcached*
# cd memcached*
# ./configure
# make
# make install
# cd ~/
# wget ftp://ftp.tummy.com/pub/python-memcached/python-memcached-latest.tar.gz
# tar -zxvf python-memcached*
# cd python-memcached*
# python setup.py install
Start the memcached daemon...
# memcached -d -u www-data -m 32 127.0.0.1 -p 11211
Configure your django project to use memcached...
# cd ~/mysite
# vi settings.py
In that file add:
CACHE_BACKEND = 'memcached://127.0.0.1:11211/'
Install PyYaml...
# cd ~/
# wget http://pyyaml.org/download/pyyaml/PyYAML-3.05.tar.gz
# tar -zxvf PyYAML*
# cd PyYAML*
# python setup.py install
Install Docutils...
# cd ~/
# wget http://docutils.sf.net/docutils-snapshot.tgz
# tar -zxvf docutils-snapshot*
# cd docutils*
# python setup.py install
Install Django Threaded Multihost...
# cd ~/
# wget http://gosatchmo.com/static/files/threaded-multihost-1.1-source.tgz
# tar -zxvf threaded-multihost*
# cd django-threaded-multihost
# python setup.py install
Now you have all the prerequisites installed for Satchmo...
Its time to install Satchmo...
# apt-get install subversion
# cd ~/
# svn co svn://satchmoproject.com/satchmo/trunk
# cd trunk
# python setup.py install
Check it...
# cd ~/
# python
>>> import django
>>> import satchmo
If they both import fine, then you are all set... Enjoy...
To finish configuring your store check this page...
I like to have a clean machine, so I remove all of the source files after installs...
# cd ~/
# rm -rf Python* MySQL-python* mod_python* Django* Imaging* pycrypto* ReportLab* trml2pdf* comment_utils* django-registration* libevent* memcached* python-memcached* PyYAML* docutils* trunk* django-threaded-multihost threaded-multihost*
Tags
Will Stevens
From high level business strategies to clean and simple CSS design, there are always improvements that can be made...


Comments
Thanks
Thanks Will, they were useful instructions for a novice like me.
notes
to get threaded multihost you must run this command
hg clone http://hg.assembla.com/threaded_multihost
be careful with compiling python from source. I tried to run some of the ./configure and make commmands, and I hosed my python install, to the point where I was best off wiping my vps.
now I am searching for all of the possible installs with apt-cache and apt-get before downloading source.
your command
the command 'hg clone http://hg.assembla.com/threaded_multihost' assumes that you have Mercurial installed.
i second the need to be careful installing python from source. the problem i ran into was that python 2.5 is not supported on debian etch, but it was needed for this configuration. this is how i was able to get it working...