環境
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
STATIC_ROOT
これを正しく設定しておかないと本番環境では静的ファイルがうまく動かなかった.
実際に管理サイトや通常サイトのcssや画像などが適用されなかったり,表示されなかった.
自分の場合は,以下のように設定してある.
STATIC_ROOTが指すのは,実際のLinuxでの絶対パスになる.
# 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¶
たぶんアプリごとに追加の静的ファイルがあるようなときに設定する必要がある.
自分の環境ではひとまずアプリごとの静的ファイルは必要なかったので,設定せず.