Πώς να εκθέσετε μια εφαρμογή επίδειξης Django στο Διαδίκτυο με το Ngrok;

Ας μάθουμε πώς να εκθέσουμε μια εφαρμογή επίδειξης Django στο διαδίκτυο. Αυτό, χωρίς να το αναπτύξετε σε μια υπηρεσία φιλοξενίας.

Η διαμόρφωση ενός περιβάλλοντος ανάπτυξης σταδίου μόνο για την εμφάνιση μιας επίδειξης της εφαρμογής Django είναι απαίσια. Ακόμη περισσότερο, εάν χρειάζεστε μόνο μια διεύθυνση URL για μερικά λεπτά, για να την εμφανίσετε σε έναν πελάτη ή συμπαίκτη.

Η καλύτερη επιλογή είναι να χρησιμοποιήσετε ένα εργαλείο για να αποκαλύψετε τον τρέχοντα τοπικό σας διακομιστή. Ακριβώς! Οι άνθρωποι σε όλο τον κόσμο θα μπορούν να δουν τι συμβαίνει στον τοπικό σας κεντρικό υπολογιστή.

Για το σκοπό αυτό, θα χρησιμοποιήσουμε Νγκροκ. Αυτό το εργαλείο θα μας επιτρέψει να δημιουργήσουμε δημόσιες διευθύνσεις URL με βάση τις τοπικές θύρες των υπολογιστών μας. Όλα αυτά χάρη στη μαγεία του Σήραγγες.

Πριν ξεκινήσετε όλος ο κώδικας που εργάστηκε σε αυτό το σεμινάριο, θα είναι διαθέσιμος σε αυτό Αποθετήριο Github.

Προαπαιτήσεις

Συνιστάται να γνωρίζετε όλα αυτά τα βασικά πράγματα. Αν και είναι πιθανό να μπορείτε να ακολουθήσετε αυτό το σεμινάριο, χωρίς περαιτέρω προβλήματα.

Δημιουργία εφαρμογής Django

Προκειμένου να δημιουργήσετε έναν οδηγό βήμα προς βήμα, θα εξηγήσω τη διαδικασία δημιουργίας ενός έργου Django. Εάν έχετε ήδη ένα, μπορείτε να παραλείψετε αυτήν την ενότητα.

Εικονικό περιβάλλον

Πρώτα απ ‘όλα, ας δημιουργήσουμε ένα Εικονικό περιβάλλον Python.

  • Ανοίξτε λοιπόν το τερματικό του συστήματός σας (ή το κέλυφος).
  • Εάν θεωρείτε πολύ περίπλοκο να ανοίξετε το τερματικό του συστήματός σας, δοκιμάστε να χρησιμοποιήσετε το ενσωματωμένο τερματικό του επεξεργαστή κώδικα.
  • Κάντε κλικ στο Terminal>New terminal και θα εμφανιστεί ένα κέλυφος στο κάτω μέρος της οθόνης σας.
  • Πληκτρολογήστε την ακόλουθη εντολή για να δημιουργήσετε ένα εικονικό περιβάλλον, με το ενσωματωμένο εργαλείο 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
  • Εάν βρείτε οποιοδήποτε πρόβλημα, ανατρέξτε στον παρακάτω πίνακα που εξάγεται από τον επίσημο τεκμηρίωση python.
  Πώς να βρείτε τον κωδικό πρόσβασης ενός δρομολογητή [NetGear, Linksys, Uverse, Xfinity]

Πλατφόρμα
Κέλυφος
Εντολή για ενεργοποίηση εικονικού περιβάλλοντος
POSIX
bash/zsh
$ πηγή /bin/activate

ψάρι
$ πηγή /bin/activate.fish

csh/tcsh
$ πηγή /bin/activate.csh

Πυρήνας PowerShell
$ /bin/Activate.ps1
Windows
cmd.exe
C:> Scriptsactivate.bat

PowerShell
PS C:> ScriptsActivate.ps1

Τώρα, εάν έχετε εκτελέσει τη σωστή εντολή, το κέλυφός σας θα πρέπει να έχει το όνομα του εικονικού περιβάλλοντος σε αυτό.

$ source .venv/bin/activate.fish

(.venv) $ 

Εγκαταστήστε το Django

Αφού ενεργοποιήσετε το εικονικό σας περιβάλλον, τώρα μπορείτε να εγκαταστήσετε όποια έκδοση 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<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.1

Τώρα ήρθε η ώρα να δημιουργήσετε τη βασική δομή έργου της εφαρμογής Django που θέλετε να εκθέσετε.

$ django-admin startproject mytestingproject

Αυτό θα δημιουργήσει ένα έργο Django με το όνομα mytestingproject. Αφού το δημιουργήσουμε θα θελήσουμε να μπείτε στον κατάλογο όπου βρίσκεται η δομή του έργου. Ας μπούμε λοιπόν σε cd και ας τρέξουμε τον διακομιστή 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 μας λέει ότι ένας τοπικός διακομιστής εκτελείται στον localhost μας (το 127.0.0.1 δείχνει πάντα σε αυτόν), στην προεπιλεγμένη θύρα, 8000.

  Πώς να ενεργοποιήσετε τον ασφαλή φάκελο σε τηλέφωνα Samsung

Μην ανησυχείτε για το μήνυμα σφάλματος. Αρχικά, ας ελέγξουμε ότι όλα λειτουργούν καλά στον τοπικό μας διακομιστή. Για να το κάνετε αυτό, μεταβείτε στο πρόγραμμα περιήγησής σας και επικολλήστε αυτήν την κατεύθυνση:

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.

  Πώς να απενεργοποιήσετε το Google Analytics στο Nintendo Switch eShop

Αλλαγή του settings.py

Ουάου, τι έγινε 😱;

Φαίνεται ότι ο 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, πρέπει να προσθέσουμε τον τομέα που συνδέουμε στη μεταβλητή διαμόρφωσης ALLOWED_HOSTS. Αλλά έχουμε ένα πρόβλημα, και είναι ότι το όνομα τομέα είναι πολύ μεγάλο και προκαλεί σύγχυση.

Ας αλλάξουμε λοιπόν λίγο τις ρυθμίσεις του Django, για να λύσουμε αυτό το σφάλμα. Ανοίξτε το αρχείο settings.py που βρίσκεται στο φάκελο του έργου.

# mytestingproject/settings.py

# Line 28

# Change from
ALLOWED_HOSTS = []

# To

ALLOWED_HOSTS = ["*"]

Εάν γνωρίζετε κάποιο regex, μπορείτε να εκτιμήσετε ότι ορίζουμε έναν χαρακτήρα μπαλαντέρ, όπου θα επιτρέπονται όλοι οι οικοδεσπότες.

Τώρα φορτώστε ξανά τον ιστότοπο και δείτε το αποτέλεσμα.

Όλα λειτουργούν τέλεια τώρα! Και αν αρχίσετε να δημιουργείτε εφαρμογές για το έργο και να ορίζετε διευθύνσεις URL και προβολές, όλα θα αντικατοπτρίζονται σε αυτήν τη δημόσια διεύθυνση URL.

Σημείωση: Μην ξεχάσετε να αλλάξετε τους ALLOWED_HOSTS στην παραγωγή, καθώς θα δημιουργήσει μια τεράστια τρύπα ασφαλείας.

συμπεράσματα

Σε αυτό το σεμινάριο, μάθατε πώς να δημιουργείτε μια διεύθυνση URL επίδειξης για το έργο σας στο Django, χωρίς να χρειάζεται να το αναπτύξετε.

Εξασκήσατε πώς να ξεκινήσετε ένα έργο Django και να εργαστείτε με το αρχείο settings.py στο Django.

Τέλος, μάθατε πώς να χρησιμοποιείτε το Ngrok και πώς να εκθέτετε οποιονδήποτε τοπικό διακομιστή με αυτό.

Στη συνέχεια, εξερευνήστε μερικά από τα δημοφιλή πλαίσια Python για τη δημιουργία API.