LoginSignup
31
34

More than 5 years have passed since last update.

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

Posted at

環境

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¶

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

31
34
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
31
34