Flask je malý, lehký a mikro webový framework napsaný v Pythonu. Umožňuje vám snadno vyvíjet webové aplikace bez jakýchkoli nástrojů nebo knihoven. Touto webovou aplikací může být blog, wiki stránka, webové stránky, webová kalendářová aplikace nebo komerční webová stránka. Je jednoduchý, snadno se používá, snadno se učí a je vhodný pro začátečníky, protože nevyžaduje žádné závislosti.
V tomto tutoriálu vám ukážeme, jak nasadit aplikaci Flask s Gunicorn a Nginx na Ubuntu 20.04.
Předpoklady
- Ubuntu 20.04 VPS s povoleným přístupem root nebo uživatel s právy sudo.
Přihlaste se a aktualizujte balíčky
Nejprve se budeme muset přihlásit na náš server pomocí SSH. Můžete to udělat zadáním tohoto příkazu:
ssh root@IP_Address -p Port_Number
Nezapomeňte nahradit root
s vaším uživatelským jménem, pokud nepoužíváte uživatele root. Změňte IP_Address
a Port_Number
podle IP adresy vašeho serveru a čísla portu SSH.
Jakmile se přihlásíte, měli byste aktualizovat všechny své balíčky na nejnovější dostupné verze.
apt-get update -y
apt-get upgrade -y
Jakmile budou všechny balíčky aktuální, restartujte server, aby se změny konfigurace projevily.
Instalovat požadované závislosti
Flask je aplikace založená na pythonu. Takže Python a další požadované závislosti musí být nainstalovány na vašem serveru. Pokud nejsou nainstalovány, můžete je všechny nainstalovat pomocí následujícího příkazu:
apt-get install python3 python3-pip python3-dev build-essential libssl-dev libffi-dev python3-setuptools -y
Jakmile jsou nainstalovány všechny závislosti, nainstalujte balíček virtuálního prostředí Python pomocí následujícího příkazu:
apt-get install python3-venv -y
Po instalaci můžete přejít k dalšímu kroku.
Instalovat webový server Nginx
V tomto tutoriálu použijeme Nginx jako reverzní proxy pro aplikaci Flask. Budete tedy muset na svůj server nainstalovat balíček webového serveru Nginx. Můžete jej nainstalovat pomocí následujícího příkazu:
apt-get install nginx -y
Jakmile je Nginx nainstalován, spusťte a povolte službu Nginx pomocí následujícího příkazu:
systemctl start nginx systemctl enable nginx
Vytvoření virtuálního prostředí pro aplikaci Flask
Dále budete muset vytvořit virtuální prostředí pro aplikaci Flask.
Nejprve vytvořte adresář projektu pomocí následujícího příkazu:
mkdir ~/project
Dále změňte adresář na svůj projekt a vytvořte virtuální prostředí Pythonu pomocí následujícího příkazu:
cd ~/project python3 -m venv venv
Dále aktivujte své prostředí pomocí následujícího příkazu:
source venv/bin/activate
Dále nainstalujte Gunicorn, Flask a další komponenty pomocí následujícího příkazu:
pip install wheel pip install gunicorn flask
Jakmile budete hotovi, můžete přejít k dalšímu kroku.
Vytvořit aplikaci Flask
Dále budete muset vytvořit vzorovou aplikaci Flask pro váš projekt. Spusťte následující příkaz a vytvořte jej v adresáři projektu:
nano ~/project/flaskapp.py
Přidejte následující kódy:
from flask import Flask app = Flask(__name__) @app.route("/") def hello(): return "Welcome to Flask Application!" if __name__ == "__main__": app.run(host='0.0.0.0')
Uložte a zavřete soubor a poté ověřte aplikaci pomocí následujícího příkazu:
cd ~/project/ python3 flaskapp.py
Pokud je vše v pořádku, měli byste získat následující výstup:
* Serving Flask app 'flaskapp' (lazy loading) * Environment: production WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. * Debug mode: off * Running on all addresses. WARNING: This is a development server. Do not use it in a production deployment. * Running on http://69.28.84.227:5000/ (Press CTRL+C to quit)
Stiskněte CTRL+C pro ukončení aplikace.
Vytvořte vstupní bod WSGI pro Gunicorn
Dále budete muset vytvořit vstupní bod WSGI pro obsluhu vaší aplikace přes Gunicorn.
Spusťte následující příkaz a vytvořte jej:
nano ~/project/wsgi.py
Přidejte následující řádky:
from flaskapp import app if __name__ == "__main__": app.run()
Uložte a zavřete soubor a poté ověřte, zda Gunicorn může aplikaci správně obsluhovat pomocí příkazu níže:
cd ~/project/ gunicorn --bind 0.0.0.0:5000 wsgi:app
Pokud je vše v pořádku, měli byste získat následující výstup:
[2021-12-23 10:37:15 +0000] [9352] [INFO] Starting gunicorn 20.1.0 [2021-12-23 10:37:15 +0000] [9352] [INFO] Listening at: http://0.0.0.0:5000 (9352) [2021-12-23 10:37:15 +0000] [9352] [INFO] Using worker: sync [2021-12-23 10:37:15 +0000] [9354] [INFO] Booting worker with pid: 9354
Stiskněte CTRL+C pro zastavení aplikace. Dále deaktivujte z virtuálního prostředí Pythonu pomocí následujícího příkazu:
deactivate
Vytvoření souboru služby Systemd pro aplikaci Flask
Dále budete muset vytvořit soubor systemd unit pro aplikaci Flask. Můžete jej vytvořit pomocí následujícího příkazu:
nano /etc/systemd/system/flask.service
Přidejte následující řádky:
[Unit] Description=Gunicorn instance to serve Flask After=network.target [Service] User=root Group=www-data WorkingDirectory=/root/project Environment="PATH=/root/project/venv/bin" ExecStart=/root/project/venv/bin/gunicorn --bind 0.0.0.0:5000 wsgi:app [Install] WantedBy=multi-user.target
Uložte a zavřete soubor a poté nastavte správné vlastnictví a oprávnění k projektu flask:
chown -R root:www-data /root/project chmod -R 775 /root/project
Dále znovu načtěte démona systemd pomocí následujícího příkazu:
systemctl daemon-reload
Dále spusťte službu flask a povolte její spuštění při restartu systému:
systemctl start flask systemctl enable flask
Dále ověřte stav baňky pomocí následujícího příkazu:
systemctl status flask
Výstup:
● flask.service - Gunicorn instance to serve Flask Loaded: loaded (/etc/systemd/system/flask.service; disabled; vendor preset: enabled) Active: active (running) since Thu 2021-12-23 10:38:26 UTC; 8s ago Main PID: 9376 (gunicorn) Tasks: 2 (limit: 2353) Memory: 27.8M CGroup: /system.slice/flask.service ├─9376 /root/project/venv/bin/python3 /root/project/venv/bin/gunicorn --bind 0.0.0.0:5000 wsgi:app └─9393 /root/project/venv/bin/python3 /root/project/venv/bin/gunicorn --bind 0.0.0.0:5000 wsgi:app Dec 23 10:38:26 ubuntu2004 systemd[1]: Started Gunicorn instance to serve Flask. Dec 23 10:38:26 ubuntu2004 gunicorn[9376]: [2021-12-23 10:38:26 +0000] [9376] [INFO] Starting gunicorn 20.1.0 Dec 23 10:38:26 ubuntu2004 gunicorn[9376]: [2021-12-23 10:38:26 +0000] [9376] [INFO] Listening at: http://0.0.0.0:5000 (9376) Dec 23 10:38:26 ubuntu2004 gunicorn[9376]: [2021-12-23 10:38:26 +0000] [9376] [INFO] Using worker: sync Dec 23 10:38:26 ubuntu2004 gunicorn[9393]: [2021-12-23 10:38:26 +0000] [9393] [INFO] Booting worker with pid: 9393
Nakonfigurujte Nginx jako reverzní proxy pro aplikaci Flask
Dále budete muset nakonfigurovat Nginx jako reverzní proxy pro obsluhu aplikace Flask přes port 80. Chcete-li tak učinit, vytvořte konfigurační soubor virtuálního hostitele Nginx:
nano /etc/nginx/conf.d/flask.conf
Přidejte následující řádky:
server { listen 80; server_name flask.example.com; location / { include proxy_params; proxy_pass http://127.0.0.1:5000; } }
Uložte a zavřete soubor a poté ověřte, zda Nginx neobsahuje nějakou chybu syntaxe:
nginx -t
Měli byste vidět následující výstup:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful
Nakonec restartujte službu Nginx a použijte změny:
systemctl restart nginx
Přístup k aplikaci Flask
V tomto okamžiku je vaše aplikace Flask nainstalována, nakonfigurována a hostována pomocí proxy serveru Nginx. Nyní k němu můžete přistupovat pomocí adresy URL http://flask.example.com . Měli byste vidět následující stránku:
Gratulujeme! úspěšně jste nasadili aplikaci Flask s Gunicorn a Nginx na serveru Ubuntu 20.04.
Pokud jste však jedním z našich zákazníků Managed Ubuntu Hosting nebo pokud používáte jeden z našich plánů Managed VPS Hosting, nemusíte instalovat aplikaci Flask na svůj Ubuntu 20.04 VPS – jednoduše se zeptejte našich administrátorů, posaďte se a relaxovat. Naši administrátoři vám okamžitě nainstalují aplikaci Flask na Ubuntu 20.04 (nebo jakýkoli jiný OS, který u nás máte).
PS. Pokud se vám tento příspěvek o tom, jak nainstalovat aplikaci Flask na Ubuntu 20.04 VPS, líbil, sdílejte jej se svými přáteli na sociálních sítích pomocí tlačítek níže nebo jednoduše zanechte komentář v sekci komentářů. Děkuji.