LoginSignup
3
4

More than 5 years have passed since last update.

【AWS】ebでPython環境構築してみた Flaskアプリケーションデプロイ準備編 【Elastic Beanstalk】

Last updated at Posted at 2016-04-28

http://docs.aws.amazon.com/ja_jp/elasticbeanstalk/latest/dg/create-deploy-python-flask.html
に沿って作業していきます

前提条件

【AWS】ebでPython環境構築してみた 開発環境編は少なくとも出来る環境にある

要は以下4つが使えればOK

  • Python 2.7
  • pip
  • virtualenv
  • awsebcli

仮想環境を設定する

手元のクライアントで作業します(私はMac)

変数
VIRTUAL_ENV_NAME='eb-test-Flask'
コマンド
VIRTUAL_ENV_NAME='eb-test-Flask'
cd ~
virtualenv ${VIRTUAL_ENV_NAME}
結果
New python executable in /Users/****/eb-test-Flask/bin/python
Installing setuptools, pip, wheel...done.

仮想環境の実行

コマンド
source ~/${VIRTUAL_ENV_NAME}/bin/activate

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

確認
(eb-test-Flask) 

Flaskの導入

コマンド
pip install flask==0.10.1
確認
pip freeze
結果
Flask==0.10.1
itsdangerous==0.24
Jinja2==2.8
MarkupSafe==0.23
Werkzeug==0.11.9

上記結果が出力されれば成功です

Flask アプリケーションを作成する

次に、Elastic Beanstalk を使用してデプロイするアプリケーションを作成します。ここでは、"Hello World" という RESTful ウェブサービスを作成します。

確認
コマンドプロンプトの先頭に()で環境名がついていること。
この手順だと(eb-test-Flask)

プロジェクト用ディレクトリの作成

確認
pwd
結果
/Users/****/eb-test-Flask
変数
PJ_DIR_NAME='eb-flask'
コマンド
mkdir ${PJ_DIR_NAME}
確認
ls | grep ${PJ_DIR_NAME}
結果
eb-flask
コマンド
cd ${PJ_DIR_NAME}
確認
pwd
結果
/Users/****/eb-test-Flask/eb-flask

サンプルアプリケーションを作成します
コードはドキュメントから抜粋してそのまま使用

application.py
from flask import Flask

# print a nice greeting.
def say_hello(username = "World"):
    return '<p>Hello %s!</p>\n' % username

# some bits of text for the page.
header_text = '''
    <html>\n<head> <title>EB Flask Test</title> </head>\n<body>'''
instructions = '''
    <p><em>Hint</em>: This is a RESTful web service! Append a username
    to the URL (for example: <code>/Thelonious</code>) to say hello to
    someone specific.</p>\n'''
home_link = '<p><a href="/">Back</a></p>\n'
footer_text = '</body>\n</html>'

# EB looks for an 'application' callable by default.
application = Flask(__name__)

# add a rule for the index page.
application.add_url_rule('/', 'index', (lambda: header_text +
    say_hello() + instructions + footer_text))

# add a rule when the page is accessed with a name appended to the site
# URL.
application.add_url_rule('/<username>', 'hello', (lambda username:
    header_text + say_hello(username) + home_link + footer_text))

# run the app.
if __name__ == "__main__":
    # Setting debug to True enables debug output. This line should be
    # removed before deploying a production app.
    application.debug = True
    application.run()

application.pyの実行

仮想環境下で作業ディレクトリにいる事を確認して下さい。
(ここまでの処理から他のことをしていなければ大丈夫です)

確認
pwd
結果
/Users/****/eb-test-Flask/eb-flask
コマンド
python application.py
結果
 * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
 * Restarting with stat
 * Debugger is active!
 * Debugger pin code: 344-661-719

ブラウザーを起動して
http://127.0.0.1:5000/ へアクセスします。

確認
curl http://127.0.0.1:5000/
結果
    <html>
<head> <title>EB Flask Test</title> </head>
<body><p>Hello World!</p>

    <p><em>Hint</em>: This is a RESTful web service! Append a username
    to the URL (for example: <code>/Thelonious</code>) to say hello to
    someone specific.</p>
</body>

確認できたら止めて大丈夫です

コマンド
Control + C

eb用にFlaskアプリケーションを設定する

アプリケーションが手元の環境で実行できたのでebに実装します

注意
引き続き仮想環境下での作業になります

コマンド
cd ~/${VIRTUAL_ENV_NAME}/${PJ_DIR_NAME}
pwd
結果
/Users/****/eb-test-Flask/eb-flask
コマンド
pip freeze > requirements.txt
確認
cat requirements.txt
結果
Flask==0.10.1
itsdangerous==0.24
Jinja2==2.8
MarkupSafe==0.23
Werkzeug==0.11.9

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

だからこの作業が必要。そしてファイル名も requirements.txt じゃないといけない。

仮想環境の終了

コマンド
deactivate

プロンプト先頭の()がなくなれば大丈夫です

ディレクトリ構成確認

確認
tree ~/${VIRTUAL_ENV_NAME}/${PJ_DIR_NAME}
結果
/Users/****/eb-test-Flask/eb-flask/
├── application.py
└── requirements.txt

つづき

ebでPython環境構築してみた Flaskアプリケーションデプロイ編

3
4
0

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
3
4