AWS初心者がAmazonEC2のLinuxインスタンスにFlask環境の作成を行ってみる

AWS初心者がAmazonEC2のLinuxインスタンスにFlask環境の作成を行ってみます。

■Amazonマシンイメージ(作成したLinuxインスタンス)

Amazon Linux 2 AMI (HVM)

SSD Volume Type

ami-0f310fced6141e627 (64 ビット x86)/ami-08360a37d07f61f88 (64 ビット Arm)

■Flask(フラスク)の環境の準備を行う

AmazonEC2のコンソールから作成したLinuxインスタンスを選択し、「接続」ボタンをクリック。クリック後、接続方法で「スタンドアロン SSH クライアント」を選択し、「パブリック DNS」の情報をコピーし、 SSHクライアント「PuTTY」で接続を行います。作成したLinuxインスタンスに接続する場合は、「PuTTY Key Generator」でプライベートキーファイルの設定(ppk形式のファイルを作成)を行っておくことが必要です。

「PuTTY」で接続を行い、ログイン名である「ec2-user」でログインします。

ログイン後、作成したLinuxインスタンスのFlask(フラスク)環境の準備を行うため、Amazon Linux環境の最新化を行います。

sudo yum -y update

上記のコマンドを入力し、ENTERキーを押します。ENTERキーを押すと、パッケージの確認、インストールとなります。インストール後は、

sudo yum -y install gcc openssl-devel bzip2-devel libffi-devel

参考にしたURL:https://qiita.com/hitomatagi/items/e63dd8c4b879de156628

上記のコマンドを入力し、ENTERキーを押します。ENTERキーを押すと、パッケージの確認、インストールとなります。インストール後、

sudo yum install python3

上記のコマンドを入力し、ENTERキーを押してPythonをパッケージを確認。途中「Is this ok[y/d/N]:」というメッセージが表示されますが、「y」を入力しENTERキーを押すとインストールが開始されます。「Complete!」と表示されれば、インストール完了となります。

Python仮想環境の作成、Flask(フラスク)のインストール

mkdir [projectname]
python3 -m venv [projectname]

Pythonの環境を作ることができるvenvを利用して、Pythonの仮想環境を作ります。

今回はprojectnameを「test01」としてます。

source [projectname]/bin/activate

作ったPythonの仮想環境を有効化するために上記のコマンドを入力しENTERキーを押します。

ENTERキーを押すと、Pythonの仮想環境が有効化されます。

pip install --upgrade pip

有効化された後は、上記のコマンドでpipの最新化を行います。

pip freeze
pip install flask
pip freeze

pipの最新化を行ったあとは、Flask(フラスク)のインストールを行うため、上記のコマンドを入力し、ENTERキーを押します。

ENTERキーを押すと、インストールが開始され、完了となります。

■Flask(フラスク)を使って、「Hello World!」と表示させてみる

Pythonの仮想環境に、Flask(フラスク)のインストールが完了となりましたので、コードを書いてみます。

cd [projectname]
vi app.py

上記のコマンドを入力し、エディターのVimで「app.py」というファイルを作成し編集していきます。Vimの操作方法・コマンドについてはこちらを参考

#!/usr/bin/env python
# -*- encoding: utf-8 -*-
from flask import Flask
app = Flask(__name__)

@app.route('/')
def hello():
    return 'Hello World!'

if __name__ == '__main__':
    app.run(host='0.0.0.0')

参考にしたURL:https://newtechnologylifestyle.net/amazon-awsec2-flask/

記述するコードは、上記の「Hello World!」と表示させるプログラムになります。insertモードで記述を行い、ESCAPEキーでモードをきりかえし、保存してVimを閉じます。

■Flask(フラスク)の実行を行ってみる

Pythonの仮想環境上に作成した「app.py」というファイルを実行してみます。

python3 app.py

上記のコマンドを入力し、ENTERキーを押します。

Serving Flask app "app" (lazy loading)
* Environment: production
WARNING: This is a development server. Do not use it in a production
deployment.
Use a production WSGI server instead.
* Debug mode: off
* Running on http://0.0.0.0:5000/ (Press CTRL+C to quit)

ENTERキーを押すと上記のメッセージが表示されます。赤文字が表示されているのでエラー表示かと思われますが、エラーではありません。

http://0.0.0.0:5000/

上記のURLにアクセスすれば、「app.py」というファイルがRunningになるということなのですが、このままアクセスしても「このサイトにアクセスできませんhttp://0.0.0.0:5000/  のウェブページは一時的に停止しているか、新しいウェブアドレスに移動した可能性があります。」と表示されてしまいますので、Amazon EC2のコンソールから設定を行います。

Amazon EC2のコンソールにアクセスし、「インスタンス」から作成したLinuxインスタンスを選択した状態で、セキュリティグループの「launch-wizard-1」といった表示をクリックします。

クリックすると、セキュリティグループのページになりますので、こちらで作成したLinuxインスタンスのセキュリティグループIDをクリックします。

クリックすると、セキュリティグループIDの詳細ページになりますので、ページ下のインバウンドルールから「インバウンドルールを編集」ボタンをクリックします。

クリックすると、インバウンドルールを編集ページになりますので、「ルールを追加」ボタンをクリックします。

クリックすると、タイプが「カスタムTCP」というルールが追加されますので、「ポート範囲」をhttp://0.0.0.0:5000/なので、「5000」に設定し、ソースは「カスタム」で虫眼鏡の右側をクリックし、プルダウンメニューから「0.0.0.0/0」を選択します。

選択後、「ルールを保存」ボタンをクリックし、ルールを保存します。

ルールを保存した後は、作成したLinuxインスタンスのIPv4 パブリック IPの情報をコピーし、ウェブブラウザのアドレスバーに貼り付けします。この時、「Serving Flask app “app” (lazy loading)」とPythonが実行されている状態であることを確認します。

ウェブブラウザのアドレスバーに貼り付けた後は、IPv4 パブリック IPの後ろに「5000」と入力し、ENTERキーを押すと、「Hello World!」と表示されました。

なお、表示されると、Pythonの仮想環境上では、

000.000.000.000 – – [24/May/2020 00:12:08] “GET / HTTP/1.1” 200 –

000.000.000.000 – – [24/May/2020 00:12:09] “GET /favicon.ico HTTP/1.1” 404 –

上記のような表示がされます。

コメント

タイトルとURLをコピーしました