Nginx+Gunicorn+AWSでDjangoのadmin画面が崩れているのを修正した時のメモ


これは個人的に勉強のために行った際のメモです。

環境

Amazon Linux AMI 2015.03 (HVM), SSD Volume Type – ami-cbf90ecb
Django 1.8.1
Gunicorn 19.3.0
Nginx 1.6.2

以前の作業は、
Nginx+Gunicorn+AWSでDjangoの起動画面を表示するまでのメモ | kazsoga(曽我一弘)ブログ
です。

Djangoの静的ファイルをcollectstaticコマンドで集める

まず、gunicornで動かすDjangoのプロジェクトのsetting.pyに以下の行を追加。
STATIC_ROOT = os.path.join(BASE_DIR, 'static')

私は、STATIC_URL = ‘/static/’の下に追加しました。

で、manage.pyのディレクトリに移動して、collectstaticコマンドを使います。
$ cd ../
$ python3 manage.py collectstatic

You have requested to collect static files at the destination
location as specified in your settings:

/home/ec2-user/guni_nginx/static

This will overwrite existing files!
Are you sure you want to do this?

Type 'yes' to continue, or 'no' to cancel: yes # yesにする

上記のように聞かれるので、yesを選択すると、同じディレクトリにstaticというディレクトリができます。

ここに静的ファイルが集められます。

で、gunicornを起動しておきます。
$ gunicorn projectname.wsgi

nginx.confの編集

nginx.confの編集をします。
$ sudo vi nginx.conf
まず、
user nginx;

user ec2-user;
に変更します。

次に、
location /static {
alias /home/ec2-user/guni_nginx/static/;
}

を追加します。
私は、
location / {
proxy_pass http://127.0.0.1:8000;
}

の下に追加しました。

でファイルを保存して、nginxを再起動します。

$ sudo /etc/init.d/nginx restart
これで、server_nameのURLの/adminにアクセスするとレイアウト崩れが治りました。

Django administration

参考ページ

以下の2つのサイトの複合技で解決しました。
djangoでのstaticファイルが読み込まれない闇 – Nshiba’s blog
Minimal Nginx and Gunicorn configuration for Django projects – Agiliq Blog | Django web app development