Flask è un framework Web piccolo, leggero e micro scritto in Python. Ti consente di sviluppare facilmente applicazioni web senza strumenti o librerie. Questa applicazione Web può essere un blog, una pagina wiki, pagine Web, un'applicazione calendario basata sul Web o un sito Web commerciale. È semplice, facile da usare, facile da imparare e adatto ai principianti perché non richiede alcuna dipendenza.
In questo tutorial, ti mostreremo come distribuire l'applicazione Flask con Gunicorn e Nginx su Ubuntu 20.04.
Prerequisiti
- Un VPS Ubuntu 20.04 con accesso root abilitato o un utente con privilegi sudo.
Accedi e aggiorna i pacchetti
Innanzitutto, dovremo accedere al nostro server utilizzando SSH. Puoi farlo inserendo questo comando:
ssh root@IP_Address -p Port_Number
Ricordati di sostituire root
con il tuo nome utente se non stai utilizzando l'utente root. Modifica IP_Address
e Port_Number
in base all'indirizzo IP del tuo server e al numero di porta SSH.
Una volta effettuato l'accesso, dovresti aggiornare tutti i tuoi pacchetti alle ultime versioni disponibili.
apt-get update -y
apt-get upgrade -y
Una volta che tutti i pacchetti sono aggiornati, riavvia il server per applicare le modifiche alla configurazione.
Installa le dipendenze richieste
Flask è un'applicazione basata su Python. Quindi Python e altre dipendenze richieste devono essere installate sul tuo server. Se non sono installati puoi installarli tutti con il seguente comando:
apt-get install python3 python3-pip python3-dev build-essential libssl-dev libffi-dev python3-setuptools -y
Una volta installate tutte le dipendenze, installa il pacchetto dell'ambiente virtuale Python utilizzando il seguente comando:
apt-get install python3-venv -y
Una volta installato, puoi procedere al passaggio successivo.
Installa Nginx Web Server
In questo tutorial, useremo Nginx come proxy inverso per l'applicazione Flask. Quindi dovrai installare il pacchetto del server web Nginx sul tuo server. Puoi installarlo usando il seguente comando:
apt-get install nginx -y
Una volta installato Nginx, avvia e abilita il servizio Nginx utilizzando il seguente comando:
systemctl start nginx systemctl enable nginx
Crea un ambiente virtuale per l'applicazione Flask
Successivamente, dovrai creare un ambiente virtuale per l'applicazione Flask.
Innanzitutto, crea una directory di progetto con il seguente comando:
mkdir ~/project
Quindi, cambia la directory nel tuo progetto e crea un ambiente virtuale Python con il seguente comando:
cd ~/project python3 -m venv venv
Successivamente, attiva il tuo ambiente con il seguente comando:
source venv/bin/activate
Quindi, installa Gunicorn, Flask e altri componenti con il seguente comando:
pip install wheel pip install gunicorn flask
Una volta terminato, puoi procedere al passaggio successivo.
Crea un'applicazione Flask
Successivamente, dovrai creare un'applicazione Flask di esempio per il tuo progetto. Esegui il comando seguente per crearlo all'interno della directory del tuo progetto:
nano ~/project/flaskapp.py
Aggiungi i seguenti codici:
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')
Salva e chiudi il file, quindi verifica la tua applicazione con il seguente comando:
cd ~/project/ python3 flaskapp.py
Se tutto va bene, dovresti ottenere il seguente output:
* 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)
Premi CTRL+C per chiudere l'applicazione.
Crea un punto di ingresso WSGI per Gunicorn
Successivamente, dovrai creare un punto di ingresso WSGI per servire la tua applicazione tramite Gunicorn.
Esegui il comando seguente per crearlo:
nano ~/project/wsgi.py
Aggiungi le seguenti righe:
from flaskapp import app if __name__ == "__main__": app.run()
Salva e chiudi il file, quindi verifica se Gunicorn può servire correttamente l'applicazione utilizzando il comando seguente:
cd ~/project/ gunicorn --bind 0.0.0.0:5000 wsgi:app
Se tutto va bene, dovresti ottenere il seguente output:
[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
Premere CTRL+C per interrompere l'applicazione. Successivamente, disattiva dall'ambiente virtuale Python con il seguente comando:
deactivate
Crea un file di servizio Systemd per l'applicazione Flask
Successivamente, dovrai creare un file di unità systemd per l'applicazione Flask. Puoi crearlo con il seguente comando:
nano /etc/systemd/system/flask.service
Aggiungi le seguenti righe:
[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
Salva e chiudi il file, quindi imposta la proprietà e l'autorizzazione appropriate per il progetto Flask:
chown -R root:www-data /root/project chmod -R 775 /root/project
Quindi, ricarica il demone systemd con il seguente comando:
systemctl daemon-reload
Quindi, avvia il servizio Flask e abilitalo per l'avvio al riavvio del sistema:
systemctl start flask systemctl enable flask
Successivamente, verifica lo stato del pallone con il seguente comando:
systemctl status flask
Uscita:
● 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
Configura Nginx come proxy inverso per applicazione Flask
Successivamente, dovrai configurare Nginx come proxy inverso per servire l'applicazione Flask tramite la porta 80. Per fare ciò, crea un file di configurazione dell'host virtuale Nginx:
nano /etc/nginx/conf.d/flask.conf
Aggiungi le seguenti righe:
server { listen 80; server_name flask.example.com; location / { include proxy_params; proxy_pass http://127.0.0.1:5000; } }
Salva e chiudi il file, quindi verifica Nginx per eventuali errori di sintassi:
nginx -t
Dovresti vedere il seguente output:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful
Infine, riavvia il servizio Nginx per applicare le modifiche:
systemctl restart nginx
Accedi all'applicazione Flask
A questo punto, la tua applicazione Flask è installata, configurata e ospitata con un proxy Nginx. Ora puoi accedervi utilizzando l'URL http://flask.example.com . Dovresti vedere la seguente pagina:
Congratulazioni! hai distribuito con successo l'applicazione Flask con Gunicorn e Nginx sul server Ubuntu 20.04.
Tuttavia, se sei uno dei nostri clienti di hosting Ubuntu gestito o se utilizzi uno dei nostri piani di hosting VPS gestito, non devi installare l'applicazione Flask sul tuo VPS Ubuntu 20.04:chiedi semplicemente ai nostri amministratori, siediti e relax. I nostri amministratori installeranno immediatamente l'applicazione Flask su Ubuntu 20.04 (o qualsiasi altro sistema operativo che hai con noi).
PS. Se ti è piaciuto questo post su come installare l'applicazione Flask su un VPS Ubuntu 20.04, condividilo con i tuoi amici sui social network utilizzando i pulsanti qui sotto, o semplicemente lascia un commento nella sezione commenti. Grazie.