AWS Elastic Beanstalk Django アプリケーション環境を CentOS6.5 上に PyDevを使って構築する(1) Django起動まで
- (1) Django起動まで
- (2) (TIPS) SSH、RDSへの接続
- (3) (TIPS) ログの確認とデプロイ結果の確認
- (4) いくつかのトラブルシュート
- (5) アプリケーションの作成
- (6) createadmin スクリプトの実行のトラブルシュート
- (7) 静的IPアドレスの設定とドメインの取得とDNSの設定
- AWS Elastic Beanstalk RDS の文字コードをutf-8に設定しなおす
- Djangoでバッチ処理を行う(AWS Elasticbeanstalk)
基本的にチュートリアル、AWS Elastic Beanstalk への Django アプリケーションのデプロイ に従うが、CentOS6.5 に、Eclipse+PyDev を利用した環境を作成する。
チュートリアル で、Djangoの動作確認(It worked! のページが表示)が出来るところまで。
1.CentOS環境の構築
1.1.CentOS6.5 にPython2.7 をインストールする
まず、Elastic Beanstalk を使用する条件として、Python のバージョンが、2.7 もしくは 3.0 と指定されているため、Python2.7 を CentOS6.5 にインストールする。CentOS7 だと、Python2.7 が最初からインストールされているが、CentOS6.5では、Python2.6がデフォルト。
・Python2.7 をインストールして、PIPが利用出来るようにする手順
を実施し、ソースコードからコンパイル、インストールする。インストールするときには
、altinstall を行い、2.6と2.7 を共存させる。2.6を2.7で置き換えてしまうと、システム管理
ツールなど、Pythonを利用しているツールが動かなくなってしまう。
- # make && make altinstall
あとは、コンパイル時にエラーになったら、不足しているライブラリなどを適宜インストールする。
Django のインストールはこの時点では不要。
1.2.Virtualenv のインストールと起動
https://virtualenv.pypa.io/en/latest/index.html
Pythonの複数バージョンを隔離することで、同一環境にインストール出来るVirtualenvをインストールする。
ホームディレクトリにvirtualenv ディレクトリ(名称任意)を作成し、python2.7の環境を作成する。
- [piroto@localhost ~]$ mkdir virtualenv
- [piroto@localhost ~]$ virtualenv -p python2.7 ~/virtualenv
- Already using interpreter /usr/local/bin/python2.7
- New python executable in /home/piroto/virtualenv/bin/python2.7
- Also creating executable in /home/piroto/virtualenv/bin/python
- Installing setuptools, pip...done.
Virtualenv を起動(activate)する。(終了するときは、deactivate)
- [piroto@localhost ~]$ . ~/virtualenv/bin/activate
1.3.Djangoとmysql-pythonのインストール
1.3.1 Djangoのインストール
Virtualenv 環境に、pip を使ってDjango1.7.1をインストール
- (virtualenv)[piroto@localhost ~]$ pip install django==1.7.1
- Collecting django==1.7.1
- Using cached Django-1.7.1-py2.py3-none-any.whl
- Installing collected packages: django
- Successfully installed django-1.7.1
1.3.2 mysql-python のインストール
同様に、mysql-python1.2.5 をインストール
- (virtualenv)[piroto@localhost ~]$ pip install mysql-python==1.2.5
- Collecting mysql-python==1.2.5
- Downloading MySQL-python-1.2.5.zip (108kB)
- 100% |################################| 110kB 2.8MB/s
- Installing collected packages: mysql-python
- :(略)
- Successfully installed mysql-python-1.2.5
1.3.3 MySQLをローカル環境に導入
チュートリアルにはないが、ローカル環境で実行させたいので、Elastic Beanstalk の MySQL バージョンに合わせて5.5 をローカルにインストールする。
http://dev.mysql.com/downloads/mysql/
Linux – Generic を選択し、Looking for previous GA versions? リンクをクリック
一式必要なものがバンドルされた、Linux – Generic 2.6 (x86, 32-bit), RPM Bundle のダウンロードボタンを押下
この画面で、No thanks, just start my download. のリンクに直接ダウンロードするパスがかかれているので、それを使って、wget する。上のボタンはサインインが必要で面倒。
解凍とインストール
- # tar -xvf MySQL-5.5.41-1.linux2.6.i386.rpm-bundle.tar
- rpm -ivh MySQL-shared-5.5.41-1.linux2.6.i386.rpm
- rpm -ivh MySQL-shared-compat-5.5.41-1.linux2.6.i386.rpm
- rpm -ivh MySQL-server-5.5.41-1.linux2.6.i386.rpm
- rpm -ivh MySQL-client-5.5.41-1.linux2.6.i386.rpm
- rpm -ivh MySQL-devel-5.5.41-1.linux2.6.i386.rpm
root のパスワードを設定
- /usr/bin/mysqladmin -u root password 'new-password'
- /usr/bin/mysqladmin -u root -h localhost.localdomain password 'new-password'
以下を実行
- root でログイン
- “phrase” という名前のデータベースを作成
- “phrase_app” というユーザーを作成
- “phrase_app” にDB管理権限を与える
- $ mysql -u root -p
- Enter password:
- Welcome to the MySQL monitor. Commands end with ; or \g.
- Your MySQL connection id is 3
- Server version: 5.5.41 MySQL Community Server (GPL)
- Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved.
- Oracle is a registered trademark of Oracle Corporation and/or its
- affiliates. Other names may be trademarks of their respective
- owners.
- Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
- mysql> create database phrase default character set utf8;
- Query OK, 1 row affected (0.03 sec)
- mysql> create user phrase_app@'%';
- Query OK, 0 rows affected (0.00 sec)
- mysql> grant all privileges on *.* to phrase_app@'%' identified by '*****' with grant option;
1.4 AWS Elastic Beanstalk ツールのインストールと設定
1.4.1 AWS Elastic Beanstalk Command Line Tool のダウンロード
以下からダウンロードし、適当なディレクトリに解凍する
http://aws.amazon.com/code/6752709412171743
1.4.2 PATHを通し、エイリアスを設定
- (virtualenv)[piroto@localhost phrase]$ export PATH=$PATH:/opt/AWS-ElasticBeanstalk-CLI-2.6.4/eb/linux/python2.7/
- (virtualenv)[piroto@localhost phrase]$ alias eb="python2.7 /opt/AWS-ElasticBeanstalk-CLI-2.6.4/eb/linux/python2.7/eb"
1.4.3 bashrc に設定を記述しておく
/etc/bashrc の末尾に以下を追記し、次回ログイン時にも再設定されるようにしておく
- export PATH=$PATH:/opt/AWS-ElasticBeanstalk-CLI-2.6.4/eb/linux/python2.7/
- alias eb="python2.7 /opt/AWS-ElasticBeanstalk-CLI-2.6.4/eb/linux/python2.7/eb"
2.Eclipse + PyDevのインストール
2.1 Eclipse をダウンロードして適当なディレクトリに展開
http://www.eclipse.org/downloads/?osType=linux&release=undefined
2.2 PyDevのインストール
http://pydev.org/download.html
help > Install new Software > Add ボタン押下
以下を入力し、OK、PyDevにチェックし、ウィザードに従いインストールを完了する。
Name: PyDev
Location : http://pydev.org/updates
3.プロジェクトの作成
3.1 Virtualenvをインタープリタとして設定
http://okdtsk.hateblo.jp/entry/20111221/1324415529
Widow > Preference で設定ウィンドウをひらき、PyDev > Interpreters > Python Interpreter で New ボタンを押下。
Interpreter Executeble のパスに、上記でインストールした Virtualenv のパス以下のpython2.7を指定する。
OKで、必要なライブラリのパスが自動で設定される。
3.2 PyDev Django プロジェクトの作成
Eclipse パッケージエクスプローラーの右クリック New > Other から ダイアログを開き、Pydev Django Projectを選択
プロジェクト名を入力。今回の例では、“phrase” とする。
以下、さまざまな設定で、”phrase” というキーワードが出てくるが、それぞれのアプリケーション名に読み替える。
以降、ウィザードに従い完了させる。
3.3 Git の設定
作成したプロジェクトの右クリックからTeam > Shre Project
Git を選択し次へ
「Use or create repository in parent folder of project」にチェックをいれ、下段の Create Repository ボタンを押下したのち、プロジェクトにチェックを入れて完了する。
プロジェクトを削除すると、リポジトリも併せて削除されてしまうためか、リポジトリをEclipseのワークスペースに作成するのは、非推奨とメッセ-が出るが、続行する。
3.4 プロジェクトの編集
最低限のプロジェクト編集を行う。
3.4.1 settings.py を編集する
チュートリアルの記述では、if ‘RDS_DB_NAME’ … ブロックの中だけだが、ローカルで実行したときには
、上記でインストールしたローカルのMySQLを参照するような記述にDATABASESを置き換える。
- if 'RDS_DB_NAME' in os.environ:
- DATABASES = {
- 'default': {
- 'ENGINE': 'django.db.backends.mysql',
- 'NAME': os.environ['RDS_DB_NAME'],
- 'USER': os.environ['RDS_USERNAME'],
- 'PASSWORD': os.environ['RDS_PASSWORD'],
- 'HOST': os.environ['RDS_HOSTNAME'],
- 'PORT': os.environ['RDS_PORT'],
- }
- }
- else:
- DATABASES = {
- 'default': {
- 'ENGINE': 'django.db.backends.mysql',
- 'NAME': 'phrase',
- 'USER': 'phrase_app',
- 'PASSWORD': '*****',
- 'HOST': '127.0.0.1',
- 'PORT': '3306',
- }
- }
以下の記述を追記する
- STATIC_ROOT = os.path.join(os.path.dirname(os.path.dirname(os.path.abspath(__file__))), 'static')
3.4.2 .ebextentions/config ファイルの作成
ルートディレクトリに.ebextentions ディレクトリを作成し、その中に、.config 拡張子 のファイルを作成する。config 拡張子であれば、名前は任意で、アルファベット順に実行される。
- (virtualenv)[piroto@localhost phrase]$ ls -a
- . .. .git .project .pydevproject manage.py phrase phrase.config
- (virtualenv)[piroto@localhost phrase]$ mkdir .ebextensions
- (virtualenv)[piroto@localhost phrase]$ vi phrase.config
内容はチュートリアル通り。
チュートリアルでは、2回に分けて編集されるが、admin ユーザー作成のスクリプトなどを設定する2回目はうまく動かないので、1回目の状態で確認する。
- container_commands:
- 01_syncdb:
- command: "django-admin.py syncdb --noinput"
- leader_only: true
- option_settings:
- - namespace: aws:elasticbeanstalk:container:python
- option_name: WSGIPath
- value: phrase/wsgi.py
- - option_name: DJANGO_SETTINGS_MODULE
- value: phrase.settings
3.4.3 requirements.txt の作成
ルートディレクトリに、requrements.txt を作成する。この記述にもとづいて、EC2のサーバが構成される。
pip freeze を使用すると以下のようなファイルが作成される。
- (virtualenv)[piroto@localhost phrase]$ pip freeze > requirements.txt
- (virtualenv)[piroto@localhost phrase]$ cat requirements.txt
- boto==2.34.0
- Django==1.7.1
- MySQL-python==1.2.5
3.5 構成の全体とGit コミット
プロジェクトの右クリック から Team > Commt を実行
コミットすると、全体で以下の様な構成になる。
4. Elastic Beanstalk の初期化と開始
4.1 初期化
Virtualenv が開始された状態で、上記プロジェクトのルートフォルダから、eb init を実行する。
設定内容は、チュートリアル「AWS Elastic Beanstalk を構成するには」を参照
- (virtualenv)[piroto@localhost phrase]$ eb init
- To get your AWS Access Key ID and Secret Access Key,
- visit "https://aws-portal.amazon.com/gp/aws/securityCredentials".
- Enter your AWS Access Key ID (current value is "AKIAJ*****DC3CQ"): **************************
- Enter your AWS Secret Access Key (current value is "7StGV*****emLaR"): **************************
- Select an AWS Elastic Beanstalk service region.
- Available service regions are:
- 1) US East (Virginia)
- 2) US West (Oregon)
- 3) US West (North California)
- 4) EU West (Ireland)
- 5) EU Central (Frankfurt)
- 6) Asia Pacific (Singapore)
- 7) Asia Pacific (Tokyo)
- 8) Asia Pacific (Sydney)
- 9) South America (Sao Paulo)
- Select (1 to 9): 7
- Enter an AWS Elastic Beanstalk application name (auto-generated value is "phrase"):
- Enter an AWS Elastic Beanstalk environment name (auto-generated value is "phrase-env"):
- Select an environment tier.
- Available environment tiers are:
- 1) WebServer::Standard::1.0
- 2) Worker::SQS/HTTP::1.0
- Select (1 to 2): 1
- Select a solution stack.
- Available solution stacks are:
- 1) 64bit Amazon Linux 2014.09 v1.0.9 running PHP 5.5
- 2) 64bit Amazon Linux 2014.09 v1.0.9 running PHP 5.4
- 3) 64bit Amazon Linux 2014.03 v1.0.9 running PHP 5.5
- 4) 64bit Amazon Linux 2014.03 v1.0.9 running PHP 5.4
- 5) 32bit Amazon Linux 2014.03 v1.0.9 running PHP 5.5
- 6) 32bit Amazon Linux 2014.03 v1.0.9 running PHP 5.4
- 7) 32bit Amazon Linux running PHP 5.3
- 8) 64bit Amazon Linux running PHP 5.3
- 9) 64bit Amazon Linux 2014.09 v1.0.9 running Node.js
- 10) 64bit Amazon Linux 2014.03 v1.0.9 running Node.js
- 11) 32bit Amazon Linux 2014.03 v1.0.9 running Node.js
- 12) 64bit Windows Server 2008 R2 running IIS 7.5
- 13) 64bit Windows Server 2012 running IIS 8
- 14) 64bit Windows Server 2012 R2 running IIS 8.5
- 15) 64bit Windows Server Core 2012 R2 running IIS 8.5
- 16) 64bit Amazon Linux 2014.09 v1.0.0 running Tomcat 8 Java 8
- 17) 64bit Amazon Linux 2014.09 v1.0.9 running Tomcat 7 Java 7
- 18) 64bit Amazon Linux 2014.03 v1.0.9 running Tomcat 7 Java 7
- 19) 64bit Amazon Linux 2014.09 v1.0.9 running Tomcat 7 Java 6
- 20) 64bit Amazon Linux 2014.03 v1.0.9 running Tomcat 7 Java 6
- 21) 32bit Amazon Linux 2014.03 v1.0.9 running Tomcat 7 Java 7
- 22) 32bit Amazon Linux 2014.03 v1.0.9 running Tomcat 7 Java 6
- 23) 32bit Amazon Linux running Tomcat 7
- 24) 64bit Amazon Linux running Tomcat 7
- 25) 32bit Amazon Linux running Tomcat 6
- 26) 64bit Amazon Linux running Tomcat 6
- 27) 64bit Amazon Linux 2014.09 v1.0.9 running Python 2.7
- 28) 64bit Amazon Linux 2014.09 v1.0.9 running Python
- 29) 64bit Amazon Linux 2014.03 v1.0.9 running Python 2.7
- 30) 64bit Amazon Linux 2014.03 v1.0.9 running Python
- 31) 32bit Amazon Linux 2014.03 v1.0.9 running Python 2.7
- 32) 32bit Amazon Linux 2014.03 v1.0.9 running Python
- 33) 32bit Amazon Linux running Python
- 34) 64bit Amazon Linux running Python
- 35) 64bit Amazon Linux 2014.09 v1.0.9 running Ruby 2.1 (Puma)
- 36) 64bit Amazon Linux 2014.09 v1.0.9 running Ruby 2.1 (Passenger Standalone)
- 37) 64bit Amazon Linux 2014.09 v1.0.9 running Ruby 2.0 (Puma)
- 38) 64bit Amazon Linux 2014.09 v1.0.9 running Ruby 2.0 (Passenger Standalone)
- 39) 64bit Amazon Linux 2014.09 v1.0.9 running Ruby 1.9.3
- 40) 64bit Amazon Linux 2014.03 v1.0.9 running Ruby 2.1 (Puma)
- 41) 64bit Amazon Linux 2014.03 v1.0.9 running Ruby 2.1 (Passenger Standalone)
- 42) 64bit Amazon Linux 2014.03 v1.0.9 running Ruby 2.0 (Passenger Standalone)
- 43) 64bit Amazon Linux 2014.03 v1.0.9 running Ruby 2.0 (Puma)
- 44) 64bit Amazon Linux 2014.03 v1.0.9 running Ruby 1.9.3
- 45) 32bit Amazon Linux 2014.03 v1.0.9 running Ruby 1.9.3
- 46) 64bit Amazon Linux 2014.09 v1.0.11 running Docker 1.3.3
- 47) 64bit Debian jessie v1.0.2 running GlassFish 4.1 Java 8 (Preconfigured - Docker)
- 48) 64bit Debian jessie v1.0.2 running GlassFish 4.0 Java 7 (Preconfigured - Docker)
- 49) 64bit Debian jessie v1.0.2 running Python 3.4 (Preconfigured - Docker)
- Select (1 to 49): 27
- Select an environment type.
- Available environment types are:
- 1) LoadBalanced
- 2) SingleInstance
- Select (1 to 2): 1
- Create an RDS DB Instance? [y/n]: y
- Create an RDS BD Instance from (current value is "[No snapshot]"):
- 1) [No snapshot]
- 2) awseb-e-ptkmnhm3xx-stack-snapshot-awsebrdsdatabase-k9uebzidtrci
- 3) awseb-e-v93jmffmci-stack-snapshot-awsebrdsdatabase-19su3ax11n8uy
- 4) awseb-e-pzpnjjgrdb-stack-snapshot-awsebrdsdatabase-1ubni5tyda5lv
- 5) [Other snapshot]
- Select (1 to 5): 1
- Enter an RDS DB master password:
- Retype password to confirm:
- If you terminate your environment, your RDS DB Instance will be deleted and you will lose your data.
- Create snapshot? [y/n]: y
- Attach an instance profile (current value is "[Create a default instance profile]"):
- 1) [Create a default instance profile]
- 2) aws-elasticbeanstalk-ec2-role
- 3) [Other instance profile]
- Select (1 to 3): 1
- Updated AWS Credential file at "/home/piroto/.elasticbeanstalk/aws_credential_file".
4.2 開始
eb start でアプリケーションを開始する。上記でコミットしたプロジェクトも同時にデプロイする。
- (virtualenv)[piroto@localhost phrase]$ eb start
- Starting application "phrase".
- Would you like to deploy the latest Git commit to your environment? [y/n]: y
- Waiting for environment "phrase-env" to launch.
- 2015-01-05 12:35:24 INFO createEnvironment is starting.
- 2015-01-05 12:35:26 INFO Using elasticbeanstalk-ap-northeast-1-964880067324 as Amazon S3 storage bucket for environment data.
- 2015-01-05 12:35:44 INFO Created load balancer named: awseb-e-t-AWSEBLoa-1HJDEDPG7Q729
- 2015-01-05 12:36:04 INFO Created security group named: awseb-e-t4mprz5myi-stack-AWSEBSecurityGroup-1XW8NESWTZ1JD
- 2015-01-05 12:36:08 INFO Created Auto Scaling launch configuration named: awseb-e-t4mprz5myi-stack-AWSEBAutoScalingLaunchConfiguration-KZQJAZH1APPM
- 2015-01-05 12:36:10 INFO Created RDS database security group named: awseb-e-t4mprz5myi-stack-awsebrdsdbsecuritygroup-1u0608gzw5cmf
- 2015-01-05 12:36:15 INFO Creating RDS database named: aammgm7f5g4f9w. This may take a few minutes.
- 2015-01-05 12:42:12 INFO Created RDS database named: aammgm7f5g4f9w
- 2015-01-05 12:43:10 INFO Waiting for EC2 instances to launch. This may take a few minutes.
- 2015-01-05 12:43:10 INFO Created Auto Scaling group named: awseb-e-t4mprz5myi-stack-AWSEBAutoScalingGroup-8DBFI9BK8XCZ
- 2015-01-05 12:43:14 INFO Created Auto Scaling group policy named: arn:aws:autoscaling:ap-northeast-1:964880067324:scalingPolicy:89b46226-0606-4ad5-ba8f-90a8ebb002cf:autoScalingGroupName/awseb-e-t4mprz5myi-stack-AWSEBAutoScalingGroup-8DBFI9BK8XCZ:policyName/awseb-e-t4mprz5myi-stack-AWSEBAutoScalingScaleUpPolicy-48SJ365D1WCH
- 2015-01-05 12:43:14 INFO Created Auto Scaling group policy named: arn:aws:autoscaling:ap-northeast-1:964880067324:scalingPolicy:e8e10fc4-0ae7-4b97-b82a-36a81d6762b7:autoScalingGroupName/awseb-e-t4mprz5myi-stack-AWSEBAutoScalingGroup-8DBFI9BK8XCZ:policyName/awseb-e-t4mprz5myi-stack-AWSEBAutoScalingScaleDownPolicy-11DKPNV04CMC3
- 2015-01-05 12:43:17 INFO Created CloudWatch alarm named: awseb-e-t4mprz5myi-stack-AWSEBCloudwatchAlarmLow-1QEX0DMHPZ6V1
- 2015-01-05 12:43:18 INFO Created CloudWatch alarm named: awseb-e-t4mprz5myi-stack-AWSEBCloudwatchAlarmHigh-Z7ZBL62RLUAN
- 2015-01-05 12:45:21 INFO Application available at phrase-env-33msmgzjpp.elasticbeanstalk.com.
- 2015-01-05 12:45:21 INFO Successfully launched environment: phrase-env
- Application is available at "phrase-env-33msmgzjpp.elasticbeanstalk.com".
開始中
開始完了
4.3 ステータスの確認
Health が Green になっていることを確認し、URLへアクセス
- (virtualenv)[piroto@localhost phrase]$ eb status --verbose
- Retrieving status of environment "phrase-env".
- URL : phrase-env-33msmgzjpp.elasticbeanstalk.com
- Status : Ready
- Health : Green
- Environment Name: phrase-env
- Environment ID : e-t4mprz5myi
- Environment Tier: WebServer::Standard::1.0
- Solution Stack : 64bit Amazon Linux 2014.09 v1.0.9 running Python 2.7
- Version Label : git-5eaefd29ad55d349898717035dfb9dfdbd911363-1420428920184
- Date Created : 2015-01-05 12:35:26
- Date Updated : 2015-01-05 12:59:22
- Description :
- RDS Database: AWSEBRDSDatabase | aammgm7f5g4f9w.cg2osea7qez8.ap-northeast-1.rds.amazonaws.com:3306
- Database Engine: mysql 5.5.40
- Allocated Storage: 5
- Instance Class: db.t1.micro
- Multi AZ: False
- Master Username: ebroot
- Creation Time: 2015-01-05 12:39:30
- DB Instance Status: available
4.4 Djangoが起動していることを確認
Elastic Beanstalk の操作には、その他に以下の様なコマンドがある
http://www.slideshare.net/AmazonWebServicesJapan/aws-black-belt-tech-aws-elastic-beanstalk
コマンド | 内容 |
eb init | 環境の初期設定 |
eb start | 環境の作成を開始 |
eb status | 環境のステータスを確認 |
eb update | 環境の設定更新 |
eb stop | 環境の停止 |
eb delete | 環境の削除 |
eb logs | 環境のログを表示 |
eb events | 環境に関連するイベントを表示 |
eb branch | git branchに環境をひも付け |
eb push | 新しいバージョンをデプロイ |
5.継続デプロイ
5.1 ローカル環境での実行
プロジェクトの右クリック Run As > PyDev Django を実行
コンソールにURLが表示されるので、ブラウザでLocal環境で起動していることを確認。
5.2 コミットとプッシュ
ローカルで変更し、プロジェクトの右クリックから、 Team > Commit を実行した後、git aws.push を実行することで、コミットされたリポジトリの内容をEC2のサーバーに反映出来る。
- (virtualenv)[piroto@localhost phrase]$ git aws.push
- Updating the AWS Elastic Beanstalk environment phrase-env...
- Environment update initiated successfully.
… と、一応動くようにはなったが、結構大変かつ、まだ、Adminユーザーを作成するスクリプト部分のエラー(チュートリアルではオプションとなっている) が解決出来ない。
もっと、簡単にできると思っていたのだが…
結局冬休みの自由時間をこの設定に費やすことになってしまった。
はまりながら、いくつかのトラブルシュートや知見があるので、別途まとめることとする。
Windows で行う場合、pip install mysql-python==1.2.5 にて、
Microsoft Visual C++ Compiler for Python 2.7 のインストールが必要
https://www.microsoft.com/en-us/download/confirmation.aspx?id=44266
VC++コンパイラをインストールするだけでは足りない場合があります。
Windows、Python2.7、VirtualEnv で MySql-Python 1.2.5 をインストールする時のエラーの話
http://typea.info/blg/glob/2015/03/windowspython27virtualenv-mysql-python-125.html
.config ファイルの変更内容を反映させるには、eb update が必要