Upgrade to Pro — share decks privately, control downloads, hide ads and more …

nseg100 pythonでwebサーバ

nseg100 pythonでwebサーバ

D05b3b2abff3f73f249a01d60257bdde?s=128

hATrayflood

May 26, 2018
Tweet

Transcript

  1. 2018/5/26 NSEG Vol.100 pythonで webサーバ by ABE Hiroki aka hATrayflood

  2. 2018/5/26 NSEG Vol.100 お前 誰︖ by ABE Hiroki aka hATrayflood

  3. 2018/5/26 NSEG Vol.100 ⾃⼰紹介 ・名前︓アベヒロキ (@hATrayflood) ・職業︓⾃宅サーバ管理者 ・URL︓rayflood.org/diary-temp/ ・地元︓東部町 by

    ABE Hiroki aka hATrayflood
  4. 2018/5/26 NSEG Vol.100 第100回 by ABE Hiroki aka hATrayflood

  5. 2018/5/26 NSEG Vol.100 という記念すべき 回にも関わらず by ABE Hiroki aka hATrayflood

  6. 2018/5/26 NSEG Vol.100 空気読まずに 関係ないことを by ABE Hiroki aka hATrayflood

  7. 2018/5/26 NSEG Vol.100 やります by ABE Hiroki aka hATrayflood

  8. 2018/5/26 NSEG Vol.100 pythonで webサーバ by ABE Hiroki aka hATrayflood

  9. 2018/5/26 NSEG Vol.100 開発中に こんなこと ないすかね︖ by ABE Hiroki aka

    hATrayflood
  10. 2018/5/26 NSEG Vol.100 その1 by ABE Hiroki aka hATrayflood

  11. 2018/5/26 NSEG Vol.100 index.html jquery.js script.js data.json by ABE Hiroki

    aka hATrayflood
  12. 2018/5/26 NSEG Vol.100 $.getJSON("data.json", function(data){ data1 = data; }); by

    ABE Hiroki aka hATrayflood
  13. 2018/5/26 NSEG Vol.100 ローカルファイルとして 開くとjsonが読めない (ことがある) by ABE Hiroki aka

    hATrayflood
  14. 2018/5/26 NSEG Vol.100 その2 by ABE Hiroki aka hATrayflood

  15. 2018/5/26 NSEG Vol.100 ユーザ認証API のコールバック by ABE Hiroki aka hATrayflood

  16. 2018/5/26 NSEG Vol.100 twitter, facebook google, (githubも︖) by ABE Hiroki

    aka hATrayflood
  17. 2018/5/26 NSEG Vol.100 テスト⽬的でも ローカルファイルには コールバックできない by ABE Hiroki aka

    hATrayflood
  18. 2018/5/26 NSEG Vol.100 http://localhost:8000/ などは可能 by ABE Hiroki aka hATrayflood

  19. 2018/5/26 NSEG Vol.100 となるとここで 欲しくなるのは by ABE Hiroki aka hATrayflood

  20. 2018/5/26 NSEG Vol.100 webサーバ by ABE Hiroki aka hATrayflood

  21. 2018/5/26 NSEG Vol.100 けど既存の webサーバ ⽴てるの by ABE Hiroki aka

    hATrayflood
  22. 2018/5/26 NSEG Vol.100 メドい by ABE Hiroki aka hATrayflood

  23. 2018/5/26 NSEG Vol.100 IISとか Apacheとか nginxとか by ABE Hiroki aka

    hATrayflood
  24. 2018/5/26 NSEG Vol.100 コマンド⼀発で 起動して使いたい by ABE Hiroki aka hATrayflood

  25. 2018/5/26 NSEG Vol.100 そんなん ある︖ by ABE Hiroki aka hATrayflood

  26. 2018/5/26 NSEG Vol.100 ある by ABE Hiroki aka hATrayflood

  27. 2018/5/26 NSEG Vol.100 python2 -m SimpleHTTPServer by ABE Hiroki aka

    hATrayflood
  28. 2018/5/26 NSEG Vol.100 python3 -m http.server by ABE Hiroki aka

    hATrayflood
  29. 2018/5/26 NSEG Vol.100 カレントディレクトリを そのままhttpで公開 by ABE Hiroki aka hATrayflood

  30. 2018/5/26 NSEG Vol.100 / もindex.html を読んでくれる by ABE Hiroki aka

    hATrayflood
  31. 2018/5/26 NSEG Vol.100 wsgi by ABE Hiroki aka hATrayflood

  32. 2018/5/26 NSEG Vol.100 単にhtml を読むだけ じゃなくて by ABE Hiroki aka

    hATrayflood
  33. 2018/5/26 NSEG Vol.100 pythonで プログラム 動かしたい by ABE Hiroki aka

    hATrayflood
  34. 2018/5/26 NSEG Vol.100 そうなると cgi的な 仕組み︖ by ABE Hiroki aka

    hATrayflood
  35. 2018/5/26 NSEG Vol.100 IISとか Apacheとか nginxとか by ABE Hiroki aka

    hATrayflood
  36. 2018/5/26 NSEG Vol.100 設定 メドい by ABE Hiroki aka hATrayflood

  37. 2018/5/26 NSEG Vol.100 設定なしで ソース⼀本で by ABE Hiroki aka hATrayflood

  38. 2018/5/26 NSEG Vol.100 コマンド⼀発で 起動して使いたい by ABE Hiroki aka hATrayflood

  39. 2018/5/26 NSEG Vol.100 そんなん ある︖ by ABE Hiroki aka hATrayflood

  40. 2018/5/26 NSEG Vol.100 ある by ABE Hiroki aka hATrayflood

  41. 2018/5/26 NSEG Vol.100 import wsgiref.simple_server def application(environ, start_response): start_response("200 OK",

    [("Content-Type", "text/plain")]) yield b"Hello World\n" httpd = wsgiref.simple_server.make_server("", 8081, application) httpd.serve_forever() by ABE Hiroki aka hATrayflood
  42. 2018/5/26 NSEG Vol.100 wsgirefは pythonの 標準ライブラリ by ABE Hiroki aka

    hATrayflood
  43. 2018/5/26 NSEG Vol.100 つまり by ABE Hiroki aka hATrayflood

  44. 2018/5/26 NSEG Vol.100 pythonが 使えれば 確実に動く by ABE Hiroki aka

    hATrayflood
  45. 2018/5/26 NSEG Vol.100 え︖ リクエストオブジェクト︖ レスポンスオブジェクト︖ by ABE Hiroki aka

    hATrayflood
  46. 2018/5/26 NSEG Vol.100 application()の引数environの中⾝: SERVER_NAME na512e GATEWAY_INTERFACE CGI/1.1 SERVER_PORT 8081

    REMOTE_HOST CONTENT_LENGTH SCRIPT_NAME SERVER_PROTOCOL HTTP/1.1 SERVER_SOFTWARE WSGIServer/0.2 REQUEST_METHOD GET PATH_INFO / QUERY_STRING REMOTE_ADDR 127.0.0.1 CONTENT_TYPE text/plain HTTP_HOST localhost:8081 HTTP_USER_AGENT Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:60.0) Gecko/20100101 Firefox/60.0 HTTP_ACCEPT text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 HTTP_ACCEPT_LANGUAGE ja,en-US;q=0.7,en;q=0.3 HTTP_ACCEPT_ENCODING gzip, deflate HTTP_DNT 1 HTTP_CONNECTION keep-alive HTTP_UPGRADE_INSECURE_REQUESTS 1 HTTP_CACHE_CONTROL max-age=0 wsgi.input <_io.BufferedReader name=780> wsgi.errors <_io.TextIOWrapper name='' mode='w' encoding='utf-8'> wsgi.version (1, 0) wsgi.run_once False wsgi.url_scheme http wsgi.multithread True wsgi.multiprocess False wsgi.file_wrapper by ABE Hiroki aka hATrayflood
  47. 2018/5/26 NSEG Vol.100 基本的には 昔のCGIと 同じやり⽅ by ABE Hiroki aka

    hATrayflood
  48. 2018/5/26 NSEG Vol.100 environつまり 環境変数から 拾って使う by ABE Hiroki aka

    hATrayflood
  49. 2018/5/26 NSEG Vol.100 レスポンスは これに直接書く start_response("200 OK", [("Content-Type", "text/html")]) by

    ABE Hiroki aka hATrayflood
  50. 2018/5/26 NSEG Vol.100 ボディは yield b"<h1>タイトル</h1>" または string = "<p>%s</p>"

    % name yield string.encode() by ABE Hiroki aka hATrayflood
  51. 2018/5/26 NSEG Vol.100 あれ︖ ルーティングは︖ テンプレートは︖ セッションは︖ by ABE Hiroki

    aka hATrayflood
  52. 2018/5/26 NSEG Vol.100 そんなものはない (AAry by ABE Hiroki aka hATrayflood

  53. 2018/5/26 NSEG Vol.100 dbは︖ by ABE Hiroki aka hATrayflood

  54. 2018/5/26 NSEG Vol.100 標準ライブラリで sqlite3が使える import sqlite3 db = sqlite3.connect("test.db")

    by ABE Hiroki aka hATrayflood
  55. 2018/5/26 NSEG Vol.100 え︖ 他のdbは︖ モデリングは︖ マイグレーションは︖ by ABE Hiroki aka

    hATrayflood
  56. 2018/5/26 NSEG Vol.100 そんなものは(ry by ABE Hiroki aka hATrayflood

  57. 2018/5/26 NSEG Vol.100 wsgiそのものは webアプリ共通 インターフェース by ABE Hiroki aka

    hATrayflood
  58. 2018/5/26 NSEG Vol.100 必要最低限のもの しか提供しない by ABE Hiroki aka hATrayflood

  59. 2018/5/26 NSEG Vol.100 素のwsgiでは 限界がある by ABE Hiroki aka hATrayflood

  60. 2018/5/26 NSEG Vol.100 階層化しない 数ページの サイトなら可 by ABE Hiroki aka

    hATrayflood
  61. 2018/5/26 NSEG Vol.100 階層化して db使って ログインする by ABE Hiroki aka

    hATrayflood
  62. 2018/5/26 NSEG Vol.100 フレームワーク の仕事 by ABE Hiroki aka hATrayflood

  63. 2018/5/26 NSEG Vol.100 ⼩さいもの Bottle Flask by ABE Hiroki aka

    hATrayflood
  64. 2018/5/26 NSEG Vol.100 from flask import * app = Flask(__name__)

    @app.route("/") def hello(): session["name"] = "abe" return render_template("index.html", name="abe") by ABE Hiroki aka hATrayflood
  65. 2018/5/26 NSEG Vol.100 ⼤きいもの Django by ABE Hiroki aka hATrayflood

  66. 2018/5/26 NSEG Vol.100 MVCフルサポートの 全部⼊りフレームワーク ログイン機能や データ管理画⾯もある by ABE Hiroki

    aka hATrayflood
  67. 2018/5/26 NSEG Vol.100 使ったことない Zope/Plone Pylons/Pyramid by ABE Hiroki aka

    hATrayflood
  68. 2018/5/26 NSEG Vol.100 規模は違えど どれもwsgi準拠 by ABE Hiroki aka hATrayflood

  69. 2018/5/26 NSEG Vol.100 つまりwsgiが動けば マネージドサービス でも動かせる by ABE Hiroki aka

    hATrayflood
  70. 2018/5/26 NSEG Vol.100 heroku google app engine など by ABE

    Hiroki aka hATrayflood
  71. 2018/5/26 NSEG Vol.100 webサーバと 連携する by ABE Hiroki aka hATrayflood

  72. 2018/5/26 NSEG Vol.100 apacheで動かす mod_wsgi by ABE Hiroki aka hATrayflood

  73. 2018/5/26 NSEG Vol.100 nginxで動かす uwsgi ただしuwsgiを起こす コマンドが要る by ABE Hiroki

    aka hATrayflood
  74. 2018/5/26 NSEG Vol.100 IISで動かす wfastcgi らしい by ABE Hiroki aka

    hATrayflood
  75. 2018/5/26 NSEG Vol.100 mod_wsgiが⼀番 ⼿がかからないので よく使う by ABE Hiroki aka

    hATrayflood
  76. 2018/5/26 NSEG Vol.100 最近の愛読書 by ABE Hiroki aka hATrayflood

  77. 2018/5/26 NSEG Vol.100 ・リンク集 twitter @hATrayflood http://twitter.com/hATrayflood 開発⽤ローカルサーバを⽴ち上げる⽅法 Qiita@higuma https://qiita.com/higuma/items/b23ca9d96dac49999ab9

    Python2系でもPython3系でも簡易Web鯖をワンライナーで⽴てる - tututenの備忘録 http://tututen.hatenablog.jp/entry/2014/01/09/121428 簡潔な HTTP リクエストハンドラ ̶ Python 2.7.15 ドキュメント https://docs.python.org/ja/2.7/library/simplehttpserver.html HTTP サーバ ̶ Python 3.6.5 ドキュメント https://docs.python.org/ja/3.6/library/http.server.html by ABE Hiroki aka hATrayflood
  78. 2018/5/26 NSEG Vol.100 WSGI ユーティリティとリファレンス実装 ̶ Python 2.7.15 ドキュメント https://docs.python.org/ja/2.7/library/wsgiref.html

    WSGI ユーティリティとリファレンス実装 ̶ Python 3.6.5 ドキュメント https://docs.python.org/ja/3.6/library/wsgiref.html Bottle: Python Web Framework http://bottlepy.org/docs/dev/ Flask (A Python Microframework) http://flask.pocoo.org/ The Web framework for perfectionists with deadlines | Django https://www.djangoproject.com/ by ABE Hiroki aka hATrayflood
  79. 2018/5/26 NSEG Vol.100 初⼼者がハマった、初めてのDjangoアプリのHerokuデプロイ Qiita@RyuSA https://qiita.com/RyuSA/items/0cbc7d5b0145585861a8 Deploying Python Applications with

    Gunicorn | Heroku Dev Center https://devcenter.heroku.com/articles/python-gunicorn [Python] Flask を Google App Engine 上で動作させる Qiita@togoturns https://qiita.com/togoturns/items/579b0cf73370f4022f29 Python ランタイム | App Engine flexible environment for Python docs https://cloud.google.com/appengine/docs/flexible/python/runtime by ABE Hiroki aka hATrayflood