193 votes

Comment accéder au serveur web Django local depuis le monde extérieur ?

J'ai suivi les instructions aquí pour exécuter Django en utilisant le serveur web intégré et j'ai pu l'exécuter avec succès en utilisant python manage.py runserver . Si j'accède à 127.0.0.1:port localement à partir du serveur Web, j'obtiens la page Django indiquant que le processus a fonctionné.

Je réalise que le serveur web Django n'est pas un serveur de production, mais il est important pour moi, à des fins de test, de pouvoir y accéder depuis le monde extérieur -- c'est-à-dire non pas depuis un navigateur web sur le serveur, mais depuis un autre ordinateur.

J'ai essayé :

http://mywebserver:port_django_runs_on

mais cela n'a pas fonctionné. J'ai également essayé d'utiliser l'IP à la place (basé sur ifconfig) pour accéder :

http://myipaddress:port_django_runs_on 

qui n'a pas fonctionné non plus.

Le serveur web fonctionne, il doit donc être accessible de l'extérieur, mais je ne sais pas comment. J'utilise Linux avec Apache, mais je n'ai pas configuré Django avec Apache.

Avez-vous des idées sur la manière de procéder ?

3 votes

Pourquoi ne pas configurer Django avec Apache et mod_wsgi ? Pourquoi ne pas le faire correctement ?

0 votes

@S.Lott Et si vous avez de nombreux projets différents sur le serveur que vous voulez exécuter à des moments différents et que vous ne voulez pas reconfigurer Apache à chaque fois que vous ajoutez un nouveau projet ?

0 votes

3voto

James111 Points 948

Je vais ajouter ceci ici :

  1. sudo python manage.py runserver 80

  2. Allez sur votre téléphone ou votre ordinateur et entrez l'adresse IP interne de votre ordinateur (par ex. 192.168.0.12 ) dans le navigateur.

À ce stade, vous devriez être connecté au serveur Django.

Cela devrait également fonctionner sans sudo :

python manage.py runserver 0.0.0.0:8000

2voto

Kashif Points 742

MISE À JOUR 2020 ESSAYEZ CETTE VOIE

python manage.py runserver yourIp:8000

ALLOWED_HOSTS = ["*"]

0 votes

Utilisez 0.0.0.0:8000 plutôt que votre propre ip

0 votes

Ouais les deux sont la bonne façon d'utiliser l'un ou l'autre ça dépend des situations

1voto

Abidi Mohamed Points 219

Vous devez juste autoriser tous les hôtes : settings.py :

ALLOWED_HOST = ['*']

Exécutez votre serveur :

python3 manage.py runserver 0.0.0.0:8000

Si vous voulez connecter une application Android, il suffit d'ajouter une permission internet dans AndroidManifest. Cela fonctionne pour moi ;)

0voto

Amjad Al Taleb Points 61

Si vous utilisez Docker, vous devez vous assurer que les ports sont également exposés.

0voto

Installer ngrok dans le terminal

sudo apt-get install -y ngrok-client

après cette course :

ngrok http 8000
or 
ngrok http example.com:9000

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X