12
13

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

EB CLI + git + Djangoで簡単webサーバ構築 & デプロイ

Last updated at Posted at 2016-05-25

サーバ環境構築やデプロイツールをつくるのってすごくめんどくさいと思いませんか?
今回、そんな悩みを解決してくれる、AWSのサービス「Elastic Beans Talk」(以下EB)を利用して、簡単にサーバ構築とデプロイしてみたいと思います。
また、AWSマネージコンソールを利用せず、コマンドラインでEBを操作出来るEB CLIを利用したいと思います。

aeb-architecture2.png

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内に作成した環境があるのでそちらを確認してみて下さい。

スクリーンショット 2016-05-25 11.10.20.png

確認

環境が構築されたら、該当ページを確認してみたいと思います。

# eb open my-site-dev

このコマンドを叩くと、ブラウザが開き下記のようなページが表示されます。

スクリーンショット 2016-05-25 11.13.26.png

上記URLに/views/を追加すると下記のページが表示されます。
スクリーンショット 2016-05-25 11.18.39.png

これで、環境構築完了です。

後記

上記は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分ぐらいかかります。

12
13
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
12
13

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?