Jak udostępnić aplikację demonstracyjną Django w Internecie za pomocą Ngrok?
Opublikowany: 2021-05-02Dowiedzmy się, jak udostępnić aplikację demonstracyjną Django w Internecie. To bez wdrażania go w usłudze hostingowej.
Konfigurowanie środowiska wdrażania pomostowego tylko po to, aby pokazać demo aplikacji Django, jest okropne. Co więcej, jeśli potrzebujesz adresu URL tylko na kilka minut, aby pokazać go klientowi lub koledze z zespołu.
Najlepszą opcją jest użycie narzędzia do ujawnienia aktualnego serwera lokalnego. Dokładnie tak! Ludzie z całego świata będą mogli zobaczyć, co dzieje się na Twoim lokalnym hoście.
W tym celu użyjemy Ngrok. To narzędzie pozwoli nam tworzyć publiczne adresy URL w oparciu o lokalne porty naszych komputerów. Wszystko to dzięki magii Tuneli.
Przed rozpoczęciem cały kod, który pracował nad tym samouczkiem, będzie dostępny w tym repozytorium Github.
Wymagania wstępne
- Python 3.6+ zainstalowany w Twoim systemie
- Trochę doświadczenia z interfejsami wiersza poleceń
- Podstawowa znajomość Django
- Zrozumienie skryptów Django-admin i manage.py
Zaleca się, aby znać wszystkie te podstawowe rzeczy. Chociaż jest prawdopodobne, że możesz śledzić ten samouczek bez dalszych problemów.
Tworzenie aplikacji Django
Aby stworzyć samouczek krok po kroku, wyjaśnię proces tworzenia projektu Django. Jeśli już go masz, możesz pominąć tę sekcję.
Wirtualne środowisko
Przede wszystkim stwórzmy wirtualne środowisko Pythona.
- Więc otwórz terminal systemowy (lub powłokę).
- Jeśli uważasz, że otwieranie terminala systemowego jest zbyt skomplikowane, spróbuj użyć wbudowanego terminala edytora kodu.

- Kliknij Terminal>Nowy terminal , a na dole ekranu powinna pojawić się powłoka.
- Wpisz następujące polecenie, aby utworzyć środowisko wirtualne za pomocą wbudowanego narzędzia Python.
python -m venv .venvZasadniczo oznacza to:
Hej Python, stwórz polecenie środowiska wirtualnego (-m venv) o nazwie .venv
- Teraz, jeśli wymienisz pliki z bieżącego katalogu, powinieneś zobaczyć folder .venv .
$ ls -l drwxr-xr-x - daniel 30 abr 23:12 .venv # Other files ...- Aby aktywować środowisko wirtualne, wywołujemy polecenie source .
source .venv/bin/activate- Jeśli znajdziesz jakieś problemy, zapoznaj się z poniższą tabelą wyodrębnioną z oficjalnej dokumentacji Pythona.
| Platforma | Muszla | Polecenie aktywacji środowiska wirtualnego |
|---|---|---|
| POSIX | bash/zsh | $ źródło <venv>/bin/activate |
| ryba | $ źródło <venv>/bin/activate.fish | |
| csh/tcsh | $ źródło <venv>/bin/activate.csh | |
| Rdzeń PowerShell | $ <venv>/bin/Activate.ps1 | |
| Okna | cmd.exe | C:\> <venv>\Scripts\activate.bat |
| PowerShell | PS C:\> <venv>\Scripts\Activate.ps1 |
Teraz, jeśli uruchomiłeś poprawne polecenie, twoja powłoka powinna mieć w sobie nazwę środowiska wirtualnego.
$ source .venv/bin/activate.fish (.venv) $Zainstaluj Django
Po aktywacji wirtualnego środowiska możesz teraz zainstalować dowolną wersję Django. W takim przypadku dobrym wyborem jest zainstalowanie najnowszej.
$ 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<4,>=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.1Teraz nadszedł czas na stworzenie podstawowej struktury projektu aplikacji Django, którą chcesz udostępnić.
$ django-admin startproject mytestingprojectSpowoduje to utworzenie projektu Django o nazwie mytestingproject . Po jego utworzeniu chcemy, abyś chciał wejść do katalogu, w którym znajduje się struktura projektu. Więc cd do niego i uruchomić serwer Django.
# Enter to the project directory (.venv)$ cd mytestingproject/ # Listing the files inside the project (.venv) $ ls mytestingproject manage.pyTeraz, gdy jesteś w środku, uruchommy serwer Django, aby zobaczyć, jak wygląda.
(.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.Zasadniczo Django mówi nam, że lokalny serwer działa na naszym lokalnym hoście (127.0.0.1 zawsze na to wskazuje), na domyślnym porcie 8000.

Nie martw się komunikatem o błędzie. Najpierw sprawdźmy, czy wszystko działa poprawnie na naszym lokalnym serwerze. Aby to zrobić, przejdź do przeglądarki internetowej i wklej ten kierunek:
http://localhost:8000/ # Do you note that localhost and 127.0.0.1 are the same?Jeśli wszystko działa dobrze, powinieneś zobaczyć piękny szablon Django.

To wszystko o naszej instalacji Django.
Przejdźmy teraz do ujawnienia tego projektu Django. Jeśli pracujesz nad bardziej złożonym projektem, sprawdzą się również poniższe metody eksponowania aplikacji Django.
Udostępnianie aplikacji Django za pomocą Ngrok
Jak powiedziałem wcześniej, Ngrok jest jednym z narzędzi, które pozwolą nam umieścić nasz lokalny serwer w Internecie. Przede wszystkim Pobierz Ngrok z oficjalnej strony internetowej.
Po zainstalowaniu przejdźmy do wymaganych poleceń.
Otwórz inną powłokę, zachowując terminal, na którym aktualnie działa serwer Django, i wpisz.
$ ngrok help NAME: ngrok - tunnel local ports to public URLs and inspect traffic More commands ....Dzięki temu rzucisz okiem na dostępne polecenia oferowane przez Ngrok, a także zapewnisz, że proces instalacji przebiegł poprawnie.
Aby utworzyć adres URL, pod którym ludzie mogą uzyskać dostęp do naszego serwera, uruchommy.
$ ngrok http 8000 # secure public URL for port 8000 web serverUruchamiamy argument http , aby utworzyć adres URL, który połączy się z portem 8000 naszego hosta lokalnego.
Oto wynik, który prawdopodobnie otrzymasz.
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 Jak mówi, Ngrok przekazuje ten dziwny i brzydki adres URL do naszego localhost . Ale magia się dzieje, gdy wejdziesz w przeglądarkę z adresem URL, który podał ci Ngrok.

Zmiana ustawień.py
Wow, co się właśnie stało?
Wygląda na to, że Django zgłasza błąd z powodu ustawienia DisallowedHost . Jeśli sprawdzisz powłokę, w której działa serwer Django, i tę z sesją Ngrok, otrzymasz kilka komunikatów debugowania.
# 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 RequestJak mówi nam Django, musimy dodać domenę, z którą się łączymy, do zmiennej konfiguracyjnej ALLOWED_HOSTS. Ale mamy problem, a mianowicie, że nazwa domeny jest zbyt duża i myląca.
Zmieńmy więc trochę ustawienia Django, aby rozwiązać ten błąd. Otwórz plik settings.py znajdujący się w folderze projektu.
# mytestingproject/settings.py # Line 28 # Change from ALLOWED_HOSTS = [] # To ALLOWED_HOSTS = ["*"]Jeśli znasz jakieś regex, możesz docenić, że ustawiamy symbol wieloznaczny, na który wszyscy gospodarze będą mogli.
Teraz przeładuj stronę i zobacz wynik.

Wszystko działa teraz idealnie! A jeśli zaczniesz tworzyć aplikacje dla projektu i ustawiać adresy URL i widoki, wszystko zostanie odzwierciedlone w tym publicznym adresie URL.
Uwaga: nie zapomnij zmienić ALLOWED_HOSTS w środowisku produkcyjnym, ponieważ spowodowałoby to ogromną lukę w zabezpieczeniach.
Wnioski
W tym samouczku nauczyłeś się, jak utworzyć demo URL dla swojego projektu Django, bez konieczności wdrażania go.
Ćwiczyłeś, jak uruchomić projekt Django i pracować z plikiem settings.py w Django.
Wreszcie nauczyłeś się, jak korzystać z Ngrok i jak ujawniać za jego pomocą dowolny lokalny serwer.
Następnie zapoznaj się z popularnymi frameworkami Pythona do tworzenia API.
