В хостинге некоторые решения могут показаться вам нестандартными.
Поэтому перед началом работы мы бы рекомендовали ознакомиться с вводной статьей.
1. Запуск Django
2. Перезапуск сервиса после изменения кода сайта
3. Обновление статических файлов
4. Работа с ошибками приложения
Django (Джанго) это свободный фреймворк, позволяющий быстро и качественно разрабатывать динамические веб-приложения на языке Python. Django используется для сайтов Bitbucket, Instagram, The Washington Times и других.
Выберите один из вариантов:
В панели управления при создании сайта выберите вкладку “Установить CMS/Framework”.
Далее выберите базу данных, которую будет использовать проект.
Выберите Django с MySQL, либо Django с Postgres.
Установка Django прошла успешно, если при открытии сайта вы видите такую страницу:
Готово!
Если при работе с сайтом возникнут сложности, то вы можете обратиться в техническую поддержку.
Создайте новый сайт в панели управления. При создании сайта выберите, что сайт работает на Python:
После создания перйдите на вкладку “Python” на странице сайта и убедитесь, что используется подходящая версия языка. При необходимости смените её и дождитесь применения настроек.
Далее подключитесь к серверу по SFTP.
Откройте каталог имя_сайта/app
.
Удалите файлы-заглушки wsgi.py и index.html.
Загрузите файлы сайта перетащив их мышью из левой части экрана в правую.
После этого нужно установить зависимости проекта. Подключитесь по 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”.
Откройте ваш сайт. Что делать, если вы видите ошибку 502.
Если же появилась такая страница:
То откройте FileZilla, вновь подключитесь к серверу по SFTP и измените параметр ALLOWED_HOSTS в файле имя_сайта/имя_проекта/settings.py
.
Не забудьте поменять настройки подключения к базе данных в файле имя_сайта/имя_проекта/settings.py
.
Создайте символическую ссылку на каталог со статическими файлами. Если такой каталог в вашем проекте называется static
, то подойдет команда:
ln -s ~/имя_сайта/app/static ~/имя_сайта/www
На хостинге статические файлы необходимо располагать в каталоге имя_сайта/www
.
Поэтому файлы типа robots.txt
, yandex-verification
или аналогичные можно переместить в имя_сайта/www
.
Готово!
Если при переносе сайта возникнут сложности, то вы можете обратиться в техническую поддержку и мы бесплатно перенесем ваш сайт и поможем советом.
Создайте новый сайт в панели управления. При создании сайта выберите, что сайт работает на Python:
После создания перйдите на вкладку “Python” на странице сайта и убедитесь, что используется подходящая версия языка. При необходимости смените её и дождитесь применения настроек.
Перейдите в каталог с сайтом:
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”.
Откройте ваш сайт. Что делать, если вы видите ошибку 502.
Если же появилась такая страница:
То откройте FileZilla, вновь подключитесь к серверу по SFTP и измените параметр ALLOWED_HOSTS в файле имя_сайта/имя_проекта/settings.py
.
Не забудьте поменять настройки подключения к базе данных в файле имя_сайта/имя_проекта/settings.py
.
Потребуется создать символическую ссылку на каталог со статическими файлами. Если такой каталог в
вашем проекте называется static
, то подойдет следующая команда:
ln -s ~/имя_сайта/app/static ~/имя_сайта/www
На хостинге статические файлы необходимо располагать в каталоге имя_сайта/www
.
Поэтому файлы типа robots.txt
, yandex-verification
или аналогичные можно переместить в имя_сайта/www
.
Готово!
Если при переносе сайта возникнут сложности, то вы можете обратиться в техническую поддержку и мы бесплатно перенесем ваш сайт и поможем советом.
После изменения кода сайта потребуется перезапуск сервиса.
Для перезапуска:
Перейдите в каталог с сайтом:
cd имя_сайта
и выполните команду
touch reload
Например
c3087@h2:~/mydomain.ru$ touch reload
На хостинге вебсервер nginx ищет статические файлы в каталоге имя_сайта/www
.
При открытии в браузере ссылки http://имя_сайта/image.png
вебсервер попытается найти файл image.png
в имя_сайта/www
.
Если image.png не найден в имя_сайта/www
, то запрос перенаправляется в uwsgi.
Когда вы добавляете на сайт статические файлы (.css, .jpg, .png и другие) необходимо
запустить collectstatic
в manage.py
.
В вашем проекте есть каталог для статических файлов, обычно он называется static
.
Если в ~/имя_сайта/www/static
у вас нет символической ссылки на ~/имя_сайта/app/static
, то создайте ее:
ln -s ~/имя_сайта/app/static ~/имя_сайта/www
Проверьте что в файле имя_сайта/имя_проекта/settings.py
указаны переменные
STATIC_URL = '/static/'
STATIC_ROOT = '/home/имя_контейнера/имя_сайта/www/static'
Далее подключитесь по SSH.
Перейдите в каталог с сайтом:
cd имя_сайта
и выполните команду
./manage.py collectstatic
Если вместо статических файлов (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
. Последние ошибки будут в конце файла.