J'ai suivi les instructions ici pour exécuter Django en utilisant le serveur Web intégré et 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, la page Django) s'affiche et indique que cela a fonctionné.
Je réalise que le serveur Web Django n'est pas un serveur de production, mais il est important pour moi de pouvoir y accéder depuis le monde extérieur - c.-à-d. Pas à partir d'un navigateur Web sur le serveur, mais à partir d'un ordinateur différent.
J'ai essayé:
http://mywebserver:port_Django_runs_on
mais cela n'a pas fonctionné. J'ai aussi 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 est en cours d'exécution, il doit donc être accessible de l'extérieur. Je ne sais pas comment. Je tourne sous Linux avec Apache, bien que je n’ai pas configuré Django avec Apache.
Auriez vous des idées pour faire ça?
Vous devez exécuter le serveur de développement de telle sorte qu'il écoute sur l'interface sur votre réseau.
Par exemple.
python manage.py runserver 0.0.0.0:8000
écoute sur chaque interface sur le port 8000.
Peu importe que vous accédiez au serveur Web avec l'adresse IP ou le nom d'hôte. Je suppose que vous êtes toujours dans votre propre réseau local.
Si vous voulez vraiment accéder au serveur de l’extérieur, vous devez également configurer votre routeur pour transférer le port, par exemple. 8000
sur votre serveur.
Vérifiez votre pare-feu sur votre serveur si les connexions entrantes au port utilisé sont autorisées!
En supposant que vous puissiez accéder à votre serveur Apache de l'extérieur avec succès, vous pouvez également essayer ceci:
80
est libre.Sudo python manage.py runserver 0.0.0.0:80
Je devais ajouter cette ligne à settings.py pour que cela fonctionne (sinon, une erreur s’affiche lorsque vous y accédez depuis un autre ordinateur).
ALLOWED_HOSTS = ['*']
puis couru le serveur avec:
python manage.py runserver 0.0.0.0:9595
Assurez-vous également que le pare-feu autorise les connexions à ce port.
Choisissez un ou plusieurs parmi:
Vous pouvez donc vérifier que votre application écoute bien en exécutant lsof -i
en tant que root sur la machine et recherchez une entrée python
avec le port correspondant que vous avez spécifié.
Les utilisateurs non root ne peuvent généralement pas se lier aux ports <1024.
Vous devrez regarder iptables -nvL
pour voir s'il existe une règle empêchant l'accès à ip: port auquel vous essayez de lier votre application.
S'il existe un pare-feu en amont et que vous n'en savez pas grand-chose, vous devez contacter vos administrateurs réseau.
faites juste ceci:
python manage.py runserver 0:8000
par la commande ci-dessus, vous le liez réellement à l'adresse IP externe. alors maintenant, lorsque vous accédez à votre adresse IP avec le numéro de port, vous pourrez y accéder sans problème.
il suffit de taper ce qui suit dans la barre d'adresse du navigateur:
<your ip address>:8000
par exemple:
192.168.1.130:8000
vous devrez peut-être modifier les paramètres.py ajouter ce qui suit dans le fichier settings.py à la dernière ligne:
ALLOWED_HOSTS = ['*']
espérons que cela aidera ...
Pour les utilisateurs AWS.
J'ai dû suivre les étapes suivantes pour y arriver.
1) Assurez-vous que pip et Django sont installés au niveau Sudo
2) Assurez-vous que les règles internes du groupe de sécurité incluent http sur le port 80 pour 0.0.0.0/0
) Ajouter une adresse IP publique et DNS à ALLOWED_HOSTS
4) Lancer le serveur de développement avec Sudo sur le port 80
Le site est maintenant disponible dans l’un des types suivants (inutile de: 80 car il s’agit de la valeur par défaut pour http):
Je vais ajouter ceci ici:
Sudo python manage.py runserver 80
Allez sur votre téléphone ou votre ordinateur et entrez l’adresse IP interne de votre ordinateur (par exemple, 192.168.0.12
) dans le navigateur.
À ce stade, vous devriez être connecté au serveur Django.
Cela devrait aussi fonctionner sans Sudo:
python manage.py runserver 0.0.0.0:8000