Flask 開発サーバーをネットワーク経由で表示できるように構成する 質問する

Flask 開発サーバーをネットワーク経由で表示できるように構成する 質問する

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

ベストアンサー1

これは可能ですが、Flask開発サーバーを本番環境で使用しないでください。Flask開発サーバーは、特に安全、安定、または効率的であるように設計されていません。展開する正しい解決策については。


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

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

フラスコクイックスタートドキュメント「外部からアクセス可能なサーバー」セクションでこれについて説明します。

サーバーを実行すると、サーバーは自分のコンピューターからのみアクセス可能で、ネットワーク内の他のコンピューターからはアクセスできないことがわかります。これは、デバッグ モードではアプリケーションのユーザーがコンピューター上で任意の Python コードを実行できるため、デフォルトになっています。

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

$ flask run --host=0.0.0.0

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

おすすめ記事