質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.52%

  • Python

    7928questions

    Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

  • Django

    1048questions

    DjangoはPythonで書かれた、オープンソースウェブアプリケーションのフレームワークです。複雑なデータベースを扱うウェブサイトを開発する際に必要な労力を減らす為にデザインされました。

  • nginx

    837questions

    nginixは軽量で高性能なwebサーバーの1つです。BSD-likeライセンスのもとリリースされており、あわせてHTTPサーバ、リバースプロキシ、メールプロキシの機能も備えています。MacOSX、Windows、Linux、上で動作します。

  • Gunicorn

    21questions

    Gunicorn (Green Unicorn)は、Rubyのunicornをベースに開発されたUNIX向けのPython製HTTPサーバです。他のライブラリとの依存関係がないため、容易にインストールして使用できます。

【Django】デプロイ時にstaticファイルが反映されない

解決済

回答 1

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 448

mulberryfields

score 752

Djangoで作成したアプリをデプロイしたのですが、staticファイルを読み込んでくれません。(もちろん、開発環境においては、staticファイルは読み込まれています。)
サーバーは、Ubuntu serverで、nginx、gunicornで動いています。

https://docs.nginx.com/nginx/admin-guide/web-server/app-gateway-uwsgi-django/
上記のnginxのドキュメントを見て、
/etc/nginx/sites-enabled/default
に、下記のとおり記載をしてみました。

location /static/ {
alias /myproject/testproject/test/static/;
}


また、
/testproject/urls.py
には、下記のように記載しています。

urlpatterns = [
]+ static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)

この上で、サーバー上でpython manage.py collectstaticを実行しました。

You have requested to collect static files at the destination
location as specified in your settings:
/home/username/myproject/testproject/test/static
This will overwrite existing files!
Are you sure you want to do this?
Type 'yes' to continue, or 'no' to cancel: yes
Copying '/home/eitarokuwabara/myproject/testproject/lib/python3.5/site-packages/jet/static/admin/css/forms.css'
……
Found another file with the destination path 'admin/css/forms.css'. It will be ignored since only the first encountered file is collected. If this is not what you want, make sure every static file has a unique path.
……
Copying '/home/eitarokuwabara/myproject/archifields/lib/python3.5/site-packages/django/contrib/admin/static/admin/img/gis/move_vertex_off.svg'
……
444 static files copied to '/home/username/myproject/testproject/test/static', 2932 unmodified.
と表示され、collectstaticはうまく動いているように見えます。

その後、ページにアクセスすると、画像は表示されないのですが、レンダリングされたhtmlを見て、画像が表示されるべきURLに行くと、

<h1>Not Found</h1><p>The requested URL /test/static/images/open-iconic/svg/question-mark.svg was not found on this server.</p>
と表示されます。
しかし、サーバー上で見ると、/test/static/images/open-iconic/svg/question-mark.svgは確かにあります。
なぜ、うまくいかなかったのでしょうか。
何かお気づきの点がある方、ご教示頂ければ幸いです。

なお、/var/log/nginx/error.log.1を見てみると、下記のエラーが表示されます。

2018/05/06 15:12:38 [error] 27881#27881: *20099 open() "/myproject/testproject/test/static/css/style.css" failed (2: No such file or directory), client: 66.249.79.92, server: www.testproject.com, request: "GET /static/css/style.css HTTP/1.1", host: "www.sample.jp", referrer: "http://www.sample.jp/specific_tag/10060031/"
myproject/testproject/test/static/css/style.cssを見ているのですが、そこにstyle.cssはあるはずですので、なぜなのか分かりません。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • yuokada

    2018/05/07 08:26

    nginxのエラーログをみて"not found"になる時にどのファイルを参照しようとしているか確認できますか?

    キャンセル

  • mulberryfields

    2018/05/07 10:33

    ありがとうございます。本文にも書きましたが、/var/log/nginx/error.log.1を見てみた所、open() "/myproject/testproject/test/static/css/style.css" failed (2: No such file or directory)というエラーが表示されました。

    キャンセル

  • yuokada

    2018/05/07 12:38

    nginxはこのPATHをみにいってますね。なので、nginxの設定ファイルを直せば上手く動くかと思います。 => "/myproject/testproject/test/static/css/style.css"

    キャンセル

回答 1

checkベストアンサー

0

444 static files copied to '/home/username/myproject/testproject/test/static', 2932 unmodified.
と表示され、collectstaticはうまく動いているように見えます。

ファイルがここにあるということからnginxの設定をこんな風にすれば動かないですかね?

location /static/ {
    root /home/username/myproject/testproject/test;
}

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/05/07 14:35

    ありがとうございます。
    location /static/ {
    root /home/username/myproject/testproject/test;
    }
    としたり、他にも色々試してみましたが、うまくいきませんでした。

    なお、/var/log/nginx/error.logを見てみると、
    2018/05/07 14:14:09 [error] 13477#13477: *24 connect() failed (111: Connection refused) while connecting to upstream, client: 66.249.66.136, server: www.testproject.com,
    というエラーが出ます。

    キャンセル

  • 2018/05/08 23:37

    > Connection refused

    ここから判断するにuWSGIのサーバーと接続がうまく出来てないように思いますがuWSGIのサーバー(プロセス)は起動してますか?
    (自分はgunicorn使う派なのでuWSGIはそこまで詳しくないです)

    キャンセル

  • 2018/05/12 18:15

    ありがとうございます。色々試してみて、最終的に/etc/nginx/sites-enabled/defaultについて、下記の設定にすることでうまく動きました。

    upstream test{
    server 127.0.0.1:3000;
    }


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

    access_log /var/log/nginx/localhost.access_log;

    root /var/www/html;

    location / {
    proxy_set_header Host $host;
    proxy_pass http://test;
    }

    location /static/ {
    root /myproject/testproject/test/;
    }
    }

    キャンセル

  • 2018/05/12 20:58

    後で、Chromeではstaticファイルが見えるのにも関わらず、Firefox、Internet Explorerでは見えないという状態が見つかったので、
    https://teratail.com/questions/125848
    で質問をし直しました。

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 90.52%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る

  • Python

    7928questions

    Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

  • Django

    1048questions

    DjangoはPythonで書かれた、オープンソースウェブアプリケーションのフレームワークです。複雑なデータベースを扱うウェブサイトを開発する際に必要な労力を減らす為にデザインされました。

  • nginx

    837questions

    nginixは軽量で高性能なwebサーバーの1つです。BSD-likeライセンスのもとリリースされており、あわせてHTTPサーバ、リバースプロキシ、メールプロキシの機能も備えています。MacOSX、Windows、Linux、上で動作します。

  • Gunicorn

    21questions

    Gunicorn (Green Unicorn)は、Rubyのunicornをベースに開発されたUNIX向けのPython製HTTPサーバです。他のライブラリとの依存関係がないため、容易にインストールして使用できます。