Bottleアプリを書いていた時に、
- 自分の端末からはアクセス可能
- LAN上の他の端末からはアクセス不可
- ファイアウォールのポートは開いている
という状態になったので、調べた時のメモ。
環境
- Windows10 x64
- Python 2.x
- Bottle 0.12.9
対応
run()
の引数host
がチュートリアルのまま(localhost
)だったため、アクセスできませんでした。
python - How do I access bottle development server from another PC on the LAN? - Stack Overflow
hostの値ごとに調べてみると、
# hostデフォルト値は、127.0.0.1 # OK - localhost / 127.0.0.1 # NG - 192.168.0.10 / hostname # run(port=8080, debug=True, reloader=True) # run(host="localhost", port=8080, debug=True, reloader=True) # OK - 192.168.0.10 / hostname # NG - localhost / 127.0.0.1 # run(host="192.168.0.10", port=8080, debug=True, reloader=True) # run(host="<your hostname>", port=8080, debug=True, reloader=True) # OK - ALL run(host="0.0.0.0", port=8080, debug=True, reloader=True)
でした。
Bottle側で特に制限をかけたくなければ、host="0.0.0.0"
で良さそうです。
参考
ソースコード
GitHubに上げました。lan_access.py
が今回のコードです。
thinkAmi-sandbox/Bottle-sample: Bottle (python web framework) : sample codes