Запуск Django на хостинге

Что такое Django

Django - это веб-фреймворк, предназначенный для удобного и быстрого создания качественных веб-приложений. По своей идеологии Django очень близок к фреймворку Ruby On Rails, и использует для работы паттерн "Model-View-Controller". В отличие от Ruby On Rails, Django предназначен для создания приложений на языке Python.

Как запустить и работать с Django

Django  может быть размещен только на тарифных планах "Профи" или "VDS". Ограничение на один FastCGI сервер на аккаунт приводит к ограничению для Django - вы можете запустить только один проект (project в терминах Django) для аккаунта. Для пользователей тарифного плана VDS рекомендуется создавать новый VDS-аккаунт каждый раз при запуске нового Django-проекта.

Для того чтобы получить работающий Django на своем аккаунте, необходимо через панель управления написать заявку в службу технической поддержки. Заявка должна содержать требуемую версию фреймворка (возможна установка любой версии, в том числе и последней версии из SVN) и, желательно, имя проекта, с которым будет вестись работа. Это имя проекта впоследствии Вы сможете изменить самостоятельно.

В результате выполнения заявки Вы получите следующую конфигурацию:

  • Все Ваши python-библиотеки располагаются в каталоге "python", находящемся внутри домашнего каталога. В этом же каталоге располагается выбранный Вами дистрибутив Django, здесь же должен оказаться Ваш проект.
  • Имя проекта может быть выбрано произвольно. Оно определяется содержимым файла python/project.txt . Таким образом, для того чтобы указать, например, что Ваш текущий проект Django называется myproject, достаточно выполнить, залогинившись через SSH, команду:
    echo myproject > python/project.txt

  • Мы предлагаем использовать конфигурацию, при которой все существующие файлы, расположенные внутри каталога site.ru/www/, выдаются непосредственно веб-сервером Apache, а все остальные запросы (всё, что не было найдено в этом каталоге) передается на обработку приложению Django. Это позволяет снять необходимость обработки статики с Django, снизить нагрузку и  таким образом ускорить работу всего приложения. Для того чтобы реализовать такую возможность, достаточно в корневой .htaccess прописать следующие строчки:

    RewriteEngine On
    RewriteCond     %{REQUEST_FILENAME} !-f
    RewriteRule     ^(.*)$          /cgi-wrapper/fastcgi-wrapper/$1 [QSA,L]
  • Основное преимущество технологии FastCGI перед CGI состоит в том, что в то время как CGI на каждый запрос HTTP порождает отдельный процесс, FastCGI запускает отдельный сервер, который некоторое время "висит" в памяти, обрабатывая подряд идущие от веб-сервера запросы, что значительно ускоряет (отсюда и Fast...) работу приложения и экономит системные ресурсы. Обратной стороной этого способа запуска является то, что запущенный процесс уже не отслеживает изменения, сделанные в коде позже его запуска. Самый простой способ решения проблемы - перезапуск FastCGI-сервера вручную после того, как код был изменен. Для этого в консоли SSH необходимо выполнить:

    pkill -u uXXXX fastcgi-wrapper

    где uXXXX - это Ваш логин в нашей системе.

Вопрос-Ответ

Почему  при первом заходе на сайт он так долго открывается?

При отсутствии активности в течение получаса Django сервер, обрабатывающий FastCGI запросы, останавливается. При первом запросе он запускается (процесс запуска может занять несколько секунд) и в результате ответ на первый запрос задерживается. Все остальные запросы обрабатываются в нормальном режиме. 

Могу ли я использовать совместно PHP и Django?

Да, совместная работа Django и PHP возможна. Например, на тарифе "Профи" Вы можете запустить один сайт с движком, написанным на Django, а остальные (если такие есть) на PHP. Однако нужно отметить, что выбор Django в качестве FastCGI-приложения приведет к тому, что PHP будет запускаться как CGI-скрипт (а это, в свою очередь, ведет к снижению скорости работы приложения и невозможности использовать eaccelerator).