1. ホーム
  2. python

[解決済み] Flaskの開発サーバーをネットワーク上で見えるように設定する

2022-03-16 14:03:07

質問

Flask 固有の問題なのかどうかわかりませんが、アプリを開発モードで実行すると ( http://localhost:5000 で)、ネットワーク上の他のマシンからアクセスできない。 http://[dev-host-ip]:5000 ). 例えばRailsをdevモードで使用すると、問題なく動作します。Flaskのdevサーバーの設定に関するドキュメントが見つかりませんでした。これを有効にするために何を設定するべきか、何か見当がつきますか?

解決方法は?

これは可能ですが、Flask の開発サーバーを本番で使用するべきではありません。Flask の開発サーバーは、特に安全、安定、効率的であるようには設計されていません。のドキュメントを参照してください。 デプロイメント を参照してください。


--host オプションに flask run または host パラメータを app.run() は、開発サーバーがどのアドレスでリッスンするかを制御します。デフォルトでは localhost に変更します。 flask run --host=0.0.0.0 (または app.run(host="0.0.0.0") ) を使って、あなたのマシンのすべてのIPアドレスで実行することができます。

0.0.0.0 は特殊な値で、ブラウザで直接使用することはできませんので、ネットワーク上のマシンの実際のIPアドレスに移動する必要があります。また、ポートへの外部からのアクセスを許可するようにファイアウォールを調整する必要がある場合もあります。

フラスコ クイックスタートドキュメント では、「外部から見えるサーバ」の項で説明しています。

<ブロッククオート

サーバーを実行すると、サーバーは以下のように表示されます。 ネットワーク上の他のコンピューターからではなく、自分のコンピューターからアクセスすることができます。 これは、デバッグモードでは、そのユーザーが自分のコンピュータからアクセスできないためです。 アプリケーションはあなたのコンピュータ上で任意の Python コードを実行することができます。

デバッガーを無効にしている場合、またはネットワーク上のユーザーを信頼している場合。 を追加するだけで、サーバーを一般に公開することができます。 --host=0.0.0.0 をコマンドラインに追加してください。

$ flask run --host=0.0.0.0

これは、すべてのパブリックIPをリッスンするようにオペレーティングシステムに指示します。