サーバ環境構築やデプロイツールをつくるのってすごくめんどくさいと思いませんか?
今回、そんな悩みを解決してくれる、AWSのサービス「Elastic Beans Talk」(以下EB)を利用して、簡単にサーバ構築とデプロイしてみたいと思います。
また、AWSマネージコンソールを利用せず、コマンドラインでEBを操作出来るEB CLIを利用したいと思います。
Django環境は最小構成Djangoを利用したいと思います。
http://qiita.com/yu-sa/items/26e413987efa0debc9d7
AWS環境をお持ちでない方は、qwikLabsを利用して環境構築を無料で試してみるのも良いと思います。
https://qwiklabs.com/focuses/2356
前提環境
mac os x 10.9.5
EB CLI 3.7.6
AWS CLI 1.10.26
Django & python
python 2.7.10
Django 1.9
Django環境
Django環境をcloneしてきます。
# git clone https://github.com/yu-sa/my_site.git
フォルダ構成は
my_site(ワークフォルダ)
├─my_site
│ ├─ __init__.py
│ ├─settings.py
│ ├─templates
│ │ └─index.html
│ ├─urls.py
│ ├─views
│ │ ├─__init__.py
│ │ ├─index.py
│ │ └─urls.py
│ └─wsgi.py
├─requirements.txt
└─manage.py
上記、ワークフォルダに移動して以降の作業を行って下さい。
AWS CLIの設定
AWS CLIの設定を行います。
EB CLIでコマンドを実行するためにどのアカウントでアクセスしてサービスを利用するのかの設定を行います。
# aws configure
AWS Access Key ID [********************]: xxxxxxxxxxxx # アクセスキー ID
AWS Secret Access Key [********************]: xxxxxxxxxxxxxxxxxxxxxxxxx # シークレットアクセスキー
Default region name [ap-northeast-1]: ap-northeast-1 # 東京リージョン
Default output format [json]: json
EB CLIの設定
EB CLIの設定も行います。
# eb init -i
Select a default region
1) us-east-1 : US East (N. Virginia)
2) us-west-1 : US West (N. California)
3) us-west-2 : US West (Oregon)
4) eu-west-1 : EU (Ireland)
5) eu-central-1 : EU (Frankfurt)
6) ap-southeast-1 : Asia Pacific (Singapore)
7) ap-southeast-2 : Asia Pacific (Sydney)
8) ap-northeast-1 : Asia Pacific (Tokyo)
9) ap-northeast-2 : Asia Pacific (Seoul)
10) sa-east-1 : South America (Sao Paulo)
11) cn-north-1 : China (Beijing)
(default is 3): 8
Select an application to use
1) my_site
2) [ Create new Application ]
(default is 1): 1
It appears you are using Python. Is this correct?
(y/n): y
Select a platform version.
1) Python 3.4
2) Python
3) Python 2.7
4) Python 3.4 (Preconfigured - Docker)
(default is 1): 3
Do you want to set up SSH for your instances?
(y/n): y
Select a keypair.
1) qwikLABS-L98-469340
2) [ Create new KeyPair ]
(default is 2): 2
Type a keypair name.
(Default is aws-eb): aws-eb
Generating public/private rsa key pair.
/Users/xxxxxxxxx/.ssh/aws-eb already exists.
Overwrite (y/n)? y
Enter passphrase (empty for no passphrase): (何も記入しないでEnter)
Enter same passphrase again: (何も記入しないでEnter)
.ebextensionsの作成と設定
AWS Elastic Beanstalk 設定ファイルの.ebextensionsを追加する事で、設定をカスタマイズする事が出来ます。
今回使用するDjango環境を使用するためにも追加変更を行います。
設定ファイルは.configの拡張しで作成します。
# mkdir .ebextensions
# vi .ebextensions/django.config
[.ebextensions/django.conf]に下記の内容を記入して下さい。
option_settings:
"aws:elasticbeanstalk:application:environment":
DJANGO_SETTINGS_MODULE: "my_site.settings"
"aws:elasticbeanstalk:container:python":
WSGIPath: "my_site/wsgi.py"
EB作成
設定等は全て完了下のでEBの環境を作成して自動でwebサーバ環境を構築してみましょう。
# eb create my-site-dev --timeout 9000
こちらのコマンドを叩くと、そのまま環境構築が開始します。
環境構築は完了するまで10分以上かかる場合もあるのである程度放置して下さい。
環境が構築されたかを確認したい場合は、AWSマネージコンソールのElastic Beanstalk内に作成した環境があるのでそちらを確認してみて下さい。
確認
環境が構築されたら、該当ページを確認してみたいと思います。
# eb open my-site-dev
このコマンドを叩くと、ブラウザが開き下記のようなページが表示されます。
上記URLに/views/を追加すると下記のページが表示されます。
これで、環境構築完了です。
後記
上記はwebサーバの環境を構築しただけで、DB環境は構築していません。
RDS等を利用してmysql環境を利用するようにするのはまた、今度書いて行きたいと思います。
後、eb環境設定等の環境も構築されているモジュールもgithubにあげておきますので利用したい場合はcloneしてみて下さい。
https://github.com/yu-sa/my_site/tree/elasticbeanstalk
また、ソースを更新した場合はgitでcommitまで行った上で eb deploy my-site-dev
でdeployも出来ます。
大体、5分ぐらいかかります。