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 –
上記のような表示がされます。
コメント