J'ai installé virtualenv et Django dans ma section utilisateur sur un serveur ubuntu. Tout semble s'installer correctement et lorsque je démarre le serveur avec python manage.py runserver
j'obtiens le message suivant, qui semble correct:
Performing system checks... System check identified no issues (0 silenced). You have 15 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. January 10, 2019 - 16:38:32 Django version 2.1.5, using settings 'form01.settings' Starting development server at http://127.0.0.1:8000/ Quit the server with CONTROL-C.
Le problème est quand je aller à http://127.0.0.1:8000/ dans mon navigateur j'obtiens un ERR_CONNECTION_REFUSED au lieu du Django page de réussite de l'installation.
Je m'attends à voir l'écran d'installation réussie de Django à l'adresse http://127.0.0.1 : 8000 mais à la place, obtenez ERR_CONNECTION_REFUSED.
4 Réponses :
Essayez de définir les hôtes autorisés dans settings.py sur «*».
ALLOWED_HOSTS = ['*']
Et assurez-vous également de migrer vos données en exécutant 'python manage.py migrate'
Si vous utilisez 127.0.0.1 sur votre machine locale, est-ce que cela ne va pas simplement chercher l'installation de django sur votre machine locale plutôt que sur le serveur sur lequel elle s'exécute? Cela peut expliquer pourquoi votre connexion est refusée. Si vous avez un navigateur sur votre serveur, vous devriez pouvoir entrer http://127.0.0.1:8000/ sur le serveur et voyez s'il renvoie la page d'installation réussie de Django que vous recherchez. Si vous n'avez pas de navigateur installé sur le serveur, je pense que vous devrez avoir un fichier de paramètres en place dans une application avec un ALLOWED_HOSTS = ['*'] comme mentionné ci-dessus ou ALLOWED_HOSTS = ['server ip address' ]. Ensuite, vous devriez pouvoir y accéder depuis votre ordinateur local en utilisant http: // serveur l'adresse IP: 8000 /
Je l'ai fait et malheureusement, je reçois la même erreur. Cela pourrait-il être un problème de pare-feu? Ma machine locale est sur le réseau de mon employeur avec des mesures de sécurité en place
Je ne pense pas que ce soit un problème de pare-feu car je peux accéder à la page par défaut d'Apache2 Ubuntu à https: // (MyServerIPAddress)
Il semble que vous ayez un certificat SSL en cours d'exécution sur le serveur si https: // (MyServerIPAddress) fonctionne. Ce qui pourrait expliquer en partie pourquoi l'adresse IP du serveur : 8000 / ne l'est pas. Je vous suggère d'essayer https: // (MyServerIPAddress): 8000 / et de voir ce qui se passe.
Le problème est dans virtualenv
, il bloque la connexion d'une manière ou d'une autre (impossible de le trouver). J'ai désactivé virtualenv
et lancé l'application en utilisant python3 manage.py runserver 0.0.0.0:8000
. L'application doit être accessible sur http: // [ip]: 8000
où ip
est l'élément renvoyé par la commande ipconfig getifaddr en0
. p>
Vous pouvez également utiliser gunicorn
pour héberger l'application et nginx
pour fournir des fichiers statiques (car gunicorn ne gère pas cela). Cela permettra de continuer à utiliser le virtualenv
, mais entraînera la nécessité d'utiliser encore plus de logiciels.
Ce qui m'a résolu (Django 3.1.6) a été d'ajouter Aucune autre combinaison de Ubuntu 20.04. '*'
à ALLOWED_HOSTS = []
dans myproject / setting.py code>, et démarrant le serveur comme ceci:
python manage.py runserver 0:8000
127.0.0.1
ou localhost code > a fonctionné, même pas avec
ALLOWED_HOSTS = ['*']
Le navigateur fonctionne-t-il sur la même machine que
runserver
?@Alasdair le navigateur fonctionne sur ma machine locale et runserver est sur un serveur
Si vous exécutez
python manage.py runserver
, il ne sera disponible qu'à partir du serveur local. Vous pouvez étudier la redirection de port en utilisant ssh. Si vous recherchez un accès à distance à Django runserver, vous verrez des suggestions pour utilisermanage.py runserver 0.0.0.0:8000
, mais cela peut rendre votre site accessible à tout Internet, ce qui n'est pas adapté car runserver n'est pas un serveur de production.