これがFlask固有のものかどうかはわかりませんが、開発モードでアプリを実行すると(http://localhost:5000
)、ネットワーク上の他のマシンからアクセスできません(http://[dev-host-ip]:5000
)。たとえば、開発モードのRailsでは問題なく動作します。Flask dev サーバーの構成に関するドキュメントが見つかりませんでした。これを有効にするには、何を構成する必要がありますか?
15 に答える
これは可能ですが、本番環境では Flask 開発サーバーを使用しないでください。Flask 開発サーバーは、特に安全性、安定性、または効率性を高めるようには設計されていません。正しい解決策については、デプロイに関するドキュメントを参照してください。
への--host
オプションflask run
または へのhost
パラメータはapp.run()
、開発サーバーがリッスンするアドレスを制御します。デフォルトでは で実行されます。マシンのすべての IP アドレスで実行するには、 (または)localhost
に変更します。flask run --host=0.0.0.0
app.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 をリッスンするようになります。
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 をリッスンするようになります。