2015-08-23 8 views
7

Ich benutze Django 1.8 und ich möchte meine Anwendung mit Gunicorn ausführen.gunicorn: Kann nicht mit gunicorn.sock verbinden

Ich kann es OK über die Befehlszeile ausführen, um meinen IP-Bindung:

gunicorn myapp.wsgi:application --bind xx.xx.xx.xx:8001 

Aber jetzt will ich es über eine Unix-Socket auszuführen:

gunicorn myapp.wsgi:application --bind=unix$/webapps/myapp/run/gunicorn.sock 

ich diesen Fehler:

[2015-08-23 07:38:04 +0000] [18598] [INFO] Starting gunicorn 19.3.0 
[2015-08-23 07:38:04 +0000] [18598] [ERROR] Retrying in 1 second. 
[2015-08-23 07:38:05 +0000] [18598] [ERROR] Retrying in 1 second. 
[2015-08-23 07:38:06 +0000] [18598] [ERROR] Retrying in 1 second. 
[2015-08-23 07:38:07 +0000] [18598] [ERROR] Retrying in 1 second. 
[2015-08-23 07:38:08 +0000] [18598] [ERROR] Retrying in 1 second. 
[2015-08-23 07:38:09 +0000] [18598] [ERROR] Can't connect to $/webapps/myapp/run/gunicorn.sock 

Wenn ich ls -al /webapps/myapp/run sehe ich, dass die Socket-Datei nicht vorhanden ist, wenn es leer ist:

srwxrwxrwx 1 opuser webapps 0 Aug 23 07:22 /webapps/myapp/run/gunicorn.sock 

Wie kann ich das beheben?

Ich möchte schließlich gunicorn als Benutzer opuser laufen, ich habe --user opuser --group webapps zum gunicorn Befehl versucht anhängt, aber immer noch die gleichen Fehler.

+2

Sind Sie sicher, dass die Syntax 'unix $ PATH' ist, nicht' unix: PATH'? [Die Dokumente scheinen Letzteres zu empfehlen.] (Https://gunicorn-docs.readthedocs.org/en/latest/settings.html#bind) –

Antwort

5

Gemäß der Dokumentation (http://gunicorn-docs.readthedocs.org/en/latest/run.html), sollten Sie verwenden: unix:$(PATH), was bedeutet, Ihr Befehl sollte lauten:

gunicorn myapp.wsgi:application --bind=unix:/webapps/myapp/run/gunicorn.sock 
+0

Geändert - jetzt bekomme ich den Fehler 'OSError: [Errno 13] Permission abgelehnt: '/ webapps/openprescribing/run/gunicorn.sock' was ich glaube, ist der Fortschritt! Irgendeine Idee, wie ich das beheben kann? Es scheint seltsam, da 'opuser' der Besitzer der 'gunicorn.sock'-Datei ist. – Richard

+0

Ich glaube ich führe den 'gunicorn' Befehl nicht als' opuser', obwohl ...? Muss ich dem aktuellen Benutzer auch erlauben, sich mit 'gunicorn.sock' zu verbinden? – Richard

+0

Nur zur Fehlerbehebung können Sie dem Socket 777 Rechte gewähren und sehen, was passiert. – henrikstroem

-1

Benutzen Sie einfach folgenden Befehl ohne doppelte Anführungszeichen: "gunicorn appname.wsgi". Stellen Sie sicher, dass Sie diesen Befehl dort ausführen, wo sich Ihre wsgi.py befindet.