GNU/Linux >> Linux Esercitazione >  >> Panels >> Panels

Come distribuire l'applicazione Flask con Nginx e Gunicorn su Ubuntu 20.04

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.


Panels
  1. Come distribuire le applicazioni Node.js con pm2 e Nginx su Ubuntu

  2. Come installare Nginx con Google PageSpeed ​​su Ubuntu 20.04

  3. Come installare PHP 7.4 con Nginx su Ubuntu 20.04

  4. Come configurare Django con Postgres, Nginx e Gunicorn su Ubuntu 20.04

  5. Come installare Node.js con NVM e Nginx su Ubuntu 22.04

Come installare MediaWiki con Nginx e Lets Encrypt SSL su Ubuntu 20.04

Come distribuire Rocket Chat con Nginx su Ubuntu 18.04

Come installare Bludit CMS con NGINX su Ubuntu 20.04

Come installare Talkyard Forum con Nginx su Ubuntu 18.04

Come distribuire un'applicazione PHP con Nginx e MySQL utilizzando Docker e Docker Compose

Come distribuire l'applicazione Laravel con Nginx su Ubuntu?