Flaskは、ウェブアプリケーションを構築するための一般的なPythonマイクロフレームワークです。Flaskアプリをローカルマシンだけでなく、ネットワーク上の任意のデバイスからアクセスできるようにする必要がある場合があります。そのためには、app.run()
のhost
パラメータを'0.0.0.0'
に設定する必要があります。この記事では、Flask開発サーバーをネットワークからアクセスできるように設定する方法について説明します。
目次
app.run()
関数
app.run()
関数はFlask開発サーバーを起動します。動作をカスタマイズするためのいくつかのオプション引数を受け付けます。重要な引数には、host
、port
、debug
があります。
from flask import Flask
app = Flask(__name__)
@app.route("/")
def hello_world():
return "Hello, World!
"
if __name__ == "__main__":
app.run() # デフォルトはhost='127.0.0.1', port=5000
これは、ポート5000を使用してlocalhost
(127.0.0.1
)でサーバーを起動します。他のデバイスからアクセスできるようにするには、host
パラメータを調整します。
hostパラメータの設定
host
パラメータは、サーバーがリスンするネットワークインターフェースを指定します。これを'0.0.0.0'
に設定すると、サーバーは使用可能なすべてのインターフェースでリスンするように指示され、同じネットワーク上の任意のデバイスからアプリケーションにアクセスできるようになります。
if __name__ == "__main__":
app.run(host='0.0.0.0')
portパラメータの使用
port
パラメータはポート番号を指定します。デフォルトは5000です。このポートが既に使用されている場合は、別のポートを選択する必要があります。
if __name__ == "__main__":
app.run(host='0.0.0.0', port=8080)
デバッグモード
debug
パラメータは、コードの変更時の自動リロードやインタラクティブデバッガーなどのデバッグ機能を有効にします。開発中は非常に便利ですが、本番環境では大きなセキュリティリスクとなります。本番環境ではdebug=True
を決して使用しないでください。
if __name__ == "__main__":
app.run(host='0.0.0.0', port=8080, debug=True)
すべてをまとめる
すべてのパラメータを組み合わせることで、開発サーバーを完全に制御できます。
if __name__ == "__main__":
app.run(host='0.0.0.0', port=8081, debug=True)
本番環境へのデプロイ
app.run()
メソッドは開発専用です。本番環境では、GunicornやuWSGIなどの本番環境対応WSGIサーバーと、systemdやsupervisordなどのプロセスマネージャーを使用して、より優れたパフォーマンス、セキュリティ、信頼性を実現してください。