Python プログラミング

[Python] FlaskでHello Worldを表示するアプリをLinuxサーバ上で実装する方法 [初心者でもOK]

2018年8月12日

こんにちは!シミダイ(@shimidai2100)です。

PythonのWebフレームワーク「Flask」を使用して、誰で簡単に「Hello World」を表示させる方法を紹介します。

「Flask」はマイクロフレームワークと呼ばれており、シンプルかつ軽量で簡単なWebページを作成するのに適しております。

同じPythonのWebフレームワークの「Django」と比べると学習コストも低く初心者でも扱いやすいフレームワークになります。

この記事で「Flask」の素晴らしさを実感していただければと思います。

なお最低限の「Python」のコーディング方法やHTTPS通信の基礎を理解しておくことが推奨しますが、基本コピペで「Flask」でWebページを実装していきます。


Flaskの動作環境のインストールと設定

今回はCentOS7 系にFlaskをインストールして環境を作成していきます。

Pythonが既にインストールされていることが前提となります。

まだインストールしていない人は以下の記事を参考にインストール

LinuxにPython3系をインストールする手順

こんにちは!シミダイ(@shimidai2100)です。 Linuxに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」が表示されれば正常に動作しています。

Flaskで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, プログラミング

Copyright© shimidai2100 , 2020 All Rights Reserved.