Πώς να εκθέσετε μια εφαρμογή επίδειξης 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.
Πλατφόρμα
Κέλυφος
Εντολή για ενεργοποίηση εικονικού περιβάλλοντος
POSIX
bash/zsh
$ πηγή
ψάρι
$ πηγή
csh/tcsh
$ πηγή
Πυρήνας PowerShell
$
Windows
cmd.exe
C:>
PowerShell
PS C:>
Τώρα, εάν έχετε εκτελέσει τη σωστή εντολή, το κέλυφός σας θα πρέπει να έχει το όνομα του εικονικού περιβάλλοντος σε αυτό.
$ 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.
Μην ανησυχείτε για το μήνυμα σφάλματος. Αρχικά, ας ελέγξουμε ότι όλα λειτουργούν καλά στον τοπικό μας διακομιστή. Για να το κάνετε αυτό, μεταβείτε στο πρόγραμμα περιήγησής σας και επικολλήστε αυτήν την κατεύθυνση:
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.
Αλλαγή του 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.