2013-11-02 3 views
10

Ich versuche, Django 1.5 mit Gunicorn/nginx/supervisor zu installieren, aber in diesem Stadium versuche ich nur, Gunicorn richtig zu starten.Gunicorn wirft OSError Errno 1 beim Start

Ich versuche, mit der Kommandozeile zu starten:

gunicorn project.wsgi:application --workers 3 --user=django --group=django --bind=127.0.0.1:8100 

und es scheitert mit

OSError: [Errno 1] Operation not permitted: '/tmp/wgunicorn-c7BU9r' 

Die Zurückverfolgungs:

2013-11-01 20:03:24 [17860] [INFO] Starting gunicorn 18.0 
2013-11-01 20:03:24 [17860] [INFO] Listening at: http://127.0.0.1:8000 (17860) 
2013-11-01 20:03:24 [17860] [INFO] Using worker: sync 
Traceback (most recent call last): 
    File "/opt/envs/bedlounge-front/bin/gunicorn", line 9, in <module> 
    load_entry_point('gunicorn==18.0', 'console_scripts', 'gunicorn')() 
    File "/opt/envs/bedlounge-front/lib/python2.7/site-packages/gunicorn/app/wsgiapp.py", line 71, in run 
    WSGIApplication("%(prog)s [OPTIONS] [APP_MODULE]").run() 
    File "/opt/envs/bedlounge-front/lib/python2.7/site-packages/gunicorn/app/base.py", line 143, in run 
    Arbiter(self).run() 
    File "/opt/envs/bedlounge-front/lib/python2.7/site-packages/gunicorn/arbiter.py", line 175, in run 
    self.manage_workers() 
    File "/opt/envs/bedlounge-front/lib/python2.7/site-packages/gunicorn/arbiter.py", line 470, in manage_workers 
    self.spawn_workers() 
    File "/opt/envs/bedlounge-front/lib/python2.7/site-packages/gunicorn/arbiter.py", line 529, in spawn_workers 
    self.spawn_worker() 
    File "/opt/envs/bedlounge-front/lib/python2.7/site-packages/gunicorn/arbiter.py", line 482, in spawn_worker 
    self.cfg, self.log) 
    File "/opt/envs/bedlounge-front/lib/python2.7/site-packages/gunicorn/workers/base.py", line 49, in __init__ 
    self.tmp = WorkerTmp(cfg) 
    File "/opt/envs/bedlounge-front/lib/python2.7/site-packages/gunicorn/workers/workertmp.py", line 25, in __init__ 
    util.chown(name, cfg.uid, cfg.gid) 
    File "/opt/envs/bedlounge-front/lib/python2.7/site-packages/gunicorn/util.py", line 157, in chown 
    os.chown(path, uid, gid) 
OSError: [Errno 1] Operation not permitted: '/tmp/wgunicorn-c7BU9r' 

Wenn ich ohne den Benutzer und die Gruppe starten Argumente (als mein normaler Benutzer), fängt es gut an. Mein Verständnis ist, dass ich dies jedoch unter einem anderen Benutzer oder einer anderen Gruppe starten möchte.

Kann mir jemand helfen, was ich falsch mache? Oder irgendwelche Informationen, die mir helfen würden, das zu lösen?

Danke!

+0

Falls jemand für eine [Emporkömmling Konfiguration für Django/Gunicorn Projekt] suchen (https://gist.github.com/johnjohndoe/62fbdf58608143507c94) ... – JJD

Antwort

9

Das Problem liegt möglicherweise daran, dass Ihre Benutzer-ID versucht, den Prozess als ein anderer Benutzer zu starten. Ich gehe davon aus, dass Sie den Benutzer und die Gruppe im Betriebssystem erstellt haben. Sie könnten Ihren vorherigen Befehl als root versuchen oder sudo verwenden.

Ich verwende die folgende Supervisor-Konfiguration, die sowohl auf der Kommandozeile und als Option die Benutzer angibt:

[program:gunicorn] 
command=/opt/mysite/virtual_env/bin/python \ 
    /opt/mysite/virtual_env/bin/gunicorn_django -w 2 --user=appsrun 
directory = /opt/mysite/virtual_env/app/ 
user = appsrun 
+0

Gibt es irgendetwas, das speziell für den Benutzer ist (oder sein sollte), auf dem Sie gunicorn ausführen? Abgesehen davon, dass ich es erstellt habe, was ich getan habe, gibt es noch etwas, das es braucht? –

+0

Sieht aus, als hättest du recht gehabt. Das Starten des Skripts als root funktionierte einwandfrei. Vielen Dank! –