2011/03/01

Setting up django: step 1, python 2.7.1

Just trying out some django in centos 5.5. So this should not been seen as a good solution. Just me trying to set it up properly

some pre preps
yum -y groupinstall 'Development Tools'
yum -y install openssl-devel* zlib*.x86_64
yum -y install httpd-devel
yum -y install mysql-devel
yum -y install wget

downloaded and untarred 2.7.1
cd /usr/local/src
wget http://www.python.org/ftp/python/2.7.1/Python-2.7.1.tgz
tar -xzvf Python-2.7.1.tgz


compiled it with embedded so we can use apache mod wsgi. Used a seperate path so that it is not conflicting with the internal python
./configure --prefix=/opt/python2.7 --with-threads --enable-shared
make
make install

added the new library to the dynamic loader
echo "/opt/python2.7/lib" > /etc/ld.so.conf.d/python27.conf
ldconfig

We can now test it
[root@django ld.so.conf.d]# /opt/python2.7/bin/python
Python 2.7.1 (r271:86832, Mar 1 2011, 21:14:38)
[GCC 4.1.2 20080704 (Red Hat 4.1.2-48)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>>

ln -s /opt/python2.7/bin/python2.7 /usr/bin/python2.7
ln -s /opt/python2.7/lib/libpython2.7.so /usr/lib/libpython2.7.so

Installing the setup tools
cd /usr/local/src
wget http://pypi.python.org/packages/2.7/s/setuptools/setuptools-0.6c11-py2.7.egg
sh setuptools-0.6c11-py2.7.egg --prefix=/opt/python2.7


Installing the mysql bindings
cd /usr/local/src
wget http://downloads.sourceforge.net/project/mysql-python/mysql-python/1.2.3/MySQL-python-1.2.3.tar.gz?r=&ts=1299013136&use_mirror=netcologne
tar -xzvf MySQL-python-1.2.3.tar.gz
python2.7 setup.py build
python2.7 setup.py install

Installing wsgi
cd /usr/local/src
wget http://modwsgi.googlecode.com/files/mod_wsgi-3.3.tar.gz
./configure --enable-shared --prefix=/opt/mod_wsgi-3.3 --with-python=/opt/python2.7/bin/python
make
make install

A mod should be made. You can find it in
Libraries have been installed in:
/usr/lib64/httpd/modules

The mod itself:
/usr/lib64/httpd/modules/mod_wsgi.so

echo "LoadModule wsgi_module /usr/lib64/httpd/modules/mod_wsgi.so" > /etc/httpd/conf.d/wsgi.conf
echo "AddHandler wsgi-script .wsgi" >> /etc/httpd/conf.d/wsgi.conf
chmod 755 /etc/httpd/conf.d/wsgi.conf
/etc/init.d/httpd restart

Installing django
wget http://www.djangoproject.com/download/1.2.5/tarball/
python2.7 setup.py install

cd /tmp
cat <<> test.py
#!/opt/python2.7/bin/python
import django
print django.get_version()
EOF
chmod +x test.py
[root@django html]# ./test.py
1.2.5

Symlinking the django admin so we can use it everywhere
ln -s /opt/python2.7/bin/django-admin.py /usr/local/bin/django-admin.py

Configuring apache to use django
cat <<> /etc/httpd/conf.d/django.conf
WSGIScriptAlias / /var/www/django/django.wsgi

Order allow,deny
Allow from all
EOF

creating the django handler
mkdir -p /var/www/django
cat <<> /var/www/django/django.wsgi
import os
import sys

path = '/var/www/django'
if path not in sys.path:
sys.path.append(path)

os.environ['DJANGO_SETTINGS_MODULE'] = 'mysite.settings'

import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()
EOF
chmod 755 /var/www/django/django.wsgi

Now we can create a site
cd /var/www/django/
django-admin.py startproject mysite

Restart the webserver to activate everything
/etc/init.d/httpd restart

Surf to your http server ot see the result