PythonのWebフレームワーク「Flask」を使用して、
誰で簡単に「Hello World」を表示させる方法を紹介します。
「Flask」はマイクロフレームワークと呼ばれており、
シンプルかつ軽量で簡単なWebページを作成するのに適しております。
同じPythonのWebフレームワークの「Django」と比べると学習コストも低く、
初心者でも扱いやすいフレームワークになります。
この記事で「Flask」の素晴らしさを実感していただければと思います。
なお最低限の「Python」のコーディング方法やHTTPS通信の基礎を理解しておくことが推奨しますが、
基本コピペで「Flask」でWebページを実装していきます。
Flaskの動作環境のインストールと設定
今回はCentOS7 系にFlaskをインストールして環境を作成していきます。
Pythonが既にインストールされていることが前提となります。
まだインストールしていない人は以下の記事を参考にインストールしてください。
まずはflaskのファイル群を配置しておきディレクトリを作成します。
mkdir -p /work/flask/helloWorld
次にFlask用の仮想環境「virtualenv」を作成します。
作成後にActivateを行いましょう。
mkdir -p /work/flask/helloWorld
cd /work/flask/helloWorld
python -m venv venv
. venv/bin/activate
以下が実行ログになります。
[root@localhost ~]# mkdir -p /work/flask/helloWorld
[root@localhost ~]# cd /work/flask/helloWorld
[root@localhost helloWorld]# python -m venv venv
[root@localhost helloWorld]# . venv/bin/activate
(venv) [root@localhost helloWorld]# ls -l
total 0
drwxr-xr-x. 5 root root 69 Aug 8 14:00 venv
最後に「Flask」をインストールしましょう。
pip install Flask
以下が実行ログです。
(venv) [root@localhost helloWorld]# pip install Flask
Collecting Flask
Using cached https://files.pythonhosted.org/packages/7f/e7/08578774ed4536d3242b14dacb4696386634607af824ea997202cd0edb4b/Flask-1.0.2-py2.py3-none-any.whl
Collecting click>=5.1 (from Flask)
Using cached https://files.pythonhosted.org/packages/34/c1/8806f99713ddb993c5366c362b2f908f18269f8d792aff1abfd700775a77/click-6.7-py2.py3-none-any.whl
Collecting Jinja2>=2.10 (from Flask)
Using cached https://files.pythonhosted.org/packages/7f/ff/ae64bacdfc95f27a016a7bed8e8686763ba4d277a78ca76f32659220a731/Jinja2-2.10-py2.py3-none-any.whl
Collecting Werkzeug>=0.14 (from Flask)
Using cached https://files.pythonhosted.org/packages/20/c4/12e3e56473e52375aa29c4764e70d1b8f3efa6682bef8d0aae04fe335243/Werkzeug-0.14.1-py2.py3-none-any.whl
Collecting itsdangerous>=0.24 (from Flask)
Using cached https://files.pythonhosted.org/packages/dc/b4/a60bcdba945c00f6d608d8975131ab3f25b22f2bcfe1dab221165194b2d4/itsdangerous-0.24.tar.gz
Collecting MarkupSafe>=0.23 (from Jinja2>=2.10->Flask)
Using cached https://files.pythonhosted.org/packages/4d/de/32d741db316d8fdb7680822dd37001ef7a448255de9699ab4bfcbdf4172b/MarkupSafe-1.0.tar.gz
Installing collected packages: click, MarkupSafe, Jinja2, Werkzeug, itsdangerous, Flask
Running setup.py install for MarkupSafe ... done
Running setup.py install for itsdangerous ... done
Successfully installed Flask-1.0.2 Jinja2-2.10 MarkupSafe-1.0 Werkzeug-0.14.1 click-6.7 itsdangerous-0.24
(venv) [root@localhost helloWorld]# ls -l venv/lib/python3.6/site-packages/
total 92
drwxr-xr-x. 3 root root 4096 Aug 8 14:08 click
drwxr-xr-x. 2 root root 4096 Aug 8 14:08 click-6.7.dist-info
-rw-r--r--. 1 root root 126 Aug 8 14:00 easy_install.py
drwxr-xr-x. 4 root root 4096 Aug 8 14:08 flask
drwxr-xr-x. 2 root root 4096 Aug 8 14:08 Flask-1.0.2.dist-info
drwxr-xr-x. 2 root root 4096 Aug 8 14:08 itsdangerous-0.24-py3.6.egg-info
-rw-r--r--. 1 root root 31840 Mar 28 2014 itsdangerous.py
drwxr-xr-x. 3 root root 4096 Aug 8 14:08 jinja2
drwxr-xr-x. 2 root root 4096 Aug 8 14:08 Jinja2-2.10.dist-info
drwxr-xr-x. 3 root root 4096 Aug 8 14:08 markupsafe
drwxr-xr-x. 2 root root 4096 Aug 8 14:08 MarkupSafe-1.0-py3.6.egg-info
drwxr-xr-x. 5 root root 90 Aug 8 14:08 pip
drwxr-xr-x. 2 root root 4096 Aug 8 14:08 pip-18.0.dist-info
drwxr-xr-x. 5 root root 89 Aug 8 14:00 pkg_resources
drwxr-xr-x. 2 root root 74 Aug 8 14:08 __pycache__
drwxr-xr-x. 6 root root 4096 Aug 8 14:00 setuptools
drwxr-xr-x. 2 root root 4096 Aug 8 14:00 setuptools-39.0.1.dist-info
drwxr-xr-x. 5 root root 4096 Aug 8 14:08 werkzeug
drwxr-xr-x. 2 root root 4096 Aug 8 14:08 Werkzeug-0.14.1.dist-info
以上でFlaskを実行するめの環境構築は完了です。
Hello Worldをコーディング
ではWebページを表示する「app.py」ファイルを作成しましょう。
配置先は「/work/flask/helloWorld」になります。
※上で作成したディレクトリになります。
Hello Worldの表示するソース以下になります。
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello_world():
return 'Hello World!'
if __name__ == '__main__':
app.run()
Hello Worldを表示してみる
ではFlaskのプロセスを起動してみます。
export FLASK_APP=app.py
python -m flask run --host=0.0.0.0 --port=8080
環境変数「FLASK_APP」で実行するpythonファイルを指定します。
引数「–host」でListenするIPアドレス、
引数「–port」でポート番号(今回は8080)を指定します。
以下が実行ログになります。
[root@localhost helloWorld]# export FLASK_APP=app.py
[root@localhost helloWorld]# python -m flask run --host=0.0.0.0 --port=8080
* Serving Flask app "app.py"
* Environment: production
WARNING: Do not use the development server in a production environment.
Use a production WSGI server instead.
* Debug mode: off
* Running on http://0.0.0.0:8080/ (Press CTRL+C to quit)
上の状態ならば正常にFlaskが動作しています。
では実際のサーバ「http://IPアドレス:8080/」にアクセスしてみましょう。
以下のように「Hello World」が表示されれば正常に動作しています。
またサーバ側にも以下のようにリクエストを正常に返せている「ステータス:200」が表示されていることも確認しておきましょう。
[root@localhost helloWorld]# python -m flask run --host=0.0.0.0 --port=8080
* Serving Flask app "app.py"
* Environment: production
WARNING: Do not use the development server in a production environment.
Use a production WSGI server instead.
* Debug mode: off
* Running on http://0.0.0.0:8080/ (Press CTRL+C to quit)
XXX.XXX.XXX.XXX - - [08/Aug/2018 15:13:43] "GET / HTTP/1.1" 200 -
退屈なことはPythonにやらせよう ―ノンプログラマーにもできる自動化処理プログラミングposted with ヨメレバ
Al Sweigart オライリージャパン 2017-06-03