[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/ にアクセスします。
ローカルの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コマンドを使用したデプロイからデプロイしたアプリケーションの更新などをしていきたいと思います。
がんばります!