これは 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.0
app.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 をリッスンするように指示されます。