Servindo django com nginx e uWSGI

4

Eu segui este post para servir meu projeto de django. O projeto funciona bem com manage.py runserver e eu quero configurá-lo para produção. Aqui estão meus arquivos de configuração:

nginx.conf :

upstream django {
    server /tmp/vc.sock;
    #server 10.9.1.137:8002;
}

server {
    listen      8001;
    server_name 10.9.1.137;
    charset     utf-8;
    client_max_body_size 25M;

    location /media  {
        alias /home/deploy/vc/media;
    }
    location /static {
        alias /home/deploy/vc/static;
    }


    location / {
        uwsgi_pass  django;
        include     /etc/nginx/uwsgi_params;
    }
}

uwsgi.ini :

[uwsgi]

chdir           = /home/deploy/vc
wsgi-file      = vc/wsgi.py

master          = true
processes       = 2
#socket          = :8002
socket          = /tmp/vc.sock
chmod-socket    = 666
vacuum          = true

Se eu usar o soquete de porta TCP ( server 10.9.1.137:8002 e socket = :8002 ), tudo ficará bem. No entanto, se eu os comentar e usar soquetes Unix ( server /tmp/vc.sock e socket = /tmp/vc.sock ), o servidor retornará o erro 502. Como devo corrigir isso?

Aqui está o log de erros do nginx quando eu executo /etc/init.d/nginx restart

nginx: [emerg] invalid host in upstream "/tmp/vc.sock" in /etc/nginx/conf.d/vc.conf:2
nginx: configuration file /etc/nginx/nginx.conf test failed

E este é o aviso quando eu corro uwsgi --ini vc/uwsgi.ini :

*** WARNING: you are running uWSGI as root !!! (use the --uid flag) *** 

Não consigo executar o uWSGI como root?

    
por Terry 17.01.2014 / 05:29

1 resposta

3

Um upstream server que usa um soquete do domínio Unix deve ser declarado como tal:

upstream django {
    server unix:/tmp/vc.sock;

E sim, suponho que você poderia executar o uWSGI como root, mas você absolutamente não deveria . Esta é a segurança 101. O projeto uWSGI chega até mesmo a chamar isso de bom senso :

Common sense: do not run uWSGI instances as root. You can start your uWSGIs as root, but be sure to drop privileges with the uid and gid options.

BTW, seu bloco server pode usar uma diretiva root . Isso permitiria que você se livrasse daqueles location s redundantes inúteis para seus ativos estáticos.

    root /home/deploy/vc;
    
por 17.01.2014 / 05:36