Как опубликовать демонстрационное приложение Django в Интернете с помощью Ngrok?

Как опубликовать демонстрационное приложение Django в Интернете с помощью Ngrok?

Давайте узнаем, как выставить демонстрационное приложение Django в Интернет. То есть без размещения на хостинге.

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

Лучший вариант — использовать инструмент для обнаружения вашего текущего локального сервера. Именно так! Люди со всего мира смогут видеть, что происходит на вашем локальном хосте.

Для этого воспользуемся Ngrok. Этот инструмент позволит нам создавать общедоступные URL-адреса на основе локальных портов наших компьютеров. Все это благодаря магии Туннелей.

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

Предпосылки

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

Создание приложения Django

Чтобы сделать пошаговое руководство, я объясню процесс создания проекта Django. Если он у вас уже есть, вы можете пропустить этот раздел.

Виртуальная среда

Прежде всего, давайте создадим виртуальную среду Python.

  • Итак, откройте системный терминал (или оболочку).
  • Если вам кажется слишком сложным открыть системный терминал, попробуйте использовать встроенный терминал редактора кода.
  • Нажмите «Терминал»> «Новый терминал», и в нижней части экрана должна появиться оболочка.
  • Введите следующую команду, чтобы создать виртуальную среду с помощью встроенного инструмента Python.
python -m venv .venv

В основном это означает:

Привет, Python, создай команду виртуальной среды (-m venv) с именем .venv

  • Теперь, если вы перечислите файлы вашего текущего каталога, вы должны увидеть папку .venv.
$ ls -l
drwxr-xr-x    - daniel 30 abr 23:12 .venv
# Other files ...
  • Чтобы активировать виртуальную среду, мы вызываем команду source.
source .venv/bin/activate

Платформа
Оболочка
Команда для активации виртуальной среды
POSIX
баш/зш
$ источник /bin/активировать

рыба
$ источник /bin/activate.fish

csh/tcsh
$ источник /bin/activate.csh

Ядро PowerShell
$ /bin/Activate.ps1
Окна
cmd.эке
C:> Скриптыактивировать.bat

PowerShell
PS C:> ScriptsActivate.ps1

Теперь, если вы выполнили правильную команду, в вашей оболочке должно быть имя виртуальной среды.

$ source .venv/bin/activate.fish

(.venv) $ 

Установить Джанго

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

$ pip install django
Collecting django
  Using cached Django-3.2-py3-none-any.whl (7.9 MB)
Collecting pytz
  Using cached pytz-2021.1-py2.py3-none-any.whl (510 kB)
Collecting asgiref=3.3.2
  Using cached asgiref-3.3.4-py3-none-any.whl (22 kB)
Collecting sqlparse>=0.2.2
  Using cached sqlparse-0.4.1-py3-none-any.whl (42 kB)
Installing collected packages: pytz, asgiref, sqlparse, django
Successfully installed asgiref-3.3.4 django-3.2 pytz-2021.1 sqlparse-0.4.1

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

$ django-admin startproject mytestingproject

Это создаст проект Django с именем mitetestingproject. После создания мы хотим, чтобы вы вошли в каталог, где находится структура проекта. Итак, давайте перейдем к нему и запустим сервер Django.

# Enter to the project directory
(.venv)$ cd mytestingproject/

# Listing the files inside the project
(.venv) $ ls
mytestingproject  manage.py 

Теперь, когда все готово, давайте запустим сервер Django, чтобы посмотреть, как он выглядит.

 (.venv) $python manage.py runserver
Watching for file changes with StatReloader
Performing system checks...

System check identified no issues (0 silenced).

You have 18 unapplied migration(s). Your project may not work properly until you apply the migrations for app(s): admin, auth, contenttypes, sessions.
Run 'python manage.py migrate' to apply them.
May 01, 2021 - 04:34:25
Django version 3.2, using settings 'mytestingproject.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.

По сути, Django сообщает нам, что локальный сервер работает на нашем локальном хосте (127.0.0.1 всегда указывает на него), на порту по умолчанию 8000.

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

http://localhost:8000/
# Do you note that localhost and 127.0.0.1 are the same?

Если все работает хорошо, вы должны увидеть красивый шаблон Django.

Это все, что касается нашей установки Django.

Теперь давайте представим этот проект Django. Если вы работаете над более сложным проектом, следующие методы обнаружения приложений Django также будут работать.

Развертывание приложения Django с помощью Ngrok

Как я уже говорил, Ngrok — это один из инструментов, который позволит нам разместить наш локальный сервер в Интернете. Итак, прежде всего скачайте Ngrok с официального сайта.

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

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

$  ngrok help
NAME:
   ngrok - tunnel local ports to public URLs and inspect traffic

More commands ....

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

Чтобы создать URL-адрес, по которому люди могут получить доступ к нашему серверу, давайте запустим.

    $ ngrok http 8000 
# secure public URL for port 8000 web server

Мы запускаем аргумент http, чтобы создать URL-адрес, который будет подключаться к порту 8000 нашего локального хоста.

Вот результаты, которые вы, вероятно, получите.

ngrok by @inconshreveable                                                                      (Ctrl+C to quit)
                                                                                                               
Session Status                online                                                                           
Session Expires               1 hour, 59 minutes                                                               
Update                        update available (version 2.3.39, Ctrl-U to update)                              
Version                       2.3.35                                                                           
Region                        United States (us)                                                               
Web Interface                 http://127.0.0.1:4040                                                            
Forwarding                    http://cac2165aa7f8.ngrok.io -> http://localhost:8000                            
Forwarding                    https://cac2165aa7f8.ngrok.io -> http://localhost:8000                           
                                                                                                               
Connections                   ttl     opn     rt1     rt5     p50     p90                                      
                              0       0       0.00    0.00    0.00    0.00       

Как говорится, Ngrok перенаправляет этот странный и уродливый URL-адрес на наш локальный хост. Но волшебство происходит, когда вы нажимаете URL-адрес, предоставленный Ngrok, в свой браузер.

Изменение настроек.pi

Вау, что только что произошло ??

Django, похоже, выдает ошибку из-за настройки DisallowedHost. Если вы проверите оболочку, в которой вы запускаете сервер Django, и оболочку с сеансом Ngrok, вы получите несколько отладочных сообщений.

# Django messages
Invalid HTTP_HOST header: 'cac2165aa7f8.ngrok.io'. You may need to add 'cac2165aa7f8.ngrok.io' to ALLOWED_HOSTS.
Bad Request: /
[01/May/2021 05:07:46] "GET / HTTP/1.1" 400 65196
Invalid HTTP_HOST header: 'cac2165aa7f8.ngrok.io'. You may need to add 'cac2165aa7f8.ngrok.io' to ALLOWED_HOSTS.

# Ngrok messages
HTTP Requests                                                            
-------------                                                            
                                                                         
GET /favicon.ico               400 Bad Request                           
GET /                          400 Bad Request                           
                                              

Как говорит нам Django, нам нужно добавить домен, к которому мы подключаемся, в конфигурационную переменную ALLOVED_HOSTS. Но у нас есть проблема: доменное имя слишком большое и запутанное.

Итак, давайте изменим некоторые настройки Django, чтобы устранить эту ошибку. Откройте файл settings.pi, расположенный в папке проекта.

# mytestingproject/settings.py

# Line 28

# Change from
ALLOWED_HOSTS = []

# To

ALLOWED_HOSTS = ["*"]

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

Теперь перезагрузите сайт и посмотрите результат.

Теперь все работает идеально! И если вы начнете создавать приложения для проекта и настраивать URL-адреса и представления, все будет отражено в этом общедоступном URL-адресе.

Примечание. Не забудьте изменить ALLOVED_HOSTS в рабочей среде, так как это создаст огромную дыру в безопасности.

Выводы

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

Вы научились запускать проект Django и работать с файлом settings.pi в Django.

Наконец, вы узнали, как использовать Ngrok и как открыть с его помощью любой локальный сервер.

Затем изучите некоторые популярные фреймворки Python для создания API.

Поделиться в соцсетях