configura o nginx para servir arquivos estáticos de desenvolvimento do django

1

Estou usando o Nginx para servir arquivos estáticos no servidor de desenvolvimento do django. No entanto, não posso fazer isso funcionar. O servidor roda bem, mas o nginx não consegue encontrar arquivos estáticos.

Estas são as minhas configurações no nginx.conf:

listen       8080;
server_name  localhost;

#charset koi8-r;
#access_log  logs/host.access.log  main;

location / {
    #root   html;
    #index  index.html index.htm;
    proxy_pass http://127.0.0.1:8000;
    proxy_set_header X-Forwarded-Host $server_name;
    proxy_set_header X-Real-IP $remote_addr;
}
location /static/  {
    alias /path/Documents/python_projects/to_pm/static/;
    access_log off;
    expires    30d;
}

Meu projeto settings.py:

STATIC_URL = '/static/'

# for production
STATIC_ROOT = os.path.join(BASE_DIR, 'static')

E também usei python manage.py collectstatics para copiar todos os arquivos estáticos para a pasta /path/Documents/python_projects/to_pm/static/ .

Mas quando eu uso http://localhost:8080 , o site fica muito feio, claramente os arquivos estáticos não são servidos pelo nginx. Como posso consertar isso?

Meus registros de erro são

13: Permission denied' for static files

Eu verifico os usuários e vejo que o nginx está sendo executado como root no processo mestre e em nobody como processo de trabalho. Não consigo alterar o usuário para root e não posso alterar o usuário para meu usuário padrão, pois recebo esse erro se eu alterar o usuário:

[emerg] getgrnam("root") failed in /usr/local/etc/nginx/nginx.conf:2

    
por newguy 02.12.2014 / 03:53

2 respostas

2

Encontrei a resposta para minha pergunta:

A resposta está neste artigo:

link

Como aponta:

Nginx needs to have read permission of the files that should be served AND 
have execute permission in each of the parent directories along the path from 
the root to the served files.

A pasta estática também pertence ao seu usuário nginx.

    
por 02.12.2014 / 11:04
1

Eu tive um problema semelhante como este. Descobriu-se que era um problema do SELinux que apareceu depois de uma atualização.

* Esta solução aplica-se se os seus arquivos estáticos estiverem abaixo de uma pasta pessoal do usuário

Olhando para o log nginx /var/log/nginx/-error.log pude ver que o processo nginx tem acesso negado ao tentar abrir arquivos estáticos.

Depois disso, examinei o log de auditoria (/var/log/audit/audit.log). Este arquivo tem todo tipo de informação sobre o que está acontecendo, mas é difícil de ler.

Mas há uma boa ferramenta chamada audit2why ( yum install policycoreutils-python )

Então, se você tentar isso: grep 1433926027.242: 416 /var/log/audit/audit.log | audit2why

Eu tenho este número 1433926027.242 procurando a cauda do arquivo audit.log

Quando executado, mostrou a solução. Só precisa semear uma bandeira com setsebool:

setsebool -P httpd_read_user_content 1

Depois disso, meu nginx poderia abrir os arquivos estáticos sem nenhum problema. *

Espero que ajude!

    
por 10.06.2015 / 21:52

Tags