djangoのstatic の扱い

参照

django と apache の環境は 前回整えた .
ConohaでDjango2.0 と Apache, MySQLの環境を整える

django と apacheの設定

static の扱いを考慮するうちに次のような設定にひとまず落ち着いた。
公開するstatic はproject_root下には置かない方針だ。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
WSGIPythonHome /var/www/environments/myenv
WSGIPythonPath /var/www/environments/mysite:/var/www/environments/myenv/lib/python3.6/site-packages
<VirtualHost *:80>
WSGIScriptAlias / /var/www/environments/mysite/mysite/wsgi.py

Alias /static/ /var/www/static/

<Directory /var/www/environments/mysite/mysite>
<Files wsgi.py>
Require all granted
</Files>
</Directory>

<Directory /var/www/static>
Require all granted
</Directory>
</VirtualHost>

mysite/settings.py

1
STATIC_URL = '/static/'

STATIC_ROOT = "/var/www/static/"

STATICFILES_DIRS = [
    os.path.join(BASE_DIR, "static"),
    '/var/www/static/',
]

static ファイルのデプロイは次のコマンドで

1
$ python manage.py collectstatic

STATIC_ROOT で設定したディレクトリにstaticなファイル集めてくれる
deploy スクリプトに書いとけばよいだろう

deploy スクリプト等にかく場合は入力を求めらてたりしてはまずい
同じパスにおいてあるファイルを更新することも多いだろう
次のオプションを利用すればOK

1
$ python manage.py collectstatic --noinput -c

以下の記事を参考にした
DjangoをApacheで動かすときの、confサンプル
Django、静的ファイルのデプロイ(Apache)