Перейти к содержимому

Как запустить отладочный веб сервер django

  • автор:

Блог на Django #3: Запуск сервера

В Django есть веб-сервер, который нужен для быстрой проверки кода. Благодаря ему не нужно заниматься наладкой полноценного рабочего решения. При его запуске сервер продолжает проверять изменения в коде и самостоятельно перезагружается. Но некоторые вещи он не замечает: такие как появление новых файлов в проекте. В таком случае нужно перезагрузить сервер вручную.

Запустить сервер можно с помощью следующей команды в корневом каталоге:

python manage.py runserver 

Появятся приблизительно такие строки:

Performing system checks. System check identified no issues (0 silenced). November 16, 2019 - 15:20:27 Django version 2.0.5, using settings 'mysite.settings' Starting development server at http://127.0.0.1:8000/ Quit the server with CTRL-BREAK. 

Теперь нужно открыть https://127.0.0.1:8000/ в браузере. Страница сообщит, что проект работает. Как на следующем скриншоте:

Запуск первого проекта

Это изображение сообщает, что Django работает. Если взглянуть на консоль, то можно увидеть запрос GET от браузера:

[16/Nov/2019 15:22:45] "GET / HTTP/1.1" 200 16348 

Каждый HTTP-запрос регистрируется отдельно. В командной строке будут отображаться все ошибки, которые появятся в процессе работы.

Можно запустить сервер на другом порте или использовать другой файл настроек с помощью таких команд:

python manage.py runserver 127.0.0.1:8001 --settings=mysite.settings 

Работая с разными средами, требующими разных настроек, можно создать несколько файлов для каждой из них.

Этот сервер стоит использовать только для разработки, но не для полноценного использования. Чтобы развернуть Django в производственной среде (production) его нужно запустить в качестве WSGI-приложения с помощью реального инструмента: Apache, Gunicorn или uWSGI.

  • ТЕГИ
  • Django
  • Создание блога на Django 2.0

# Запуск Django-проекта на Джино.Хостинге

# Подготовка хостинга к запуску Django-проекта

Создайте новый хостинг-контейнер и подключите услуги Поддержка веб-приложений и Поддержка SSH. По умолчанию для работы с базами данных Django использует SQLite, но если её возможностей будет недостаточно, в разделе Услуги подключите MYSQL или PostgreSQL.

Для запуска Django-проекта на хостинге нужно создать виртуальное окружение для той же версии Python, на которой создан проект. Создайте виртуальное окружение командой:

/opt/alt/python37/bin/virtualenv --python /opt/alt/python310/bin/python3 venv310 

Здесь /opt/alt/python37/bin/virtualenv — путь к утилите virtualenv, отвечающей за создание виртуального окружения на хостинге; /opt/alt/python310/bin/python3 — путь к интерпретатору Python 3.10. Все доступные версии Python и пути к их интерпретаторам представлены в разделе Управление

На Джино.Хостинге утилита для создания виртуального окружения vitualenv расположена по адресу /opt/alt/python37/bin/virtualenv и с помощью неё создаётся виртуальное окружение для любой версии Python.

# Загрузка Django-проекта

Способы загрузки Django-проекта на сервер:

  • загрузка через протоколы передачи файлов (FTP, FTPS, SFTP);
  • использование git-репозитория;
  • загрузка проекта с помощью инструментов, встроенных в IDE.

# Запуск Django-проекта

Для запуска Django-проекта нужно:

  • указать URL-адрес, на котором будет работать приложение;
  • установить зависимости проекта;
  • создать файл passenger_wsgi.py, который будет отвечать за обработку веб-сервером запросов к Django;
  • выбрать интерпретатор для домена.

# Указание URL

В папке проекта в файле settings.py найдите строку ALLOWED_HOSTS = [] и укажите в ней адрес своего сервера. Например: ALLOWED_HOSTS = [‘example.com’] .

# Установка зависимостей проекта

Для некоторых проектов может понадобиться установка дополнительных зависимостей, установленных в локальном окружении. Чтобы установить зависимости в виртуальное окружение на сервере, создайте файл requirements.txt на локальной машине. Для этого выполните команду:

pip freeze > requirements.txt 

При загрузке проекта на сервер проследите, чтобы файл requirements.txt был загружен вместе с другими файлами проекта.

После этого активируйте созданное на хостинге виртуальное окружение:

source ./venv310/bin/activate 

Далее в папке приложения выполните команду:

pip install -r requirements.txt 

# passenger_wsgi.py

Файл passenger_wsgi.py обеспечивает взаимодействие Django-проекта с веб-сервером. Он должен находиться в папке с доменным именем рядом с главным файлом проекта manage.py. Содержимое файла passenger_wsgi.py должно быть следующим:

import sys, os INTERP = os.path.expanduser("~/venv310/bin/python3") if sys.executable != INTERP: os.execl(INTERP, INTERP, *sys.argv) from project.wsgi import application 

Здесь в строке INTERP= указан путь к исполняемому файлу виртуального окружения, созданного на этапе подготовки хостинг-контейнера; в строке from project.wsgi. — wsgi-файл, отвечающий за запуск приложения на веб-сервере.

# Выбор интерпретатора

В разделе Управление

Настройки веб-сервера выберите версию интерпретатора Python, на которой работает ваше приложение.

После этого в адресной строке браузера введите адрес вашего сервера.

Вы должны увидеть стартовую страницу вашего сайта.

Запуск Django-приложения на Хостинге, созданном до 28.04.2022

Для запуска Django-проекта на Хостинг-аккаунте, созданном до 28.04.2022, понадобится виртуальное окружение, созданное командой:

virtualenv-3.9 venv39 

После создания виртуального окружения активируйте его:

source ./venv39/bin/activate 

Далее установите Django с помощью стандартного менеджера пакетов pip:

pip install django 

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

Папка, содержащая проект, должна находиться вне папки ~/domains .

Для запуска Django-проекта создайте файл .htaccess в папке ~/domains/your_domain . Здесь your_domain — доменное имя, на котором будет работать сайт. Если у вас ещё нет домена или он не привязан к Хостингу, воспользуйтесь техническим адресом сервера. Технический адрес сервера представлен в разделе Управление

Настройки SSH в строке Имя сервера и имеет общий вид 123xyz.hosting.myjino.ru или j12345678.myjino.ru.

В файл .htaccess поместите следующие директивы:

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

Этот файл определяет, что в качестве рабочего файла для mod_passenger будет использоваться файл с расширением .wsgi, и далее напрямую указывает имя этого файла django.wsgi.

Теперь создайте файл django.wsgi в папке ~/domains/your_domain .

Содержимое django.wsgi должно быть следующим:

import os, sys virtual_env = os.path.expanduser('~/venv39') activate_this = os.path.join(virtual_env, 'bin/activate_this.py') exec(open(activate_this).read(), dict(__file__=activate_this)) sys.path.insert(0, os.path.expanduser('~/path/to/your/project')) from project.wsgi import application 

В этом файле указан путь к папке с виртуальным окружением, путь к файлу, активирующему виртуальное окружение, и путь к wsgi-файлу проекта.

Далее в разделе Управление

Настройки веб-сервера проверьте версию Python, которая используется на домене. Она должна совпадать с версией, для которой создано виртуальное окружение.

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

# Подключение баз данных

По умолчанию в качестве СУБД Django использует SQLite, но к проекту можно подключить MySQL или PostgreSQL в разделе Услуги .

После этого в разделе Управление

Управление MySQL(PostgreSQL) создайте новую базу данных и нового пользователя для неё:

«django_sql»

Для подключения базы данных к Django-проекту понадобится клиент, работающий с выбранным типом баз данных.

В случае с MySQL — это mysqlclient, для PostgreSQLpsycopg2.

В связи с особенностями функционирования программной платформы, mysqlclient и psycopg2 временно не могут быть установлены в виртуальное окружение, созданное для Python 3.10. Для версий Python 3.9 и старше всё работает.

Установите клиент в активированном виртуальном окружении:

(venv39)user@hosting: pip install mysqlclient 

После того как клиент успешно установится, настройте подключение приложения к базе.

В файле settings.py приведите раздел DATABASES к следующем виду:

... DATABASES =  'default':  'ENGINE': 'django.db.backends.mysql', 'NAME': 'j12345678_django-app', 'USER': 'j12345678', 'PASSWORD': 'password', 'HOST': 'localhost', 'PORT':'3306', > > ... 
  • в строке ENGINE укажите, какой движок используется для работы с базами данных (mysql или postgresql);
  • в строках NAME , USER и PASSWORD укажите данные только что созданной базы данных и пользователя;
  • в строках HOST и PORT опишите сетевые параметры для подключения к базе данных. В данном случае база данных и Django-проект расположены в одном хостинг-контейнере, поэтому подключаться к базе можно с параметром localhost . Для подключения Django-проекта к базе данных, расположенной на другом хостинг-контейнере, воспользуйтесь данными, представленными в разделе Управление

В консоли SSH-подключения перейдите в папку с приложением и запустите миграцию зависимостей:

python manage.py makemigrations python manage.py migrate 

При возникновении ошибок в работе базы данных миграция зависимостей не будет произведена, и дальнейшая работа приложения будет невозможна.

После успешной миграции зависимостей перезагрузите веб-сервер ( Управление

Перезагрузить ) и проверьте работу проекта. Откройте в браузере адрес, на котором расположен проект, и проверьте наличие стартовой страницы.

© Джино, 2003–2022. «Джино» является зарегистрированным товарным знаком.
Лицензия на телематические услуги связи №150549 от 09.03.2017.

Отладка проекта Django в Pycharm

Мы с вами уже умеем создавать простейшее приложение на Django и наблюдать его работу с использованием тестового веб-сервера. Но, прежде чем идти дальше, было бы еще хорошо научиться отлаживать непосредственно и программный код, то есть, запускать программу в режиме отладки. Если в PyCharm мы сделаем это стандартными средствами, поставим точку останова и запустим программу в режиме отладки, то получим ошибку, так как проект Django следует исполнять командой:

python manage.py runserver

И эта команда по умолчанию не запускает наши скрипты в debug-режиме. Чтобы это поправить, необходимо создать свой файл конфигурации. Для этого необходимо кликнуть в PyCharm на кнопку «Add Configurations…» или «Edit Configurations…».

В появившемся окне нажмите «+», выберите Python и затем, заполните следующие поля:

  • name: sitewomen
  • Working directory: D:\Python\Projects\django\sitewomen (увидим версию интерпретатора языка Python)
  • Script path: D:\Python\Projects\django\sitewomen\manage.py
  • Parameters: runserver

После этого запускаем через Debug проект Django и, как видим, имеем возможность останавливаться в выставленных точках отладки. Обратите внимание, что перед запуском новой конфигурации отладочный веб-сервер должен быть остановлен. Дело в том, что один порт может быть занят только одной программой, поэтому если сервер ранее уже был запущен стандартным способом, то pycharm в режиме отладки не будет останавливаться в точках останова. Также последние версии PyCharm (под ОС Windows) в качестве терминала используют оболочку PowerShell. По идее, это не должно влиять на работу, но если возникают какие-либо проблемы, то, как вариант, можно поменять ее на прежний терминал. Для этого в PyCharm нужно выбрать в меню пункт «Settings…», набрать в поиске «Terminal» и в открывшейся вкладке указать команду cmd.exe: Но, в моем случае это не играет особой роли, скорее, это дело вкуса. Курс по Django: https://stepik.org/a/183363

Запуск сервера для разработки

Джанго поставляется с облегченным веб-сервером для быстрого запуска сайта без необходимости тратить время на настройку сервера. При запуске сервера разработки Джанго он в режиме реального времени следит за изменениями в коде. Он автоматически перезагружается, после изменения кода. Однако это может не сработать для некоторых действий, таких как добавление новых файлов в проект, в этих случаях потребуется перезапустить сервер вручную.

Запустите сервер с помощью команды:

python manage.py runserver 

Тереминал отобразит что-то подобное:

Performing system checks. System check identified no issues (0 silenced). November 5, 2015 - 19:10:54 Django version 1.8.6, using settings 'mysite.settings' Starting development server at http://127.0.0.1:8000/ Quit the server with CONTROL-C. 

Теперь откройте URL-адрес http://127.0.0.1:8000/в браузере. Вы увидите страницу, в которой рассказывается, что проект успешно запущен, как показано на следующем снимке экрана:

Вы можете указать Django на каком хосту и порту нужно запускаться, или сообщить, что необходимо запустить проект, загрузив другой файл параметров. Например, можно запустить команду manage.py следующим образом:

python manage.py runserver 127.0.0.1:8001 \ --settings=mysite.settings 

Это удобно для использования нескольких сред, для которых требуются различные параметры. Помните, что этот сервер предназначен только для разработки и не подходит для производственного использования. Чтобы развернуть Джанго в производственной среде, следует запустить его в качестве Web Server Gateway Interface (WSGI) с помощью реального веб-сервера, например Apache, Gunicorn или WSGI. Дополнительные сведения о развертывании Джанго с различными веб-серверами можно найти в https://docs.djangoproject.com/en/1.8/howto/deployment/wsgi/ .

results matching » «

No results matching » «

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *