Установка Django

Django - свободный фреймворк для веб-приложений на языке Python, использующий шаблон проектирования Model-View-Controller. Один из основных принципов фреймворка — DRY (Don't Repeat Yourself). В данной статье мы расскажем, как с лёгкостью установить данный фреймворк у нас на хостинге.

Алгоритм по установке Django

У нас на серверах установлен Python 3.6 или 3.9. В зависимости от версии Python имеются ограничения по работе некоторых версий Django: на Python 3.6 нет возможности поставить последнюю версию Django. Если вам нужна именно последняя версия, обратитесь в техническую поддержку

  • Шаг 1Определяем доступную версию python. Для этого выведем установленную версию:

    /opt/python3/bin/python3 -V
    python3 -V

    В зависимости от установленной версии, будут различаться пути и действия по установке, поэтому в зависимости от версии следуйте инструкции под установленную версию.

Версия Python 3.6:

Python 3.6 поддерживает только более старую версию Django - 3.2.15. Если вам требуется более свежая версия Django, обратитесь в техническую поддержку.

Вначале создаем виртуальное окружение и прописываем его автоматическую активацию (виртуальное окружение лучше создавать в корне аккаунта, так как при необходимости его можно использовать в нескольких проектах):

cd ~
virtualenv --python=/opt/python/bin/python3 virtualenv

Добавим его автоматическую активацию при входе на ssh:

echo "source ~/virtualenv/bin/activate" >> ~/.bash_profile
  • Шаг 2Активируем ранеее установленное окружение:

    source virtualenv/bin/activate

    Устанавливаем pip, mysqlclient и django последней доступной версии (можно использовать более старую, но более новая работать не будет).

    pip3 install --user --upgrade pip
    pip3 install --user --upgrade mysqlclient
    pip3 install --user --upgrade django==3.2.15
  • Шаг 3Далее следует создание проекта, его лучше создавать в директории домена, на уровне директорий htdocs и logs:

    cd ~/hostXXXXXXX.hostland.pro
    django-admin startproject newdjangoproject

    hostXXXXXXXX - номер Вашего аккаунта.

    В файле newdjangoproject/newdjangoproject/settings.py нужно изменить несколько моментов:

    - В строчке ALLOWED_HOSTS прописать Ваш домен, примерно в таком виде:

    ALLOWED_HOSTS = ['.домен.ru']

    - Если используется вышеуказанная структура директорий, то нужно будет указать STATIC_ROOT с полным путем, где будет генерироваться статика. По-умолчанию этой строки нет, и следует её указать ближе к концу в таком виде:

    STATIC_ROOT = "/home/hostXXXXXXX/hostXXXXXXX.hostland.pro/htdocs/www/static"

    - Тип базы данных надо изменить с sqlite на Mysql (из-за требования очень свежей версии SQLite, его использование будет выдавать ошибку). Для этого, предварительно создав базы данных и пользователя в Панели управления, содержимое блока "DATABASES =" приводим к следующему виду:

    DATABASES = {
        'default': {
             'ENGINE': 'django.db.backends.mysql',
             'NAME': 'hostXXXXXXX_t',
             'USER': 'hostXXXXXXX_t',
             'PASSWORD': 'ZZZZZZZ',
             'OPTIONS': {
                 "init_command": "SET foreign_key_checks = 0;",
              },
        }
    }

    Остается только зайти в директорию проекта и создать структуру данных в Mysql:

    cd newdjangoproject
    ./manage.py migrate

Версия Python 3.9:

Поддерживает все актуальные версии Django.

Вначале создаем виртуальное окружение и прописываем его автоматическую активацию (виртуальное окружение лучше создавать в корне аккаунта, так как при необходимости его можно использовать в нескольких проектах):

cd ~
virtualenv --python=/usr/bin/python3.9 virtualenv

Добавим его автоматическую активацию при входе на ssh:

echo "source ~/virtualenv/bin/activate" >> ~/.bash_profile
  • Шаг 2Активируем ранеее установленное окружение:

    source virtualenv/bin/activate

    Устанавливаем pip, django:

    pip3 install --user --upgrade pip
    pip3 install --user --upgrade django
  • Шаг 3Далее следует создание проекта, его лучше создавать в директории домена, на уровне директорий htdocs и logs:

    cd ~/hostXXXXXXX.hostland.pro
    django-admin startproject newdjangoproject

    hostXXXXXXXX - номер Вашего аккаунта.

    В файле newdjangoproject/newdjangoproject/settings.py нужно изменить несколько моментов:

    - В строчке ALLOWED_HOSTS прописать Ваш домен, примерно в таком виде:

    ALLOWED_HOSTS = ['.домен.ru']

    - Если используется вышеуказанная структура директорий, то нужно будет указать STATIC_ROOT с полным путем, где будет генерироваться статика. По-умолчанию этой строки нет, и следует её указать ближе к концу, в таком виде:

    STATIC_ROOT = "/home/hostXXXXXXXX/hostXXXXXXXX.hostland.pro/htdocs/www/static"
  • Шаг 4Переходим в раздел Файловый менеджер и в папке ~/django-test.com/htdocs/www создаём новый файл django.wsgi. Прописываем туда следующие настройки:

    import os
    import sys
    virtual_env = os.path.expanduser('/home/hostXXXXXXXX/virtualenv/')
    activate_this = os.path.join(virtual_env,'bin/activate_this.py')
    #execfile(activate_this, dict(__file__=activate_this))
    with open(activate_this) as f:
        exec(f.read(), {'__file__': activate_this})
    sys.path.append('/home/hostXXXXXXX/hostXXXXXXX.hostland.pro/htdocs/www/')
    sys.path.append('/home/hostXXXXXXX/hostXXXXXXX.hostland.pro/newdjangoproject/')
    sys.path.append('/home/hostXXXXXXX/hostXXXXXXX.hostland.pro/newdjangoproject/lib/')
    #print >> sys.stderr, sys.path
    os.environ['DJANGO_SETTINGS_MODULE'] = 'newdjangoproject.settings'
    import django.core.handlers.wsgi
    from django.core.wsgi import get_wsgi_application
    application = get_wsgi_application()
  • Шаг 5После сохранения django.wsgi создаём ещё один файл .htaccess в той же директории и прописываем следующие директивы:

    AddHandler wsgi-script .wsgi
    RewriteEngine on
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^(.*)$ /django.wsgi/$1 [QSA,PT,L]

На этом установка завершена. Если всё сделано верно, то при открытии главной страницы сайта, Вы увидите стартовую страницу:

Стартовая страница Zend

Удачной работы! Если возникнут вопросы - напишите нам, пожалуйста, тикет из панели управления хостингом, раздел «Помощь и поддержка».