Nginx + Gunicorn + Django - nginx não permitindo arquivos estáticos

2

Código atualizado - isso ainda não está funcionando.

Settings.py

STATIC_ROOT = '/home/ubuntu/virtualenv/mysite/homelaunch/static/'
STATIC_URL = '/static/'

conf nginx :: / etc / nginx / sites-enabled / mysite

server {
        server_name ec2-x-x-x-x.compute-1.amazonaws.com;
        access_log /home/ubuntu/virtualenv/mysite/error/access.log;
        error_log /home/ubuntu/virtualenv/mysite/error/error.log warn;
        connection_pool_size 2048;

        location /static/ {
            #alias /home/ubuntu/virtualenv/mysite/homelaunch/static/;
            #alias /static/;
            root /home/ubuntu/virtualenv/mysite/homelaunch/;
        }

        location / {
            proxy_pass http://127.0.0.1:8001;
            proxy_set_header Host $host;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            #proxy_set_header X-Forwarded-Host $server_name;
            #proxy_set_header X-Real-IP $remote_addr;
            add_header P3P 'CP="ALL DSP COR PSAa PSDa OUR NOR ONL UNI COM NAV"';
        }
    }

config gunicorn -

command = '/usr/local/bin/gunicorn'
logfile = "/home/ubuntu/virtualenv/mysite/error/gunicorn.log"
loglevel = "info"
pythonpath = '/home/ubuntu/virtualenv/mysite'
bind = '127.0.0.1:8001'

caminho completo para img dir e css dir:

/home/ubuntu/virtualenv/mysite/homelaunch/static/css
/home/ubuntu/virtualenv/mysite/homelaunch/static/img

Recebendo um erro no error.log:

001/favicon.ico", host: "ec2-xx-xx-xx-xx.compute-1.amazonaws.com"
2013/09/02 16:57:42 [error] 2819#0: *1 connect() failed (111: Connection refused) while connecting to upstream, client: xx.xx.xx.xx, server: ec2-xx-xx-xx-xx.compute-1.amazonaws.com, request: "GET / HTTP/1.1", upstream: "http://127.0.0.1:8001/", host: "ec2-xx-xx-xx-xx.compute-1.amazonaws.com"

Algo que está claramente errado? Eu ainda estou recebendo um erro 404 em ambos os arquivos img e css quando tento visualizá-los através da fonte html de saída.

    
por user700070 01.09.2013 / 16:35

2 respostas

1

Esta resposta foi editada para resumir as soluções.

Na configuração do nginx

Substituindo:

alias /home/ubuntu/virtualenv/mysite/homelaunch/;

com:

root /home/ubuntu/virtualenv/mysite/homelaunch/;

Consulte a documentação para obter mais detalhes.

Substituindo:

proxy_set_header X-Forwarded-Host $server_name;
proxy_set_header X-Real-IP $remote_addr;

com:

proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

Na configuração do gunicorn

Substituindo:

bind = 'ec2-x-x-x-x.compute-1.amazonaws.com:8001'

com:

bind = '127.0.0.1:8001'

Nas configurações do django

Definindo STATIC_ROOT = '/home/ubuntu/virtualenv/mysite/homelaunch/static/' , que é o caminho absoluto correto do sistema de arquivos.

Definindo DEBUG = True para ter informações de erro mais detalhadas.

    
por 01.09.2013 / 17:09
0

Substitua isto:

location /static/ {
            alias /home/ubuntu/virtualenv/mysite/homelaunch/;
        }

Para este:

location /static/ {
            alias  /home/ubuntu/virtualenv/mysite/homelaunch/static/;
}

Se você fizer um alias, precisará colocar o caminho absoluto, porque você definiu o diretório estático em settings.py

STATIC_URL = '/static/'

Então, se você colocar o alias, este diretório / home / ubuntu / virtualenv / mysite / homelaunch /;

Nginx acha que os arquivos estáticos estão em / home / ubuntu / virtualenv / mysite / homelaunch / e não estão em / home / ubuntu / virtualenv / mysite / homelaunch / static

Desculpe pelo meu mau inglês, tento melhorar: (

Espero que você me entenda.

    
por 01.09.2013 / 17:55