595

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

4

15 に答える 15

897

これは可能ですが、本番環境では Flask 開発サーバーを使用しないでください。Flask 開発サーバーは、特に安全性、安定性、または効率性を高めるようには設計されていません。正しい解決策については、デプロイに関するドキュメントを参照してください。


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

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

Flaskクイックスタート ドキュメントでは、「外部から見えるサーバー」セクションでこれについて説明しています。

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

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

$ flask run --host=0.0.0.0

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

于 2011-08-11T13:53:42.787 に答える
161

flask実行可能ファイルを使用してサーバーを起動する場合は、 を使用しflask run --host=0.0.0.0てデフォルトを 127.0.0.1 から変更し、非ローカル接続に対して開きます。

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

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

$ flask run --host=0.0.0.0

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

参考:https ://flask.palletsprojects.com/quickstart/

于 2016-10-29T01:28:01.613 に答える