J'essaie actuellement le framework Django et je partagerais/présenterais/montrerais des choses que j'ai faites à mes collègues/amis. Je travaille dans Ubuntu sous Win7 via VMware. Donc, mon souhait/désir est d’envoyer mon IP-pub actuel avec un port (par exemple http://123.123.123.123:8181/Django-app/ ) à mes amis pour qu’ils puissent le tester.
le problème est - j'utilise le serveur de développement de Django (python /path-to-Django-app/manage.py Rueserver $ IP: $ PORT).
Comment rendre le devserver public?
MODIFIER:
Oh, il y a quelque chose que j'ai oublié de mentionner. Comme je suis triste, j'utilise VMware avec Ubuntu. J'ai un script shell qui me renvoie mon adresse IP actuelle 192.168.xx.xx et l'enregistre dans une variable d'environnement ($ CUR_IP) Ainsi, chaque fois que je veux utiliser le devserver de Django, je l'exécute simplement.
python /path-to-Django-site/manage.py runserver $CUR_IP:8080
De cette manière, je deviens une adresse http (par exemple . http://192.168.40.145:8080/app-name/ ) que JE PEUX UTILISER EN DEHORS de ma machine virtuelle. Je pourrais le tester sur ma machine hôte (win7). C'est en fait la raison pour laquelle j'ai posé la question. Je pensais qu'il y avait un moyen d'utiliser l'ext-IP et de rendre le serveur d'exécution utilisable à l'extérieur aussi
192.168.*.*
est une adresse privée du réseau local. Une fois que vous avez configuré le pare-feu VMWare (ou un autre gestionnaire VM) approprié pour le rendre accessible depuis le réseau local, il ne sera toujours pas accessible de l'extérieur c'est-à-dire d'Internet en général (une bonne chose aussi, car de tels serveurs de développement sont non conçus pour la sécurité et l'évolutivité).
Pour que le port d’une machine disposant d’une adresse IP privée sur un réseau local soit visible sur Internet, vous avez besoin d’un routeur doté de la fonctionnalité "serveurs virtuels" (proposé par de nombreux routeurs, même les plus économiques), mais il est impossible d’être précis. puisque chaque marque a sa propre manière idiosyncratique). Je recommanderais également dyndns ou un autre service similaire d'associer un nom DNS stable à votre adresse IP publique toujours variable (sauf si vous recherchez une adresse IP statique de votre fournisseur de connectivité, bien sûr, mais cette dernière option devient plus coûteux tout le temps).
superuser.com ou serverfault.com peuvent fournir de meilleures réponses et des détails plus précis (une fois que vous avez donné tous les détails de votre configuration dans une question), car la question n'a rien à voir avec le développement de logiciels et tout ce qui concerne l'administration et la configuration du serveur.
En supposant que Ruby soit installé, il vous suffit d’obtenir localtunnel:
gem install localtunnel
puis démarrez votre serveur de développement python avec:
python manage.py runserver 0.0.0.0:8000
dans un autre shell, démarrez localtunnel:
localtunnel -k ~/.ssh/id_rsa.pub 8000
Cela produira une URL pour accéder à votre serveur local.
Port 8000 is now publicly accessible from http://xxxx.localtunnel.com
C'est tout.
Déjà répondu, mais ajout de npm alternatif du même tunnel local
Sudo npm install -g localtunnel
lt --port 8000 --subdomain yash
Je devais ajouter cette ligne à settings.py pour que cela fonctionne (sinon, une erreur s’affiche lorsqu’on y accède depuis un autre ordinateur).
ALLOWED_HOSTS = ['*']
puis couru le serveur avec:
python manage.py runserver 0.0.0.0:9595
Si vous utilisez Virtualbox, vous devez modifier le paramètre réseau dans VB de "NAT" en "Carte pontée". Puis redémarrez Linux. Maintenant, si vous exécutez Sudo ifconfig
, vous pourrez voir votre adresse IP comme 192.168.*.*
. La dernière étape est le serveur d'exécution
python manage.py runserver 192.168.*.*:8000
À votre santé!
Vous devez configurer un réseau ponté dans VMWare et également accorder un accès au port cible du pare-feu Ubuntu.