2016-10-21 7 views
0

デジタルオーシャンにデプロイした後にnginxが静的ファイルを見つけることができない理由がわかりません。私はすべてを正しく設定したと思う。 collectstaticは正常に機能し、すべての静的ファイルを含む/project/staticディレクトリを作成しました。Nginxはいくつかの静的ファイルを見つけることができません

たぶんsettings.pyに何か問題があります:

STATIC_URL = '/static/' 
PROJECT_ROOT = os.path.dirname(os.path.abspath(__file__)) 
STATIC_ROOT = os.path.join(PROJECT_ROOT, 'static') 
STATICFILES_DIRS = (
    # os.path.join(PROJECT_ROOT, 'static'), 
    ('dolava_app', os.path.join(PROJECT_ROOT, 'dolava_app', 'static')), 
    ('reservations_app', os.path.join(PROJECT_ROOT, 'reservations_app', 'static')), 
    ('admin_stuff', os.path.join(PROJECT_ROOT, 'admin_stuff', 'static')), 
    ('ajax_stuff', os.path.join(PROJECT_ROOT, 'ajax_stuff', 'static')), 
) 

nginxの/サイト利用可能/ジャンゴ

upstream app_server { 
    server 127.0.0.1:9000 fail_timeout=0; 
} 

server { 
    listen 80 default_server; 
    listen [::]:80 default_server ipv6only=on; 

    root /usr/share/nginx/html; 
    index index.html index.htm; 

    client_max_body_size 4G; 
    server_name _; 

    keepalive_timeout 5; 

    # Your Django project's media files - amend as required 
    location /media { 
     alias /home/django/project/media; 
    } 

    # your Django project's static files - amend as required 
    location /static { 
     alias /home/django/project/static; 
    } 

    # Proxy the static assests for the Django Admin panel 
    location /static/admin { 
     alias /usr/lib/python2.7/dist-packages/django/contrib/admin/static/admin/; 
    } 

    location/{ 
     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
     proxy_set_header Host $http_host; 
     proxy_redirect off; 
     proxy_pass http://app_server; 
    } 
} 

私はnginxの再起動、あまりにもgunicornましたが。しかし、まだいくつかの静的ファイルはdjango/project/static/ディレクトリ内に見つかりません。私は何をすべきか知っていますか?

+0

申し訳ありませんが、ここでは申し訳ありません。おそらく、場所とエイリアスのパスの両方に '/ media'と' static'を追加してください。それは違いはありません。最後に、メディアと静的にヘッダを追加し、 'curl -I http:// yourwebsiteurl'を追加し、それが提供されているかどうかをチェックしたいかもしれませんそれらのブロックまたはプロキシに渡されます。私は404と仮定していますが、あなたはどのようなタイプのエラーを言っていないので、これらのことを示唆しています。 –

答えて

1

aliasは使用しないでください。 nginxでは、それはapacheとは異なる絶対的な動作をします。

http://nginx.org/en/docs/http/ngx_http_core_module.html#alias

あなただけの代わりにrootを使用する必要があります。

upstream app_server { 
    server 127.0.0.1:9000 fail_timeout=0; 
} 

server { 
    listen 80 default_server; 
    listen [::]:80 default_server ipv6only=on; 

    root /usr/share/nginx/html; 
    index index.html index.htm; 

    client_max_body_size 4G; 
    server_name _; 

    keepalive_timeout 5; 

    # Your Django project's media files - amend as required 
    location /media { 
     root /home/django/project; 
    } 

    # your Django project's static files - amend as required 
    location /static { 
     root /home/django/project; 
    } 

    # Proxy the static assests for the Django Admin panel 
    location /static/admin { 
     root /usr/lib/python2.7/dist-packages/django/contrib/admin; 
    } 

    location/{ 
     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
     proxy_set_header Host $http_host; 
     proxy_redirect off; 
     proxy_pass http://app_server; 
    } 
} 
関連する問題