エンジニア

2016.05.10

[Elastic Beanstalk入門] Djangoアプリケーションのデプロイ その①

戦闘員吉田です。
ebの使い方入門ということで、公式チュートリアルよりDjangoアプリケーションのデプロイをやってみたいと思います。
Elastic Beanstalk への Django アプリケーションのデプロイ

前提条件

  • pipが使える
  • pythonは2.7/3.4を使ってる
  • virtualenvを導入済み
  • awsebcliコマンドが使える
  • ssh使える
  • クライアントはMacの使用を想定しています
  • ebコマンドが使える

準備:pipの導入

コマンド

easy_install pip

確認

pip --version

結果

pip 8.1.1 from /Library/Python/2.7/site-packages (python 2.7)

こんな感じでバージョン情報が出力されれば導入完了です。

準備:virtualenvの導入

コマンド

easy_install virtualenv

確認

virtualenv --version

結果

15.0.1

準備:awsebcliコマンドの導入

Macに Homebrew を使用して導入します
コマンド

brew install awsebcli

確認

eb --version

結果

EB CLI 3.7 (Python 2.7.1)

導入準備が完了しました。
実際に作業を進めていきます。

Pythonの仮想環境を設定する

変数

VIRTUAL_ENV_NAME='eb-virt'

コマンド

cd ~
virtualenv ${VIRTUAL_ENV_NAME}

結果

New python executable in /Users/****/eb-virt/bin/python
Installing setuptools, pip, wheel...done.

仮想環境の実行

コマンド

source ~/${VIRTUAL_ENV_NAME}/bin/activate

コマンドプロンプトの先頭に()で環境名がついていればOK

(eb-virt)

Djangoのインストール

確認

cd ~/${VIRTUAL_ENV_NAME}
pwd

結果

/Users/****/eb-virt

コマンド

pip install django==1.9.2

確認

pip freeze

結果

Django==1.9.2

上記結果を得られればDjangoは正しくインストールされています

Django プロジェクトの作成(クライアント環境に作成する)

まず、クライアント側でDjangoのプロジェクトを作れるか試してみます
変数

DJANGO_PJ_NAME='ebdjango'

確認

pwd

結果

/Users/****/eb-virt

Pythonの仮想環境が起動しているか確認する

(eb-virt)

コマンド

django-admin startproject ${DJANGO_PJ_NAME}

何も返って来ません
確認

tree ~/${VIRTUAL_ENV_NAME}/${DJANGO_PJ_NAME}

結果

/Users/****/eb-virt/ebdjango
├── ebdjango
│   ├── __init__.py
│   ├── settings.py
│   ├── urls.py
│   └── wsgi.py
└── manage.py

Djangoサイトを起動します
確認

cd ~/${VIRTUAL_ENV_NAME}/${DJANGO_PJ_NAME}
pwd

結果

/Users/****/eb-virt/ebdjango

コマンド

python manage.py runserver

結果

Performing system checks...
System check identified no issues (0 silenced).
You have unapplied migrations; your app may not work properly until they are applied.
Run 'python manage.py migrate' to apply them.
May 02, 2016 - 03:18:48
Django version 1.9.2, using settings 'ebdjango.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.

ちょっとアラートでてますが、スルーしてブラウザーから http://127.0.0.1:8000/ にアクセスします。
Welcome_to_Django
ローカルのDjangoサイトを停止します

Control + C

Djangoアプリケーションの設定

Djangoサイトの起動を確認できたのでサンプル・アプリケーションを準備します
先ほどまでの作業の流れで、Pythonの仮想環境が起動している状態での作業となります。
コマンド

pip freeze > requirements.txt

確認

cat requirements.txt

結果

Django==1.9.2

Elastic Beanstalk は requirements.txt を使用して、アプリケーションを実行する EC2 インスタンスにどのパッケージをインストールするかを判断します。

そのため、上記操作でインストールされているパッケージが何なのかebに伝えることが出来ます。

django.configの設定

コマンド

mkdir ~/${VIRTUAL_ENV_NAME}/${DJANGO_PJ_NAME}/.ebextensions

configファイルに設定を流し込みます
コマンド

cat << _EOF_ >> ~/${VIRTUAL_ENV_NAME}/${DJANGO_PJ_NAME}/.ebextensions/django.config
option_settings:
  aws:elasticbeanstalk:container:python:
    WSGIPath: ebdjango/wsgi.py
_EOF_

この設定 WSGIPath は、アプリケーションを起動するのに Elastic Beanstalk が使用する WSGI スクリプトの場所を指定します。

これで仮想環境下の作業は完了したので、仮想環境を終了します。
コマンド

deactivate

プロンプト先頭の(eb-virt) が消えていれば完了です。

デプロイ環境の確認

確認

tree ~/${VIRTUAL_ENV_NAME}/${DJANGO_PJ_NAME}

結果

/Users/****/eb-virt/ebdjango
├── db.sqlite3
├── ebdjango
│   ├── __init__.py
│   ├── __init__.pyc
│   ├── settings.py
│   ├── settings.pyc
│   ├── urls.py
│   ├── urls.pyc
│   ├── wsgi.py
│   └── wsgi.pyc
├── manage.py
└── requirements.txt

上記ディレクトリ構成になっていれば完了です。
次回はebコマンドを使用したデプロイからデプロイしたアプリケーションの更新などをしていきたいと思います。
がんばります!

一覧に戻る