Прежде всего убедитесь, что у вас подключена услуга «Поддержка Python + Django». На время разработки вам также часто будет нужен доступ по SSH, поэтому перед созданием нового Django-проекта подключите и услугу «Поддержка SSH». Если в качестве базы данных вы будете использовать MySQL, соответствующая услуга также должна быть подключена.
- Подключитесь к серверу по SSH и создайте и активируйте виртуальное окружение Python (если вы создаете не первый проект и в качестве виртуального окружения хотите использовать уже существующее, пропустите этот и следующие два шага). Введите команды:
virtualenv-2.7 virtualenv/MyEnv
. virtualenv/MyEnv/bin/activate
В результате будет создана папка virtualenv/MyEnv. Вместо MyEnv вы можете выбрать и любое другое имя виртуального окружения.
- В рамках виртуального окружения установите свежую версию Django:
pipinstall --upgrade django
Можно установить и любую другую версию. Например, 1.0:
pip install --upgrade django==1.0
Таким же образом можно установить и любые другие модули Python.
- Создайте папку, где будут располагаться ваши проекты. Эта папка должна находиться вне DOCUMENT_ROOT, то есть вне папок вида domains/имя_домена. Лучшим вариантом будет создать папку django рядом с директорией domains:
mkdir django
- Перейдите в папку с проектами и создайте новый проект:
cd django django-admin.py startproject имя_проекта
В результате будет создана папка имя_проекта со стандартным шаблоном Django-проекта.
- Откройте файл settings.py и измените в нем значения необходимых переменных. В качестве значения переменной STATIC_ROOT укажите
os.path.join(os.path.expanduser('~'), 'domains/имя_домена/static/')добавив в самое начало файла строку
import os
Внимание! Если вы будете использовать команду syncdb через SSH, то при использовании MySQL в качестве движка баз данных в поле HOST словаря DATABASES[‘default’] обязательно нужно указать IP 127.0.0.1. Подробнее об этом здесь.
Более подробную информацию о переменных, доступных для редактирования в settings.py, можно найти в документации Django.
-
Если вы будете использовать mod_wsgi (предпочтительный вариант):
В директории домена, на котором будет находиться ваш проект (domains/имя_домена) создайте файл django.wsgi и поместите в него такие строки:
import os, sys virtual_env = os.path.expanduser('~/virtualenv/MyEnv') activate_this = os.path.join(virtual_env, 'bin/activate_this.py') execfile(activate_this, dict(__file__=activate_this)) sys.path.insert(0, os.path.join(os.path.expanduser('~'), 'django/имя_проекта')) os.environ['DJANGO_SETTINGS_MODULE'] = 'имя_проекта.settings' import django.core.handlers.wsgi application = django.core.handlers.wsgi.WSGIHandler()Примечание. Обратите также внимание на пятую и шестую строки этого кода: если вы в своих проектах обычно не используете имя проекта внутри оператора import (например,«from имя_приложения.models import *», а не «from имя_проекта.имя_приложения.models import *» в файле views.py), то указывать имя проекта в пятой строке нужно два раза, а во второй, наоборот, не нужно:
sys.path.insert(0, os.path.join(os.path.expanduser('~'), 'django/имя_проекта/имя_проекта')) os.environ['DJANGO_SETTINGS_MODULE'] = 'settings'Вернитесь к этому примечанию, если будете получать ошибки вида «ImportError: No module named…»
Затем создайте в той же папке еще один файл — .htaccess — и поместите в него следующие директивы:
AddHandler wsgi-script .wsgi RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*)$ /django.wsgi/$1 [QSA,PT,L] -
Если вы будете использовать mod_python (не рекомендуется):
В папке с проектами (django) создайте файл modpython_virtualenv.py с таким содержимым внутри:
import os virtual_env = os.path.expanduser('~/virtualenv/MyEnv') activate_this = os.path.join(virtual_env, 'bin/activate_this.py') execfile(activate_this, dict(__file__=activate_this)) from django.core.handlers.modpython import handlerВ директории домена, на котором будет находиться ваш проект (domains/имя_домена) создайте файл .htaccess и поместите в него такие строки:
AddDefaultCharset utf-8 SetHandler python-program PythonHandler modpython_virtualenv SetEnv DJANGO_SETTINGS_MODULE имя_проекта.settings PythonPath "['/home/usersX/первая_буква_логина/логин/django/имя_проекта'] + sys.path" PythonDebug On PythonAutoReload On
Примечание. Здесь и далее X в имени директории usersX может быть целым числом (1, 2, …) или вообще отсутствовать. Точное значение для вашего аккаунта уточняйте в разделе «Техподдержка / Техническая информация» контрольной панели аккаунта (смотрите значение параметра «Домашняя директория»).
Позже, когда проект будет запускаться в публичную эксплуатацию, не забудьте поменять значения директив PythonDebug и PythonAutoReload на Off — это предотвратит демонстрацию отладочной информации об ошибках всем посетителям и несколько ускорит работу сайта.
Примечание. Обратите также внимание на директивы SetEnv и PythonPath: если вы в своих проектах обычно не используете имя проекта внутри оператора import (например,«from имя_приложения.models import *», а не «from имя_проекта.имя_приложения.models import *» в файле views.py), то указывать имя проекта в директиве SetEnv не нужно, а в PythonPath, наоборот, нужно два раза:
SetEnv DJANGO_SETTINGS_MODULE settings PythonPath "['/home/usersX/первая_буква_логина/логин/django/имя_проекта/имя_проекта'] + sys.path"
Кроме того, поместите файл modpython_virtualenv.py внутрь папки проекта.
Вернитесь к этому примечанию, если будете получать ошибки вида «ImportError: No module named…»
Далее, во всех папках в директории домена, в которых будут содержаться статические файлы (например, static), нужно также создать по файлу .htaccess с такой строкой внутри:
SetHandler None
На этом установка проекта завершена. Теперь вы можете создавать приложения и приступать к разработке.
Если же в результате выполнения этих действий получаете в браузере ошибку 500, загляните в раздел «Статистика / Лог-файлы».