Deployment webových aplikací

Aplikace napsaná v Pythonu běží na našem počítači, ale jak ji dostat do Internetu? Existují různé možnosti, jednou z nich je nasadit ji do cloudu.

Nemáte ještě webovou aplikaci? Můžete vyzkoušet framework Flask.

WSGI

Nasazování webových aplikací v Pythnu se opírá o WSGI, což je standardní pythonní rozhraní pro komunikaci mezi webovou aplikací a webovým serverem definované v PEPu 333.

Naprostá většina webových frameworků v Pythonu toto rozhraní implementuje přímo, případně k tomuto účelu obsahuje wrapper.

Je tedy jedno, jestli používáte Flask, Pyramid, Django, Bottle nebo Falcon, vždy vaší aplikaci představuje application objekt, který se navenek chová stejně. Webové frameworky implementují aplikační část WSGI.

Stejně tak existují webové servery, které implementují serverovou část WSGI, například Gunicorn nebo mod_wsgi pro httpd (Apache). Tyto servery umí pracovat s application objektem a nezajímá je, v jakém frameworku je aplikace napsaná.

Většině cloudových providerům stačí nějakým způsobem application objekt předat a o zbytek se postarají za vás. Jedním z takových providerů je i PythonAnywhere.

Deployment webových aplikací na PythonAnywhere je popsaný v lekci PythonAnywhere.

{
  "data": {
    "sessionMaterial": {
      "id": "session-material:2018/mipyt-zima:flask:1",
      "title": "Deployment webových aplikací",
      "html": "\n          \n    \n\n    <h1>Deployment webov&#xFD;ch aplikac&#xED;</h1>\n<p>Aplikace napsan&#xE1; v Pythonu b&#x11B;&#x17E;&#xED; na na&#x161;em po&#x10D;&#xED;ta&#x10D;i, ale jak ji dostat do Internetu?\nExistuj&#xED; r&#x16F;zn&#xE9; mo&#x17E;nosti, jednou z nich je nasadit ji do cloudu.</p>\n<div class=\"admonition note\"><p>Nem&#xE1;te je&#x161;t&#x11B; webovou aplikaci? M&#x16F;&#x17E;ete vyzkou&#x161;et framework\n<a href=\"/2018/mipyt-zima/intro/flask/\">Flask</a>.</p>\n</div><h3>WSGI</h3>\n<p>Nasazov&#xE1;n&#xED; webov&#xFD;ch aplikac&#xED; v Pythnu se op&#xED;r&#xE1; o WSGI,\nco&#x17E; je standardn&#xED; pythonn&#xED; rozhran&#xED; pro komunikaci\nmezi webovou aplikac&#xED; a webov&#xFD;m serverem definovan&#xE9; v <a href=\"https://www.python.org/dev/peps/pep-0333/\">PEPu 333</a>.</p>\n<p>Naprost&#xE1; v&#x11B;t&#x161;ina webov&#xFD;ch framework&#x16F; v Pythonu toto rozhran&#xED; implementuje p&#x159;&#xED;mo,\np&#x159;&#xED;padn&#x11B; k tomuto &#xFA;&#x10D;elu obsahuje wrapper.</p>\n<p>Je tedy jedno, jestli pou&#x17E;&#xED;v&#xE1;te Flask, Pyramid, Django, Bottle nebo Falcon,\nv&#x17E;dy va&#x161;&#xED; aplikaci p&#x159;edstavuje <code>application</code> objekt, kter&#xFD; se navenek chov&#xE1;\nstejn&#x11B;. Webov&#xE9; frameworky implementuj&#xED; aplika&#x10D;n&#xED; &#x10D;&#xE1;st WSGI.</p>\n<p>Stejn&#x11B; tak existuj&#xED; webov&#xE9; servery, kter&#xE9; implementuj&#xED; serverovou &#x10D;&#xE1;st WSGI,\nnap&#x159;&#xED;klad <a href=\"http://gunicorn.org/\">Gunicorn</a> nebo <code>mod_wsgi</code> pro <code>httpd</code> (Apache). Tyto servery um&#xED;\npracovat s <code>application</code> objektem a nezaj&#xED;m&#xE1; je, v jak&#xE9;m frameworku je aplikace\nnapsan&#xE1;.</p>\n<p>V&#x11B;t&#x161;in&#x11B; cloudov&#xFD;ch provider&#x16F;m sta&#x10D;&#xED; n&#x11B;jak&#xFD;m zp&#x16F;sobem <code>application</code> objekt p&#x159;edat\na o zbytek se postaraj&#xED; za v&#xE1;s. Jedn&#xED;m z takov&#xFD;ch provider&#x16F; je i\n<a href=\"https://www.pythonanywhere.com/\">PythonAnywhere</a>.</p>\n<p>Deployment webov&#xFD;ch aplikac&#xED; na PythonAnywhere je popsan&#xFD; v lekci\n<a href=\"/2018/mipyt-zima/intro/deployment/pythonanywhere/\">PythonAnywhere</a>.</p>\n\n\n        "
    }
  }
}