Ich habe eine ansible eingerichtete VM basierend auf dieser Ссылка , aber aus irgendeinem Grund versuche ich, Gunicorn zu starten Folgefehler:
Verbindung zu /path/to/my/gunicorn.sock
nicht möglich
und in der nginx-Protokolldatei:
connect () zu unix: /path/to/my/gunicorn.sock ist fehlgeschlagen (2: Keine solche Datei oder Verzeichnis) während der Verbindung zu Upstream
Und tatsächlich fehlt die Socket-Datei im angegebenen Verzeichnis. Ich habe die Berechtigungen des Verzeichnisses überprüft und sie sind in Ordnung.
Hier ist mein gunicorn_start-Skript:
%Vor%Kann irgendjemand vorschlagen, was sonst die fehlende Socket-Datei verursachen könnte?
Danke
Nun, da ich nicht genügend Rep für einen Kommentar habe, werde ich hier erwähnen, dass es nicht viel Spezifität gibt, die von der fehlenden Steckdose herrührt, aber ich kann dir ein bisschen darüber erzählen, wie ich in deinen Schuhen angefangen habe und Dinge arbeiten lassen.
Das lange und kurze ist, dass Gunicorn ein Problem hatte, wenn es von Emporkömmling geführt wurde und entweder nie aufging und lief oder herunterfuhr. Hier sind einige Schritte, die Ihnen helfen können, weitere Informationen zu erhalten, um Ihr Problem aufzuspüren:
ps auxf | grep gunicorn
aus, um zu sehen, ob Sie Arbeiter haben. Ich tat es nicht. grep init: /var/log/syslog
, zeigte mir, dass mein Gunicorn-Service gestoppt wurde, weil er zu schnell neugestartet ist, obwohl ich bezweifle, dass das dein Problem sein wird, da du keinen Respawn hast dein Vertrauen Egal, Sie könnten dort etwas finden. Nachdem ich gesehen habe, dass Gunicorn Fehler nicht ausführen konnte, habe ich beschlossen, es über die Befehlszeile auszuführen. Wechseln Sie in das Verzeichnis, in dem sich manage.py befindet, und führen Sie die erweiterte Version Ihres Upstart-Befehls für Ihre gunicorn-Instanz aus. So etwas wie (Ersetzen Sie alle Variablen durch die entsprechenden Literale anstelle des Mülls, den ich verwende.):
/path/to/your/virtualenv/bin/gunicorn --name myapp --workers 4 --max-requests 10 --user appuser --group webusers --log-level debug --error-logfile /somewhere/I/can/find/error.log --bind unix:/tmp/myapp.socket myapp.wsgi
Wenn Sie Glück haben, können Sie einen Python-Traceback erhalten oder etwas in Ihrem Gunicorn-Fehlerprotokoll finden, nachdem Sie den Befehl manuell ausgeführt haben. Einige Dinge, die schief gehen können:
Ich hoffe, das hilft. Es war ein paar lange Tage, um diese Dinge zu verfolgen.
Ich hatte das gleiche Problem, nachdem ich Michal Karzynskis großartigen Führer verfolgt hatte Einrichten von Django mit Nginx, Gunicorn, virtualenv, Supervisor und PostgreSQL '.
Und so habe ich es gelöst.
Ich hatte diese Variable im Bash-Skript, das zum Starten von Gunicorn über Supervisor verwendet wurde (myapp / bin / gunicorn_start):
%Vor%Wenn Sie das Bash-Skript zum ersten Mal ausführen, erstellt es einen 'run'-Ordner und eine Sock-Datei mit root-Rechten . Also habe ich sudo den run-Ordner gelöscht und dann ohne sudo-Rechte neu erstellt und voila! Jetzt, wenn Sie Gunicorn oder Supervisor erneut ausführen, werden Sie nicht mehr die lästige fehlende Sockendatei Fehlermeldung haben!
TL; DR
Ich hatte das gleiche Problem und fand heraus, dass ich das DJANGO_SETTINGS_MODULE im Gunicorn-Skript auf die Produktionseinstellungen gesetzt hatte und die WSGI-Einstellungen mit dev.
arbeitetenIch habe das DJANGO_SETTINGS_MODULE auf Dev gesetzt und alles hat funktioniert.
Nun, ich habe mehr als eine Woche an diesem Thema gearbeitet und konnte es endlich herausfinden. Bitte folgen Sie den Links von digitalen Ozean , aber sie haben keine wichtigen Punkte identifiziert, die
beinhalten* 1 connect () zu unix: /tmp/myproject.sock ist fehlgeschlagen (2: Keine solche Datei oder Verzeichnis)
usw.
Diese Probleme sind im Grunde Berechtigungsproblem für die Verbindung zwischen Nginx und Gunicorn . Um die Dinge einfach zu machen, empfehle ich , jedem neu erstellten file / project / python-Programm dieselbe nginx-Berechtigung zu geben .
Um das Problem zu lösen, folge diesem Ansatz: Das erste ist:
Gehen Sie jetzt einfach zur Datei /etc/nginx/nginx.conf. Gehe zum Servermodul und füge an:
Standort / { enthält proxy_params; proxy_pass http & lt; & gt;: & lt; & gt; & gt; // unix: /home/nginx/myproject.sock; } ENTFERNEN & lt; & gt; Befolgen Sie nicht den digitalen Ozean von hier an
Tags und Links python django nginx python-2.7 gunicorn