fumitoshi
@fumitoshi (mu ja)

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

djangoのstaticファイルがデプロイした時に反映されない

エラー内容

タイトルにもあります通り、デプロイ時にstaticファイルが反映されません。
GCEとnginxを使ってデプロイしました。
このサイトを参考にしています↓
https://jun-networks.hatenablog.com/entry/2018/03/06/133656

ファイルの中身

最初は作った地図アプリでデプロイしていたのですが、原因がstaticの所と思うので、簡単なファイルを作って検証中です。
単純にhelloworldと表示するファイルです。赤色に変更するcssを書いてます。

考えられるエラーの原因

色々試してみたのですが、staticのパスがおかしいのかなと思います。
しかし色々試してみたものの、改善されないのでなにか僕が初歩的なミスをしている可能性があります。

ファイル構造

testgeogis2/
├testgeogis2
├static ※collectstaticするやつ
├world
 ├static
  ├world
   ├css
    ├index.css
├nginx.conf
├uwsgi_params

テンプレートなどの他のファイルもありますが割愛します

実際のコード

{% load static %}
<!DOCTYPE html>
<head>
    <meta charset="utf-8">
    <link rel="stylesheet" href="{% static 'world/css/index.css'%}">
</head>
<body>
    <div id='test'>
        hello world
    </div>
</body>

#test{
    color:red;
}
upstream django {
        # server unix:///www/run/uwsgi/master.sock;
        server 127.0.0.1:8000;
}

server {
        listen      80;
        server_name 35.226.2.14;
        charset    utf-8;

        client_max_body_size 100M;

        location /static {
                alias /home/アカウント名/testgeogis2/testgeogis2/static;
        }

        location / {
                uwsgi_pass django;
                include    /home/アカウント名/testgeogis2/uwsgi_params;
        }

}

最後に

なにか追加で見せたほうが良いファイルがあれば言ってください。
1週間くらい悩んでいるので皆さまのお力をかしていただけたら嬉しいです。
よろしくお願いします。

0

2Answer

Nginxの設定ですが、/staticのパスが違うように思います。

alias /home/アカウント名/testgeogis2/testgeogis2/static;

ではなくて

alias /home/アカウント名/testgeogis2/static;

ではないですかね?

トラブルが発生した場合はブラウザのF12を押して出てくる開発者ツールのコンソールタブの内容を確認してみてください。大体そこになにがしかのヒントが出ていることが多いです。

1Like

Comments

  1. @fumitoshi

    Questioner

    ありがとうございます!
    ここでミスしていただけでした。
    無事解決できました!!

settings.pyを見せてください。
python manage.py collectstaticしたときに、staticのファイルをどこに集めて、どういったURLで配信するのかの設定があると思います。

(拙作)staticの設定

ディレクトリ構造もtreeコマンドの結果をペーストしていただけると、
読み違いなく認識できると思います。

0Like

Comments

  1. @fumitoshi

    Questioner

    回答ありがとうございます!
    上記の方の言う通り、自分がパスを間違えていただけでした。

Your answer might help someone💌