Хостинг
VDS
Аренда серверов
Домены
Почта
SSL
Хранилище
Сайты
Обзоры
Регламенты
AI Studio
Kubernetes
Архив
Как работает Django

Хостинг - как работает Django

В хостинге некоторые решения могут показаться вам нестандартными.

Поэтому перед началом работы мы бы рекомендовали ознакомиться
с вводной статьей.

1. Запуск Django

2. Перезапуск сервиса после изменения кода сайта

3. Обновление статических файлов

4. Работа с ошибками приложения

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

1. Запуск Django

Выберите один из вариантов:

Показать как создать новый сайт на Django
В панели управления при создании сайта выберите вкладку "Python". Далее выберите базу данных, которую будет использовать проект. Выберите Django с MySQL, либо Django с Postgres. ![stat_hosting_django_1.png](https://media.netangels.ru/website/media/8b022f56fb5e47308dd492eeaf3501bc-stat_hosting_django_1.png) Установка Django прошла успешно, если при открытии сайта вы видите такую страницу: [![](https://media.netangels.ru/website/media/2b902dab84c94c6dbdd2afec75ce30fc-python5.png)]() **Готово!** Если при работе с сайтом возникнут сложности, то вы можете [обратиться в техническую поддержку](https://panel.netangels.ru/requests/new/other/).


Показать как загрузить готовый сайт при помощи FileZilla
Создайте новый сайт [в панели управления](https://panel.netangels.ru/hosting/#/). При создании сайта выберите вкладку "Python". Далее выбираете "Python WSGI", нужный тип базы данных и нужную версию python : ![stat_hosting_django_2.png](https://media.netangels.ru/website/media/21518ffb4928445d96f166637fa5605a-stat_hosting_django_2.png) После создания перйдите на вкладку "Python" на странице сайта и убедитесь, что используется подходящая версия языка. При необходимости смените её и дождитесь применения настроек. Далее подключитесь к серверу по [SFTP](https://www.netangels.ru/support/hosting-ftp-ssh/sftp/). Откройте каталог `имя_сайта/app`. Удалите файлы-заглушки wsgi.py и index.html. ![Настройки](https://media.netangels.ru/website/media/a49ffcdda14f434b93777d620046115b-python6.png) Загрузите файлы сайта перетащив их мышью из левой части экрана в правую. После этого нужно установить зависимости проекта. [Подключитесь по SSH](https://www.netangels.ru/support/hosting-ftp-ssh/ssh/). Перейдите в каталог с сайтом:
cd имя_сайта/app
Установите зависимости:
pip install -r requirements.txt
или
python setup.py install
Далее создайте символическую ссылку на файл wsgi.py, который находится в ```имя_проекта/wsgi.py```.
ln -s имя_проекта/wsgi.py wsgi.py
Если вы не знаете, что указать в `имя_проекта`, то его можно посмотрть в файле `app/manage.py`. В данном случае это `mysite`:
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'mysite.settings’)
Каталог с недавно установленным проектом будет выглядеть так:
$ ls -la
total 16
drwxr-xr-x 3 c3087 c3087 4096 Jun 18 17:51 .
drwxr-xr-x 4 c3087 c3087 4096 Jun 18 16:54 ..
-rwxr-xr-x 1 c3087 c3087  538 May 30 18:01 manage.py
drwxr-xr-x 3 c3087 c3087 4096 Jun 18 17:20 mysite
lrwxrwxrwx 1 c3087 c3087   14 Jun 18 17:00 wsgi.py -> mysite/wsgi.py
Откройте настройки "Python" у сайта [в личном кабинете](https://panel.netangels.ru/hosting/#/). ![stat_hosting_django_3.png](https://media.netangels.ru/website/media/116e704b2d2e40a6bb53cb36d5e0a37e-stat_hosting_django_3.png) После этого нажмите кнопку "Перезапустить Python WSGI". Откройте ваш сайт. Что делать, если вы видите ошибку 502. Если же появилась такая страница: [![](https://media.netangels.ru/website/media/e720477379a44f1d8414264b64189a8e-python7.png)]() То откройте FileZilla, вновь подключитесь к серверу по SFTP и измените параметр [ALLOWED_HOSTS](https://docs.djangoproject.com/en/4.1/ref/settings/#allowed-hosts) в файле ```имя_сайта/имя_проекта/settings.py```. Не забудьте поменять настройки подключения к базе данных в файле ```имя_сайта/имя_проекта/settings.py```. ###### Статические файлы Создайте символическую ссылку на каталог со статическими файлами. Если такой каталог в вашем проекте называется ```static```, то подойдет команда:
ln -s ~/имя_сайта/app/static ~/имя_сайта/www
На хостинге статические файлы необходимо располагать в каталоге `имя_сайта/www`. Поэтому файлы типа `robots.txt`, `yandex-verification` или аналогичные можно переместить в `имя_сайта/www`. **Готово!** Если при переносе сайта возникнут сложности, то вы можете [обратиться в техническую поддержку](https://panel.netangels.ru/requests/new/other/) и мы бесплатно перенесем ваш сайт и поможем советом.


Показать как загрузить готовый сайт через git
Создайте новый сайт [в панели управления](https://panel.netangels.ru/hosting/#/). При создании сайта выберите вкладку "Python". Далее выбираете "Python WSGI", нужный тип базы данных и нужную версию python : ![stat_hosting_django_2.png](https://media.netangels.ru/website/media/21518ffb4928445d96f166637fa5605a-stat_hosting_django_2.png) После создания перйдите на вкладку "Python" на странице сайта и убедитесь, что используется подходящая версия языка. При необходимости смените её и дождитесь применения настроек. [Подключитесь по SSH](https://www.netangels.ru/support/hosting-ftp-ssh/ssh/) Перейдите в каталог с сайтом:
cd имя_сайта
Удалите каталог app
rm -rf app
Клонируйте свой репозиторий в каталог app
git clone <repo> app
Например
git clone https://github.com/python-discord/site.git app
Перейдите в каталог app
cd app
Установите зависимости:
pip install -r requirements.txt
или
python setup.py install
Далее создайте символическую ссылку на файл wsgi.py, который находится в ```имя_проекта/wsgi.py```.
ln -s имя_проекта/wsgi.py wsgi.py
Если вы не знаете, что указать в `имя_проекта`, то его можно посмотрть в файле `app/manage.py`. В данном случае это `mysite`:
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'mysite.settings’)
Каталог с недавно установленным проектом будет выглядеть так:
$ ls -la
total 16
drwxr-xr-x 3 c3087 c3087 4096 Jun 18 17:51 .
drwxr-xr-x 4 c3087 c3087 4096 Jun 18 16:54 ..
-rwxr-xr-x 1 c3087 c3087  538 May 30 18:01 manage.py
drwxr-xr-x 3 c3087 c3087 4096 Jun 18 17:20 mysite
lrwxrwxrwx 1 c3087 c3087   14 Jun 18 17:00 wsgi.py -> mysite/wsgi.py
Откройте настройки "Python" у сайта [в панели управления](https://panel.netangels.ru/hosting/#/). ![stat_hosting_django_3.png](https://media.netangels.ru/website/media/0d27715f065b431aa42a89315e07e2e7-stat_hosting_django_3.png) Нажмите кнопку "Перезапустить Python WSGI". Откройте ваш сайт. Что делать, если вы видите ошибку 502. Если же появилась такая страница: [![](https://media.netangels.ru/website/media/e720477379a44f1d8414264b64189a8e-python7.png)]() То откройте FileZilla, вновь подключитесь к серверу по SFTP и измените параметр [ALLOWED_HOSTS](https://docs.djangoproject.com/en/4.1/ref/settings/#allowed-hosts) в файле ```имя_сайта/имя_проекта/settings.py```. Не забудьте поменять настройки подключения к базе данных в файле ```имя_сайта/имя_проекта/settings.py```. ###### Статические файлы Потребуется создать символическую ссылку на каталог со статическими файлами. Если такой каталог в вашем проекте называется ```static```, то подойдет следующая команда:
ln -s ~/имя_сайта/app/static ~/имя_сайта/www
На хостинге статические файлы необходимо располагать в каталоге `имя_сайта/www`. Поэтому файлы типа `robots.txt`, `yandex-verification` или аналогичные можно переместить в `имя_сайта/www`. **Готово!** Если при переносе сайта возникнут сложности, то вы можете [обратиться в техническую поддержку](https://panel.netangels.ru/requests/new/other/) и мы бесплатно перенесем ваш сайт и поможем советом.


2. Перезапуск сервиса после изменения кода сайта

После изменения кода сайта потребуется перезапуск сервиса.

Для перезапуска:

Показать как перезапустить приложение через консоль
Перейдите в каталог с сайтом:
cd имя_сайта
и выполните команду
touch reload
Например
c3087@h2:~/mydomain.ru$ touch reload


3. Обновление статических файлов

На хостинге вебсервер nginx ищет статические файлы в каталоге имя_сайта/www.

При открытии в браузере ссылки http://имя_сайта/image.png вебсервер попытается найти файл image.png в имя_сайта/www.

Если image.png не найден в имя_сайта/www, то запрос перенаправляется в uwsgi.


Когда вы добавляете на сайт статические файлы (.css, .jpg, .png и другие) необходимо
запустить collectstatic в manage.py.

Показать как запустить collectstatic
В вашем проекте есть каталог для статических файлов, обычно он называется `static`. Если в `~/имя_сайта/www/static` у вас нет символической ссылки на `~/имя_сайта/app/static`, то создайте ее:
ln -s ~/имя_сайта/app/static ~/имя_сайта/www
Проверьте что в файле ```имя_сайта/имя_проекта/settings.py``` указаны переменные
STATIC_URL = '/static/'
STATIC_ROOT = '/home/имя_контейнера/имя_сайта/www/static'
Далее [подключитесь по SSH](https://www.netangels.ru/support/hosting-ftp-ssh/ssh/). Перейдите в каталог с сайтом:
cd имя_сайта
и выполните команду
./manage.py collectstatic


4. Работа с ошибками приложения

Если вместо статических файлов (css, json, jpg и тд) отображается ошибка Django с traceback, то проверьте права на файлы. Права должны быть 750.

Если при обращении к сайту вы видите ошибку 502 Bad Gateway, то:

Нас интересуют параметры APP_PATH и APPLICATION.

* Проверьте, что в APP_PATH путь до wsgi.py указан аналогично тому, как на скриншоте ниже:

* Проверьте параметр APPLICATION. В нем нужно указать объект, с которого вебсервер начнет обрабатывать код вашего сайта. В большинстве случаев он называется application и менять ничего не требуется. Но в вашем проекте он может называться по другому. Подробнее о нем в документации Django.

После этого нажмите кнопку “Перезапустить Python” в верхней части страницы. Попробуйте открыть ваш сайт еще раз.

По-прежнему 502 Bad Gateway? Тогда стоит обратиться к логам ошибок.

Подключитесь к серверу по SFTP.

Посмотрите файл имя_сайта/log/wsgi-runlog/current. Последние ошибки будут в конце файла.

Хостинг
Хостинг
Хостинг
Создавайте неограниченное количество сайтов в изолированных контейнерах
Заказать

Нам доверяют тысячи компаний и разработчиков

22 года
Предоставляем услуги профессионального хостинга
35 000+
Клиентов доверяют нам размещение своих сайтов
99.99%
Подтвержденный uptime наших серверов хостинга
Callibri
Forum
УГМК-Здоровье
Крылья
Tele-Club
Linline
ipos.digital
Магнум
Туристер
RoiBuro
ROSO
Callibri
Forum
УГМК-Здоровье
Крылья
Tele-Club
Linline
ipos.digital
Магнум
Туристер
RoiBuro
ROSO
ВК49865