Python2 + Bottleで、別の端末からアクセスできるようにする

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