Geekflare est soutenu par notre public. Nous pouvons gagner des commissions d'affiliation en achetant des liens sur ce site.
Partager sur:

Comment exposer une application de démonstration Django à Internet avec Ngrok?

Exposez-une-application-démo-Django-à-internet-avec-Ngrok
Scanner de sécurité des applications Web Invicti – la seule solution qui offre une vérification automatique des vulnérabilités avec Proof-Based Scanning™.

Apprenons à exposer une application de démonstration Django sur Internet. Cela, sans le déployer dans un service d'hébergement.

Configurer un environnement de déploiement intermédiaire juste pour montrer une démo de votre application Django est horrible. Encore plus, si vous n'avez besoin d'une URL que pendant quelques minutes, pour la montrer à un client ou à un coéquipier.

La meilleure option consiste à utiliser un outil pour exposer votre serveur local actuel. Exactement! Les gens du monde entier pourront voir ce qui se passe sur votre hôte local.

Pour cela, nous utiliserons Ngrok. Cet outil nous permettra de créer des URL publiques basées sur les ports locaux de nos ordinateurs. Tout cela grâce à la magie de Tunnels.

Avant de commencer tout le code travaillé sur ce tutoriel, sera disponible dans ce Github référentiel.

Pre-requirements

Il est recommandé de connaître toutes ces choses de base. Bien qu'il soit probable que vous puissiez suivre ce didacticiel, sans autre problème.

Creating a Django app

Afin de créer un didacticiel pas à pas, je vais vous expliquer le processus de création d'un projet Django. Si vous en avez déjà un, vous pouvez sauter cette section.

Environnement virtuel

Tout d'abord, créons un Environnement virtuel Python.

  • Alors ouvrez votre terminal système (ou shell).
  • Si vous trouvez trop compliqué d'ouvrir votre terminal système, essayez d'utiliser le terminal intégré du éditeur de code.

  • Cliquez sur Terminal> Nouveau terminal, et un shell devrait apparaître au bas de votre écran.
  • Tapez la commande suivante pour créer un environnement virtuel, avec l'outil Python intégré.
python -m venv .venv

Cela signifie essentiellement:

Hey Python, créez une commande d'environnement virtuel (-m venv) avec le nom de .venv 

  • Maintenant, si vous répertoriez les fichiers de votre répertoire actuel, vous devriez voir un .venv dossier.
$ ls -l
drwxr-xr-x    - daniel 30 abr 23:12 .venv
# Other files ...
  • Pour activer l'environnement virtuel, nous appelons le la source commander.
source .venv/bin/activate
  • Si vous rencontrez des problèmes, veuillez vous référer au tableau suivant extrait du document officiel documentation python.
Plateforme coquillage Commande pour activer l'environnement virtuel
POSIX bash / zsh $ source / bin / activate
poissons $ source /bin/activate.fish
csh / tcsh $ source /bin/activate.csh
PowerShell Core $ /bin/Activate.ps1
Windows cmd.exe C: \> \ Scripts \ activate.bat
PowerShell PS C: \> \ Scripts \ Activate.ps1

Maintenant, si vous avez exécuté la bonne commande, votre shell devrait contenir le nom de l'environnement virtuel.

$ source .venv/bin/activate.fish

(.venv) $ 

Installez Django

Après avoir activé votre environnement virtuel, vous pouvez maintenant installer la version Django de votre choix. Dans ce cas, c'est un bon choix d'installer la dernière.

$ 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

Il est maintenant temps de créer la structure de projet de base de l'application Django que vous souhaitez exposer.

$ django-admin startproject mytestingproject

Cela créera un projet Django avec le nom de monprojet de test. Après l'avoir créé, nous voulons que vous souhaitiez entrer dans le répertoire où se trouve la structure du projet. Alors allons cd dedans et exécutez le serveur Django.

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

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

Maintenant que vous y êtes, exécutons le serveur Django pour voir à quoi il ressemble.

 (.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.

Fondamentalement, Django nous dit qu'un serveur local est en cours d'exécution sur notre hôte local (127.0.0.1 pointe toujours vers lui), sur le port par défaut, 8000.

Ne vous inquiétez pas du message d'erreur. Tout d'abord, vérifions que tout fonctionne correctement sur notre serveur local. Pour ce faire, accédez à votre navigateur Web et collez cette direction:

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

Si tout fonctionne correctement, vous devriez voir un beau modèle Django.

C'est tout à propos de notre installation Django.

Passons maintenant à exposer ce projet Django. Si vous travaillez sur un projet plus complexe, les méthodes suivantes d'exposition des applications Django fonctionneront également.

Exposing a Django app with Ngrok

Comme je l'ai déjà dit, Ngrok est l'un des outils qui nous permettra d'atterrir notre serveur local sur Internet. Alors tout d'abord Télécharger Ngrok du site officiel.

Une fois que vous l'avez installé, passons aux commandes nécessaires.

Ouvrez un autre shell, en gardant le terminal que votre serveur Django est actuellement en cours d'exécution, et tapez.

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

More commands ....

Cela vous donnera un aperçu rapide des commandes disponibles proposées par Ngrok et garantira également que le processus d'installation s'est déroulé correctement.

Afin de créer une URL où les gens peuvent accéder à notre serveur, exécutons.

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

Nous exécutons le http argument, pour créer une URL qui se connectera au port 8000 de notre hôte local.

Voici le résultat que vous obtiendrez probablement.

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       

Comme il dit, Ngrok transfère cette URL étrange et laide, à notre localhost. Mais la magie opère lorsque vous cliquez sur le navigateur avec l'URL que Ngrok vous a donnée.

Page d'erreur.

Modification de settings.py

Wow, que vient de se passer 😱?

Il semble que Django lance une erreur à cause d'un Hôte non autorisé réglage. Si vous cochez le shell dans lequel vous exécutez le serveur Django et celui avec la session Ngrok, vous obtiendrez des messages de débogage.

# 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                           
                                              

Comme Django nous le dit, nous devons ajouter le domaine auquel nous nous connectons à la variable de configuration ALLOWED_HOSTS. Mais nous avons un problème, et c'est que le nom de domaine est trop volumineux et déroutant.

Modifions donc un peu les paramètres de Django, pour résoudre cette erreur. Ouvrez le settings.py fichier situé dans le dossier du projet.

# mytestingproject/settings.py

# Line 28

# Change from
ALLOWED_HOSTS = []

# To

ALLOWED_HOSTS = ["*"]

Si vous connaissez des expressions régulières, vous pouvez comprendre que nous définissons un caractère générique, où tous les hôtes seront autorisés.

Maintenant, rechargez le site et voyez le résultat.

Page de travail

Tout fonctionne parfaitement maintenant! Et si vous commencez à créer des applications pour le projet et à définir des URL et des vues, tout sera reflété sur cette URL publique.

Remarque : N'oubliez pas de changer ALLOWED_HOSTS en production, car cela créerait une énorme faille de sécurité.

Conclusions

Dans ce didacticiel, vous avez appris à créer une URL de démonstration pour votre projet Django, sans avoir besoin de la déployer.

Vous vous êtes exercé à démarrer un projet Django et à travailler avec le settings.py fichier dans Django.

Enfin, vous avez appris à utiliser Ngrok et à exposer n'importe quel serveur local avec lui.

Ensuite, explorez certains des frameworks Python populaires pour créer une API.

Merci à nos commanditaires
Plus de bonnes lectures sur le développement
Alimentez votre entreprise
Certains des outils et services pour aider votre entreprise à se développer.
  • Invicti utilise Proof-Based Scanning™ pour vérifier automatiquement les vulnérabilités identifiées et générer des résultats exploitables en quelques heures seulement.
    Essayez Invicti
  • Web scraping, proxy résidentiel, proxy manager, web unlocker, moteur de recherche et tout ce dont vous avez besoin pour collecter des données Web.
    Essayez Brightdata
  • Semrush est une solution de marketing numérique tout-en-un avec plus de 50 outils de référencement, de médias sociaux et de marketing de contenu.
    Essayez Semrush
  • Intruder est un scanner de vulnérabilités en ligne qui détecte les failles de cybersécurité de votre infrastructure, afin d'éviter des violations de données coûteuses.
    Essayez Intruder