Debian Ubuntu установка и настройка django postgresql apache + mod_wsgi

Установка Django
# apt-get install python-pip
# pip install django

Проверка установки
Запускаем python и проверям версию фреймворка
# python

>>> import django
>>> print (django.get_version())

Установка apache2 и mod_wsgi
# apt-get install apache2 libapache2-mod-wsgi

Установка БД
# apt-get install postgresql

Устанавливаем пакет psycopg2.*
# apt-get install python-psycopg2

Создадим пользователя проекта и сам проект django
$ cd /home/django-user/
$ django-admin.py startproject test_project

Настройка БД
# su - postgres
$ psql

Создадим базу данных владельцем которой будет django-user
create role django-user with nosuperuser login password 'pass';
create database test_db owner django-user encoding 'UTF8';

Редактируем файл settings.py в директории нашего проекта

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql_psycopg2',
        'NAME': 'test_db',                     
        'USER': 'django-user',
        'PASSWORD': 'pass',
        'HOST': '',                     
        'PORT': '',                     
    }
}

Настроим apache и mod_wsgi
Перейдем в директорию проекта и создадим так каталог apache, внутри которого разместим файл django.wsgi
# su - django-user
$ cd /home/django-user/test_project/test_project
$ mkdir apache
$ vi apache/django.wsgi

Вставляем в файл следующий код:
import os
import sys

sys.path.append('/home/django-user/test_project/test_project/')  # путь проекта
os.environ['DJANGO_SETTINGS_MODULE'] = 'test_project.settings'  # настройки проекта

import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()

Проверим что веб сервер использует wsgi
# ls -la /etc/apache2/mods-enabled/ | grep wsgi
lrwxrwxrwx 1 root root 27 Sep 17 04:03 wsgi.conf -> ../mods-available/wsgi.conf
lrwxrwxrwx 1 root root 27 Sep 17 04:03 wsgi.load -> ../mods-available/wsgi.load

Настраиваем виртуальный хост apache
# vi /etc/apache2/sites-available/test_project.com

<virtualhost *:80>
   ServerName your_hostname
   DocumentRoot /home/django-user/test_project/test_project
   WSGIScriptAlias / /home/django-user/test_project/test_project/apache/django.wsgi
</virtualhost>

Запускаем хост
# cd /etc/apache2/sites-available/
# a2ensite test_project.com

Перезапускаем веб сервер и синхронизируем базу данных
# /etc/init.d/apache2 restart
# /etc/init.d/postgresql restart
# su - django-user
$ cd /home/django-user/test_project/
$ python manage.py syncdb

Запускаем сервер
$ python manage.py runserver

Если требуется запустить на определенном IP сетевого интерфейса
$ python manage.py runserver 192.168.2.128:8000

Дополнительная информация