PythonAnywhere je pro limitované použití zdarma.
K posílání kódu na produkční prostředí budeme používat Git. Nejprve proto uložte celý projekt do Gitu a nahrajte na GitHub.
Potom se zaregistrujte na www.pythonanywhere.com a vyberte Beginner Account. Po přihlášení se ukáže záložka Consoles, kde vytvořte "Bash" konzoli. V té vytvořte a aktivujte virtuální prostředí a nainstalujte Flask (plus případně další závislosti nebo jiný webový framework).
PythonAnywhere používá specificky nastavený Linux,
tak je ve webové konzoli potřeba použít jiný příkaz
na vytvoření virtuální prostředí, než jste z toho kurzu zvyklí.
Napište příkazy takto (bez úvodního $
):
$ virtualenv --python=python3.7 __venv__
$ . __venv__/bin/activate
$ python -m pip install flask
Pokud máte na PythonAnywhere starší účet, možná tam Python 3.7 nenajdete. Můžete použít Python 3.6, nemělo by to vadit, protože tento návod je koncipován tak, aby s touto verzí také fungoval. Případně můžete zažádat o aktualizaci systémové image.
Následně naklonujte na PythonAnywhere váš kód.
S veřejným repozitářem je to jednodušší – stačí ho naklonovat „anonymně”
(git clone https://github.com/<github-username>/<github-repo>
).
Pokud ale používáme privátní repozitář, bude potřeba si vygenerovat SSH klíč:
$ ssh-keygen # (zeptá se na hesla ke klíči)
$ cat ~/.ssh/id_rsa.pub
Obsah souboru ~/.ssh/id_rsa.pub
je pak potřeba přidat na GitHub v osobním
nastavení v sekci "SSH and GPG Keys".
Pak můžete klonovat přes SSH:
$ git clone git@github.com:<github-username>/<github-repo>.git
Zbývá nastavit, aby PythonAnywhere tento kód spustil jako webovou aplikaci.
Přejděte na stránkách PythonAnywhere do Dashboard do záložky Web, a vytvořte novou aplikaci. V nastavení zvolte Manual Configuration a Python 3.7. (Volby jiné než Manual Configuration automaticky vytvoří kostru aplikace. Vy ale už aplikaci máte hotovou, takže je nepotřebujete.)
V konfiguraci vzniklé webové aplikace je potřeba nastavit Virtualenv
na cestu k virtuálnímu prostředí (/home/<uživatelské-jméno>/__venv__
),
a obsah WSGI Configuration File přepsat.
To jde buď kliknutím na odkaz v konfiguraci (otevře se webový editor)
nebo zpět v bashové konzoli pomocí editoru jako vi
nebo nano
.
Nový obsah souboru by měl být:
import sys
path = '/home/<uživatelské-jméno>/<jméno-adresáře>'
if path not in sys.path:
sys.path.append(path)
from <jméno-souboru> import app as application
(Za <uživatelské-jméno>
,
<jméno-adresáře>
a
<jméno-souboru>
je samozřejmě potřeba doplnit
vaše údaje. Jméno souboru je zde bez přípony .py
.)
Nakonec restartujte aplikaci velkým zeleným tlačítkem na záložce Web
a na adrese <uživatelské-jméno>.pythonanywhere.com
si ji můžete prohlédnout.
Protože vaše hesla, tajné klíče apod. nejsou v repozitáři, je nutné je předat aplikaci zvlášť. Konfigurační i jiné soubory jde nahrát v záložce Files nebo opět vytvořit a editovat ve webové konzoli.
Pokud vaše aplikace vyžaduje nastavení nějakých proměnných prostředí
(například s cestou ke konfiguračnímu souboru nebo přímo s nějakou konfigurací),
můžete tak učinit přímo z WSGI Configuration File.
Buďto „nízkoúrovňově“ (os.environ
) nebo více sofistikovaně například pomocí modulu dotenv
,
což ostatně doporučují i v dokumentaci.
Doporučujeme pro tyto potřeby stejně raději nepoužívat API klíče k vlastním účtům, raději si vyrobte nějaké účty pouze pro tento účel. GitHub povoluje všem vytvořit si jeden účet pro automatické operace, ale takový účet musí mít napsané v popisu, že je robot.
Když nahrajeme nový kód na GitHub, je vždy potřeba provést na PythonAnywhere
v konzoli git pull
a pak v záložce Web aplikaci restartovat.
Placená varianta PythonAnywhere má API a tento proces jde zautomatizovat.
Ve verzi zadarmo to není tak pohodlné.