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