Raspberry Pi で Flask を動かしてみる 【Python】

Raspberry Pi

Raspberry Pi に標準で入っている Flask を使って、Web サーバーを動かしてみます。
余計なインストールなどはせず、標準で入っているライブラリ(Python と Flask)だけを使って動かしてみます。

以下の環境で動作確認をしています。
環境の一例:
・ Raspberry Pi 3 model B+ (bullseye 、サーバーとして使用)
・ Windows パソコン(クライアントとして使用)
・ Wi-Fi ネットワーク(ローカルネットワーク)

背景

Raspberry Pi (bullseye) の起動用 SDカードを作成すると、Python 3 に加え、標準で Flask も入っています。
新たなプログラムをインストールすることなく Flask が動くのであれば、Flask の便利な機能がそのまま活用できることになります。

Web サーバーといえば、LAMP (Linux, Apache, MySQL, PHP) が知られています。しかし、ローカルネットワーク内などでちょっとした Web アプリを試したい/動かしたいとなったとき、設定が煩雑です。また、Raspberry Pi の処理能力や SDカードの寿命の点でも疑問が残ります。

以前、Python の標準機能のみを使って Web サーバーを動かしています。そこで今回は、最小限の手間で Flask 版の Web サーバーを動かしてみることにします。

Web サーバーさえ動けば、トップページの HTML を作りこんでいくだけで、Web サイト、Web アプリを自由に作成できることになります。
デフォルトの機能を使っているだけですので、作った Web アプリについても移植性が担保でき、環境設定の煩雑さも最小化できることになります。

設定方法

① 以下を参考に、Raspberry Pi にフォルダ(ドキュメントルートとなるフォルダ)を作成してください。
例: /home/pi/flask1
② ①のフォルダに “app.py” という名前でテキストファイルを作成してください。
このファイル app.py に、下記のサンプルスクリプトをコピー&ペーストで貼りつけて保存してください。
なお、サンプルスクリプトは、外部リンクに示したクイックスタートとほぼ同じです。

使い方

Web サーバーを動かす

③ 以下を参考に、Raspberry Pi の IP アドレス(ローカルIPアドレス)を確認してください。
例: 192.168.1.33

確認方法
・ Raspberry Pi 画面右上の Wi-Fi マーク(ネットワーク)上にマウスを移動させる。
→ wlan0: Configured 192.168.1.33/24 等と表示される。
・ または、ターミナルで “ifconfig” + [enter] と入力する。
→ wlan0: … inet 192.168.1.33 等と表示される。
・ Windows でリモートデスクトップで Raspberry Pi にアクセスしている場合は、画面左上に表示される。
④ Raspberry Pi のターミナルで、①のフォルダ(ドキュメントルート)に移動してください。
例:

cd /home/pi/flask1

⑤ 以下のコマンドを実行してください。

flask run --host=0.0.0.0

→ ”Running on http://0.0.0.0:5000/ (Press CTRL+C to quit)” という文字列が表示されたら、Web サーバーの動作成功です。

★ Web サーバーを終了する場合は、ターミナル上で [ctrl] + “c” キーを入力してください。
★ ”- -host = …” を追加しているのは、ローカルネットワーク内で、他のパソコンからアクセスできるようにするためです。

Web サーバーにアクセスする

⑥ ⑤の Web サーバーが動いている状態で、Raspberry Pi と同じネットワーク内の別のパソコン(Windows など)でブラウザを起動し、以下のアドレスにアクセスしてみてください。
例: http://192.168.1.33:5000
★ ここで、IP アドレス(192.168.1.33) は、③で確認した値と一致させてください。
また、”5000″ の数値は、⑤で表示された値と一致させてください。

→ ”Hello, World!” と表示されたら、Web サーバーへのアクセス成功です!

うまく動いたら

・ うまく動いたら、app.py のスクリプトを書き換えて、アレンジしてみてください。
スクリプトを変更した場合は、⑤の Web サーバーをいったん終了し、⑤以降を、再度実行してください。

・ 例えば、スクリプトで、”Hello, World!” の文字列を書き換えてみてください。
str1 = “” の部分が、サーバーが返す HTML に対応しています。この部分を書き換えることで、サイトを発展させてみてください。
・ Python を使って HTML を生成するスクリプトは、このサイトでポイントをまとめています。グラフや表、データを表示するなどが可能だと思います。もし、興味があるようでしたら、参照してみてください。
・ なお、app.py のファイル名を hello.py 等に変更する場合は、”flask run” を実行する前に、”export FLASK_APP=hello” 等としたコマンドを実行し、その後、”flask run” を実行してください。詳細は、以下の外部リンクを確認してください。

まとめ

Raspberry Pi bullseye に標準で入っている Flask を使って、Web サーバーを動かしてみました。
スクリプト6行程度で Web サーバーが動きます。

いろいろな方法で Web サーバーを動かしてみると、理解が深まります。
また、ページを作りこんでいけば、ローカルネットワークなどで自由にサイトを作成・活用することが可能です。Flask の便利そうな機能を取り込んでいけばよいということになります。

関連リンク
・ Python で HTML ファイルを出力する
・ Raspberry Pi でローカルWebサーバー 【Python 活用】
・ 初期設定のまとめ 【OpenCV & Raspberry Pi】
・ ローカル環境で django をインストールする 【Anaconda & Windows】
・ サーバーのエラーコードのまとめ 【Webサーバー】

外部リンク
・ 「Python FlaskによるWebアプリ開発入門 物体検知アプリ&機械学習APIの作り方」 (参考書)
・ Quickstart Flask Documentation A Minimal Application

サンプルスクリプト  app.py

from flask import Flask 
app = Flask(__name__) 

@app.route("/")
def hello_world1(): 
    str1 = "<p>Hello, World!</p>" 
    return str1 
タイトルとURLをコピーしました