Pytanie Gunicorn rzuca OSError Errno 1 podczas startu


Próbuję wdrożyć Django 1.5 za pomocą Gunicorn / nginx / supervisor, ale na tym etapie staram się tylko, aby Gunicorn zaczął poprawnie działać.

Próbuję zacząć od linii poleceń:

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

i zawodzi

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

Trackback:

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'

Jeśli zacznę bez argumentów użytkownika i grupy (jako mój zwykły użytkownik), wszystko zaczyna się dobrze. Rozumiem, że chciałbym rozpocząć to od innego użytkownika lub grupy.

Czy ktoś może mi pomóc z tym, co robię źle? Lub jakiekolwiek informacje, które pomogłyby mi rozwiązać ten problem?

Dzięki!


11
2017-11-02 00:18


pochodzenie


Na wypadek, gdyby ktoś szukał konfiguracja upstart dla projektu Django / Gunicorn ... - JJD


Odpowiedzi:


Problem może polegać na tym, że twój użytkownik próbuje rozpocząć proces jako inny użytkownik. Zakładam, że utworzyłeś użytkownika i grupę w systemie operacyjnym. Możesz wypróbować poprzednie polecenie jako root lub use sudo.

Używam następującej konfiguracji Supervisora, która określa użytkownika zarówno w linii poleceń, jak i jako opcję:

[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

9
2017-11-02 09:09



Czy jest coś, co jest (lub powinno być) specjalne dla użytkownika, który uruchamiasz gunicorn? Oprócz tego, że stworzyłem to, co zrobiłem, czy jest coś jeszcze, czego potrzebuje? - Daniel Hirsch
Wygląda na to, że miałeś rację. Uruchomienie skryptu jako root działało dobrze. Dzięki! - Daniel Hirsch
Uruchamianie skryptu jako root to nie nie nie :( - chefarov
w moim przypadku problem polegał na tym, że używałem USER=$(whoami) GROUP=www-data i mimo że użytkownik należy do tej grupy, musiałem usunąć --group w celu naprawienia tego błędu - chefarov