社内でこれからPython/Flaskを教えていくのに、自分なりに整理していこうかと思います。
最終的にはPythonでマルチプロセスなんか記事にしていこうかな
まずは練習で簡単な記事から
#EC2インスタンスの初期構築
・インスタンスタイプ
t2.micro
AMI はAmazon Linux 2
を選択
後の構成はデフォルト
- 最初はyumでupdate
sudo yum -y update
* python3をインストール
>```
sudo yum -y install python3
Loaded plugins: extras_suggestions, langpacks, priorities, update-motd
Package python3-3.7.10-1.amzn2.0.1.x86_64 already installed and latest version
おこられた。
今時のAmazon Linux 2
にはpython3が最初からインストールされてるっぽい
python3 -V
[ec2-user@ip-172-31-41-61 ~]$ python3 -V
Python 3.7.10
[ec2-user@ip-172-31-41-61 ~]$
3.7か...可もなく不可もない感じ
* flaskをインストール
>```
pip3 install flask
Installing collected packages: MarkupSafe, Jinja2, typing-extensions, zipp, importlib-metadata, click, Werkzeug, itsdangerous, flask
Successfully installed Jinja2-3.0.1 MarkupSafe-2.0.1 Werkzeug-2.0.1 click-8.0.1 flask-2.0.1 importlib-metadata-4.6.3 itsdangerous-2.0.1 typing-extensions-3.10.0.0 zipp-3.5.0
成功、成功...ん?
Flaskがいつの間にか2.0.1にバージョンアップされてるw
1年ぐらいに更新がないと思っていたら油断した
本家のサイトFlaskを確認したら2.0.2がリリースされているし1系もバージョンアップされてるね。更新内容は後で確認しますか
flask用のファイルを作成して起動
・今回はopt配下にec2-userで作成していく
cd /opt
sudo mkdir flask
sudo chown -R ec2-user:ec2-user flask
cd flask
mkdir hoge
cd hoge
・hogeディレクトリの配下にapp.pyを作成
ver2になってるので本家のサイト[Flask](https://flask.palletsprojects.com/en/2.0.x/changes/)サイトを参考に進めてみると
```python:app.py
from flask import Flask
app = Flask(__name__)
@app.route('/')
def index():
return "世界のみなさん、こんにちは"
・ファイルを作成したの、適当に動かしてみる
flask run
* 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://127.0.0.1:5000/ (Press CTRL+C to quit)
・あれ動いたw
curlを投げてみますか
>```
curl -i http://127.0.0.1:5000/
HTTP/1.0 200 OK
Content-Type: text/html; charset=utf-8
Content-Length: 39
Server: Werkzeug/2.0.1 Python/3.7.10
Date: Mon, 09 Aug 2021 08:44:40 GMT
世界のみなさん、こんにちは
・確かに動いてるぞ
どこでapp.pyを判断したんだよ。と思って本家のサイトを見てみると
app.py
か wsgi.py
が存在していると自動で判断して起動してくれるみたい
Flaskが2にバージョンアップされて機能が追加されているようなので後で検証してみます
今回のサンプルコードはGitHubにアップしております
github/flask2_demo