Назад | Перейти на главную страницу

Uwsgi запускается с root, но не как служба

У меня есть настройка nginx + uwsgi для веб-сайта Flask.

это мой nginx

server {
listen 80;
server_name _;

location /static/ {
    alias /var/www/site/app/static/;
}

location / {
    uwsgi_pass 127.0.0.1:5080;
    include uwsgi_params;
}
}

А вот и мой uwsgi config.xml

<uwsgi>
<socket>127.0.0.1:5080</socket>
<autoload/>
<daemonize>/var/log/uwsgi_webapp.log</daemonize>
<pythonpath>/var/www/site/</pythonpath>
<module>run:app</module>
<plugins>python27</plugins>
<virtualenv>/var/www/venv/</virtualenv>
<processes>1</processes>
<enable-threads/>
<master />
<harakiri>60</harakiri>
<max-requests>2000</max-requests>
<limit-as>512</limit-as>
<reload-on-as>256</reload-on-as>
<reload-on-rss>192</reload-on-rss>
<no-orphans/>
<vacuum/>
</uwsgi>

Когда я пытаюсь запустить службу uwsgi (service uwsgi start) он говорит нормально, но процесса uwsgi нет, и я вижу в журнале следующее:

*** Starting uWSGI 1.0.3-debian (64bit) on [Fri Oct 25 00:43:13 2013] ***
compiled with version: 4.6.3 on 17 July 2012 02:26:54
current working directory: /
writing pidfile to /run/uwsgi/app/gsk/pid
detected binary path: /usr/bin/uwsgi-core
setgid() to 33
setuid() to 33
limiting address space of processes...
your process address space limit is 536870912 bytes (512 MB)
your memory page size is 4096 bytes
 *** WARNING: you have enabled harakiri without post buffering. Slow upload could be         rejected on post-unbuffered webservers *** 
uwsgi socket 0 bound to TCP address 127.0.0.1:5080 fd 6
bind(): Permission denied [socket.c line 107]

Однако когда я запускаю uwsgi как root

uwsgi --socket 127.0.0.1:5080 --module run --callab app --harakiri 15 --harakiri-verbose --logto2 tmp/uwsgi.log

Он запускается нормально, и после перезапуска nginx я могу получить доступ к веб-сайту.

Что может быть проблемой?

Вот это действительно глупо. Я потратил несколько часов, пытаясь понять это, и нашел причину сразу после того, как разместил это. Eсть ошибка что заставило меня попытаться добавить uid и gid в конфигурацию:

<uwsgi>
<socket>127.0.0.1:5080</socket>
<autoload/>
<daemonize>/var/log/uwsgi_webapp.log</daemonize>
<pythonpath>/var/www/site/</pythonpath>
<module>run:app</module>
<plugins>python27</plugins>
<virtualenv>/var/www/gsk/</virtualenv>
<processes>1</processes>
<uid>www-data</uid>
<gid>www-data</gid>
<enable-threads/>
<master />
<harakiri>60</harakiri>
<max-requests>2000</max-requests>
<limit-as>512</limit-as>
<reload-on-as>256</reload-on-as>
<reload-on-rss>192</reload-on-rss>
<no-orphans/>
<vacuum/>
</uwsgi>

После их добавления он запустился, а после перезапуска nginx просто работает.