Поиск:

Поиск по:

Результаты поиска по запросу «»
Найдено совпадений
По вашему запросу ничего не найдено
.
Показать еще

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

Инструкции из этой статьи подойдут для Django устаревших версий (до 1.9).

Актуальные версии Django можно развернуть на облачном хостинге.

Django (Джанго) -- это свободный фреймворк, позволяющий быстро и качественно разрабатывать динамические веб-приложения на языке Python.

Django на хостинге доступен на тарифах виртуального хостинга Лайт, Стандарт и Профи.

В данной статье будет описываться один из способов запуска фреймворка Django на хостинге для тарифного плана "Профи". Выполнение настроек на сервере будет производиться через протокол SSH. Для установки соединения можно воспользоваться программой PUTTY и инструкциями из статьи SSH-доступ. Без каких-либо изменений приведенные инструкции будут работать для тарифов "Лайт" и "Стандарт".

Настройка virtualenv

Авторизовавшись на сервере, мы окажемся в своем домашнем каталоге. Внутри домашнего каталога располагаются каталоги ваших сайтов, а также служебные каталоги bin, etc, log и tmp.

Для облегчения работы с библиотеками и приложениями Python на хостинге мы воспользуемся дополнительным приложением virtualenv, который установлен на всех серверах хостинга. Инструмент virtualenv позволит нам создать собственное изолированное окружение Python:

virtualenv --system-site-packages ~/python

После выполнения указанной выше команды будет создан каталог python. Его содержимое выглядит следующим образом:

bin
include
lib

В директории python/bin находится исполняемый бинарный файл python и несколько дополнительных скриптов. В python/lib -- дерево каталогов, повторяющее такое же дерево каталогов у общесистемного python.

Для того чтобы код, написанный на языке python, работал в этом окружении, его нужно запускать, используя интерпретатор /home/uXXXX/python/bin/python, или воспользоваться следующими командами:

source ~/python/bin/activate
echo "source ~/python/bin/activate" >> ~/.bashrc

Установка Django

Если вы уже активировали изолированное окружение, то установка может быть выполнена с помощью команды pip:

pip install Django

Проверка корректности установки

Выйдите из каталога с Django (например, перейдите в домашний каталог) и проверьте, импортируется ли модуль django.

cd
python
>>> import django
>>> django.VERSION
(1, 4, 0, 'final', 0)
>>> django.__path__
['/home/uXXXX/python/lib/python2.6/site-packages/django']

Если указанные команды выполняются без ошибок, значит установка Django на хостинге прошла успешно.

Развертывание проекта

Теперь мы можем создать пустой проект Django и приступить к его наполнению смыслом. Рекомендуем для каждого проекта создавать каталог внутри каталога с сайтом, к которому этот проект относится:

cd ~/sitename.ru && django-admin.py startproject myproject

Весьма вероятно, что проект на самом деле уже готов. В этом случае достаточно просто скопировать каталог с проектом в соответствующую папку.

Поскольку Django будет работать через интерфейс FastCGI, то для включения соответствующих настроек нам необходимо создать CGI-обработчик (враппер):

touch ~/sitename.ru/cgi-bin/django-wrapper.fcgi && chmod 755 ~/sitename.ru/cgi-bin/django-wrapper.fcgi

Созданный файл нужно заполнить следующим текстом:

Для Django версий 1.9 и старше

#!/home/uXXXXX/python/bin/python
# -*- coding: utf-8 -*-
import os
import sys

# Add a custom Python path.
sys.path.insert(0, "/home/uXXXXX/sitename.ru/myproject")

# Switch to the directory of your project. (Optional.)
#os.chdir("/home/uXXXXX/sitename.ru/myproject")

# Set the DJANGO_SETTINGS_MODULE environment variable.
os.environ['DJANGO_SETTINGS_MODULE'] = "myproject.settings"

from django_fastcgi.servers.fastcgi import runfastcgi
from django.core.servers.basehttp import get_internal_wsgi_application

wsgi_application = get_internal_wsgi_application()
runfastcgi(wsgi_application, method="prefork", daemonize="false", minspare=1, maxspare=1, maxchildren=1)

Для Django версии 1.8 и более ранних версий

#!/home/uXXXXX/python/bin/python
# -*- coding: utf-8 -*-
import sys, os

# Add a custom Python path.
sys.path.insert(0, "/home/uXXXXX/sitename.ru/myproject")

# Switch to the directory of your project. (Optional.)
# os.chdir("/home/uXXXXX/sitename.ru/myproject")

# Set the DJANGO_SETTINGS_MODULE environment variable.
os.environ['DJANGO_SETTINGS_MODULE'] = "myproject.settings"

from django.core.servers.fastcgi import runfastcgi
runfastcgi(method="prefork", daemonize="false",
minspare=1, maxspare=1, maxchildren=1)

здесь:

  • uXXXXX -- имя вашего пользователя на сервере хостинга. В большинстве случаев, совпадает с логином
  • myproject -- название созданного проекта

Обратите особое внимание на первую строку:

#!/home/uXXXXX/python/bin/python

Эта строка заставляет работать Python в созданном виртуальном окружении.

Теперь необходимо сообщить веб-серверу Apache о том, что для обработки поступающих запросов должен использоваться созданный ранее враппер. Создадим файл .htaccess в каталоге sitename.ru/www и запишем в него следующее указание:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ cgi-bin/django-wrapper.fcgi/$1 [QSA,L]

Обратившись к сайту sitename.ru через браузер, мы должны увидеть приветственное сообщение от Django. Это означает, что настройки выполнены правильно и можно приступать к работе с проектом.

Дополнительные замечания

  • На серверах хостинга у Вас не получится установить python-модуль, который содержит в себе компоненты, написанные на Си и компилирующиеся в процессе установки.
  • Чтобы перезапустить FastCGI-процесс после обновления кода, достаточно принудительно завершить все текущие FastCGI-процессы командой pkill -u uXXXX -f django-wrapper.fcgi

Настройка каталогов для хранения static и media

Начиная с Django 1.3, фреймворк упорядочил работу со staticfiles и mediafiles.

Теперь после обновления кода на сервере необходимо еще и выполнять команду ./manage.py collectstatic. Эта команда собирает всю статику из каталогов приложений, и копирует ее в единый каталог, указанный в settings.py.

Для корректного отображения статики и медиафайлов, а также для корректной работы management-команды нужно внести следующие настройки в settings.py.

MEDIA_ROOT = '/home/uXXXX/sitename.ru/www/media'
MEDIA_URL = '/media/'
STATIC_ROOT = '/home/uXXXX/sitename.ru/www/static'
STATIC_URL = '/static/'

Регистрация доменов

в зонах .RU .РФ

от 200 рублей Зарегистрировать домен

SSL сертификаты

Подтверждение сайта и надежная защита

передаваемых данных

Купить сертификат

Облачные VDS

дешевле чашки кофе

Процессорных ядер: 4, Память: 4 Гб, Диск: 20 Гб SSD, Резервное копирование

от 35 р/день Заказать VDS

Все, что нужно от хостинга

Простое решение для вашего сайта

Подробнее

Хранилище данных

Храни что хочешь по смешным ценам

Почасовая оплата за размещенные данные.

Заказать хранилище