Djangoroidの奮闘記

python,django,angularJS1~三十路過ぎたプログラマーの奮闘記

Elastic Beanstalk にdjango+nginx+uWSGI でdeployした時の話

概要

Elastic Beanstalk にdjango+nginx+uWSGI でdeployした時の話

参考サイト

github.com

やってみたこと

  • dockerfiles/django-uwsgi-nginx をgit clone して、ホストpcのdockerで試してみる。
  • dockerfiles/django-uwsgi-nginx をeb deployしてみる。
  • dockerfiles/django-uwsgi-nginxを自分用にコードやフォルダの中身を編集してみる。
  • 編集したdjango-uwsgi-nginxをホストpcのdockerでbuild, runさせてみる。
  • それをeb deployしてみる。

dockerfiles/django-uwsgi-nginx をgit clone して、ホストpcのdockerで試してみる。

$ git clone https://github.com/dockerfiles/django-uwsgi-nginx.git
$ cd django-uwsgi-nginx/
$ docker build -t ebdjanginx .
$ docker run -d -p 8000:80 ebdjanginx

これで、127.0.0.1:8000にアクセスしてみる。。。it worked!

dockerfiles/django-uwsgi-nginx をeb create or eb deployしてみる。

$ eb init
$ eb create
$ eb open

以下のerror発生!

Invalid HTTP_HOST header: '*****.ap-northeast-1.elasticbeanstalk.com'. You may need to add u'*****.ap-northeast-1.elasticbeanstalk.com' to ALLOWED_HOSTS.

ALLOWED_HOSTSにu'*****.ap-northeast-1.elasticbeanstalk.com'を追加すれば解決できそう! なので、とりあえず、eb deployもこのままの設定でいけることがわかった。Docker便利だなぁ(^ ^)

dockerfiles/django-uwsgi-nginxを自分用にコードやフォルダの中身を編集してみる。

現在の設定では、Dockerfileに、django-admin.py startprojectが入っているので、djangoですでにプロジェクトフォルダを作った状態で、eb deployしてみる。

# 以下のコードをコメントアウトする。
# RUN django-admin.py startproject website /home/docker/code/app/
  • app以下にdjangoのプロジェクトを作成する。以下のような感じに設定した。
django-uwsgi-nginx
 - Dockerfile
 - nginx-app.conf
 - uwsgi.ini
 - uwsgi_params
 - supervisor-app.conf
 - app
    - manage.py
    - requirements.txt
    - website
      - __init__.py
      ....
  • settings.py のALLOWED_HOSTにさっきのerrorの内容を反映させておく。
# app/website/settings.py
ALLOWED_HOSTS = [u'*******.ap-northeast-1.elasticbeanstalk.com','*']

とりあえず、こんなもんでOK!

編集したdjango-uwsgi-nginxをホストpcのdockerでbuild, runさせてみる。

$ docker build ebdjanginx2 .
$ docker run -d -p 8000:80 ebdjanginx2

localhost:8000にアクセスしてみる。。。無事表示された!

次は、ebdeployしてみる。

編集したdjango-uwsgi-nginxをeb deployしてみる。

$ eb init
$ eb create(or eb deploy)
$ eb open

無事表示された!よかった〜。これを元に少しアプリをデプロイしてみよう。 ただ、nginxとuwsgiの設定はよくわかってないので、ここはしっかり理解せんとな〜。