Help us understand the problem. What is going on with this article?

Django 静的ファイル (static) 関係の設定まとめ

More than 3 years have passed since last update.

環境

Python 3.4.3
Django 1.10
uwsgi
Nginx
CentOS7.2@さくらVPS

なぜ

Djangoを本番環境にデプロイするときに静的ファイル関係の設定でいろいろはまったので,まとめる.
基本的に以下の5つあるようだが,上から3つだけ使用していたので,それらに関してまとめる.
ちなみに以下のそれぞれの定数はsetting.pyで設定する.

  • STATIC_ROOT
  • STATIC_URL
  • STATICFILES_DIRS (Prefixes (optional))
  • STATICFILES_STORAGE
  • STATICFILES_FINDERS

https://docs.djangoproject.com/en/1.10/ref/settings/#id17

STATIC_ROOT

これを正しく設定しておかないと本番環境では静的ファイルがうまく動かなかった.
実際に管理サイトや通常サイトのcssや画像などが適用されなかったり,表示されなかった.

自分の場合は,以下のように設定してある.
STATIC_ROOTが指すのは,実際のLinuxでの絶対パスになる.

setting.py
# Fetch Django's project directory
DJANGO_ROOT = dirname(dirname(abspath(__file__)))
# Fetch the project_root
PROJECT_ROOT = dirname(DJANGO_ROOT)

STATIC_ROOT = os.path.join(PROJECT_ROOT, 'static') # /path/to/project_directory/static

デプロイ環境のためにcollectstaticが静的ファイルを集めるディレクトリへの絶対パス
The absolute path to the directory where collectstatic will collect static files for deployment.

Example: "/var/www/example.com/static/"

STATIC_URL¶

とりあえず /static/にしておけばよい.
すると静的ファイルを domain/static/ に読みに行ってくれるようだ.

STATIC_ROOTのなかに置かれた静的ファイルを参照するときに使われるURL
URL to use when referring to static files located in STATIC_ROOT.
Example: "/static/" or "http://static.example.com/"

STATICFILES_DIRS¶

たぶんアプリごとに追加の静的ファイルがあるようなときに設定する必要がある.
自分の環境ではひとまずアプリごとの静的ファイルは必要なかったので,設定せず.

aion
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした