Ricerca nel sito web

Come installare Flask con Nginx e Gunicorn su Rocky Linux


Su questa pagina

  1. Prerequisiti
  2. Installazione delle dipendenze
  3. Impostazione dell'utente
  4. Impostazione dell'ambiente virtuale Python
  5. Installazione di Flask e Gunicorn
  6. Creazione della prima applicazione Flask
  7. Impostazione di Gunicorn e Supervisord
  8. Impostazione del proxy inverso Nginx
  9. Conclusione

Flask è un microframework scritto in Python per lo sviluppo di moderne applicazioni web e API (Application Programming Interface). È basato sul toolkit Werkzeug e sul modello Jinja2. Invece di utilizzare un'architettura complessa, Flask è un piccolo framework web che semplifica l'estensione del core ed è facile da imparare perché Flask ha meno codice. Flask non include l'ORM, ma ha comunque funzioni interessanti come il routing degli URL e un motore di template.

Gunicorn o \Green Unicorn\ è un server HTTP WSGI con modalità pre-fork worker. È un porting dal progetto Rubys Unicorn. Gunicorn può essere abbinato a diversi framework Web, è leggero sulle risorse del server e veloce. Gunicorn si pone tra la tua applicazione e il server Web, quindi puoi associare Gunicorn a un server Web come Nginx e Apache2.

In questo tutorial, mostreremo come installare e configurare Flask Python Web Framework con Gunicorn e Nginx sul server Rocky Linux. Imparerai anche come configurare Supervisord come gestore di processi per la gestione dell'applicazione Python Flask.

Prerequisiti

Per completare questo tutorial, avrai bisogno di alcuni dei seguenti requisiti:

  • Un server Rocky Linux - Puoi utilizzare sia Rocky Linux v8 che v9 - Desktop o Server.
  • Un utente non root con privilegi di amministratore sudo root.
  • Un nome di dominio fittizio per lo sviluppo locale.

Installazione delle dipendenze

Nella prima fase, installerai alcune dipendenze del pacchetto che verranno utilizzate per l'installazione e la distribuzione di Flask Web Framework. Ciò include Python Pip, Nginx e Supervisord.

Tutte queste dipendenze del pacchetto sono disponibili nel repository Rocky Linux, puoi installarlo facilmente tramite il comando DNF.

Innanzitutto, assicurati che il repository EPEL sia installato sul tuo sistema. oppure puoi semplicemente installarlo e abilitarlo tramite il comando dnf di seguito.

sudo dnf install epel-release

Ora, installa alcuni pacchetti python python3-pip e python3-devel e il compilatore GCC usando il comando dnf qui sotto. Questi pacchetti verranno utilizzati per l'installazione dei pacchetti Python.

sudo dnf install python3-pip python3-devel gcc

Quando viene richiesto di confermare l'installazione, immettere y e premere INVIO per procedere.

Successivamente, esegui un altro comando dnf di seguito per installare il server Web Nginx e i pacchetti supervisord. L'Nginx qui verrà utilizzato come proxy inverso per il tuo progetto Flask e il supervisord verrà utilizzato per gestire il processo di applicazione Flask.

sudo dnf install nginx supervisor

Immettere ye premere INVIO per confermare l'installazione.

Ora, avvia e abilita il servizio Nginx tramite il comando systemctl di seguito. Quindi, verifica il servizio Nginx per assicurarti che sia in esecuzione.

sudo systemctl start nginx
sudo systemctl enable nginx
sudo systemctl status nginx

Vedrai l'output come il seguente: il servizio Nginx è abilitato e verrà eseguito automaticamente all'avvio del sistema. E lo stato del servizio Nginx è in esecuzione.

E per il servizio supervisord, esegui il seguente comando per avviarlo e abilitarlo. Quindi, verifica lo stato del servizio supervisionato per assicurarti che sia in esecuzione.

sudo systemctl start supervisord
sudo systemctl enable supervisord
sudo systemctl status supervisord

Vedrai che il servizio supervisord è abilitato e verrà eseguito automaticamente all'avvio. E lo stato del servizio supervisionato è in esecuzione.

Configurazione dell'utente

Dopo aver installato le dipendenze del pacchetto, ora configurerai un nuovo utente che verrà utilizzato per eseguire il progetto Flask.

Eseguire il seguente comando per creare un nuovo utente e impostare la password. In questo esempio, creerai un nuovo utente alice.

Quando ti viene richiesto di creare una nuova password, inserisci la tua password e ripeti.

sudo useradd -m -s /bin/bash alice
sudo passwd alice

Ora esegui il seguente comando per aggiungere l'utente alice al gruppo wheel in modo che l'utente possa eseguire il comando sudo.

sudo usermod -aG wheel alice

Infine, accedi al nuovo utente ed esegui il comando sudo per verificare i privilegi di root. Inserisci la tua password quando richiesto.

su - alice
sudo su

Dovresti vedere la root shell della tua macchina Rocky Linux.

Configurazione dell'ambiente virtuale Python

In questo passaggio, configurerai l'ambiente virtuale Python per il framework Web Flask.

Accedi come tuo utente usando il seguente comando.

su - alice

Crea una nuova directory di installazione di Flask /var/www/myflask utilizzando il seguente comando mkdir.

sudo mkdir -p /var/www/myflask

Modificare la proprietà e l'autorizzazione della directory di installazione di Flask utilizzando il comando seguente. La proprietà dovrebbe essere dell'utente alice con autorizzazione 755.

sudo chown -R alice:alice /var/www/myflask
sudo chmod 755 /var/www/myflask

Ora sposta la tua directory di lavoro nella directory di installazione di Flask /var/www/myflask e crea un nuovo ambiente virtuale Python tramite il comando python di seguito.

cd /var/www/myflask
python3 -m venv myenv

Vedrai che viene creata una nuova directory myenv.

Quindi, attiva l'ambiente virtuale Python usando il seguente comando. Se attivato, vedrai che il formato del prompt è cambiato in (myenv [email .

source myenv/bin/activate

Per disattivare dall'ambiente virtuale, è necessario eseguire il seguente comando.

deactivate

Installazione di Flask e Gunicorn

Prima di installare Flask, assicurati di essere nell'ambiente virtuale. oppure puoi semplicemente eseguire il seguente comando per accedere.

su - alice
cd /var/www/myflask
source myenv/bin/activate

Ora installa Flask e Gunicorn tramite il comando pip di seguito. Questo installerà Flask e Gunicorn nell'ambiente virtuale, non a livello di sistema.

pip3 install flask gunicorn

Dopo aver installato Flask e Gunciron, sei pronto per creare la prima applicazione utilizzando Flask Web Framework.

Creazione della prima applicazione Flask

Prima di iniziare a creare un'applicazione Flask, assicurati di essere nel tuo ambiente virtuale Python.

Crea un nuovo file Python myflask.py usando il tuo editor preferito. In questo esempio, useremo nano editor.

nano myflask.py

Ora aggiungi il seguente script al file.

# myflask.py
from flask import Flask, render_template  # importing the render_template function

app = Flask(__name__)
# route to index page
@app.route("/")
def hello():
    return render_template('index.html')

if __name__ == "__main__":
    app.run(host='0.0.0.0')

Salva il file ed esci dall'editor quando hai finito.

Successivamente, crea una nuova directory templates per i tuoi file statici e crea un nuovo file index.html sopra di essa.

mkdir -p templates
nano templates/index.html

Aggiungere il seguente script HTML al file.

<html>
    <body>
        <h1><center>Hello Flask - Rocky Linux!</center></h1>
    </body>
</html>

Salva il file ed esci dall'editor quando hai finito.

Ora esegui lo script Python Flask myflask.py usando il comando seguente. Questo eseguirà l'applicazione Flask in modalità di sviluppo, eseguendo l'indirizzo IP del server con la porta predefinita 5000.

python3 myflask.py

Di seguito è riportato un output simile che otterrai.

Successivamente, apri un altro terminale ed esegui il comando curl di seguito per accedere alla tua applicazione Flask. Vedrai lo script del file index.html che hai creato.

curl localhost:5000

Ora premi Ctrl+c per terminare l'applicazione Flask.

Installazione di Gunicorn e Supervisord

In questo passaggio, configurerai la tua applicazione Flask con Gunicorn e Supervisord. Ciò ti consente di eseguire e gestire la tua applicazione Python gestibile e controllabile tramite il processo Supervisord.

Crea un nuovo file Python uwsgi.py nella stessa directory dell'applicazione Flask. In questo esempio, la directory dovrebbe essere /var/www/myflask.

nano wsgi.py

Aggiungi il seguente script Python al file.

# import myflask Flask application
from myflask import app

if __name__ == "__main__":
    app.run(debug=True)

Salva il file ed esci dall'editor quando hai finito.

Ora, esegui il seguente comando gunicorn per avviare l'applicazione Flask e verificare le configurazioni di Gunicorn. L'applicazione dovrebbe ora essere in esecuzione sotto Gunicron con la porta 8000.

gunicorn -w 4 --bind 0.0.0.0:8000 wsgi:app

Di seguito è riportato l'output del comando gunicorn.

Successivamente, apri il browser Web e visita l'indirizzo IP del server seguito dalla porta 8000 (ad esempio: http://192.168.5.100:8000/). Dovresti vedere la pagina index.html della tua applicazione Flask.

A questo punto, l'applicazione Flask è in esecuzione con Gunicorn senza errori. Ora puoi tornare al tuo terminale e premere Ctrl+c per terminare il processo gunicorn e iniziare a configurare il gestore del processo Supervisord.

Crea una nuova configurazione del file Supervisord INI per l'applicazione Flask /etc/supervisord.d/flaskapp.ini tramite il seguente comando nano. La configurazione deve essere memorizzata nella directory /etc/supervisord.d.

sudo nano /etc/supervisord.d/flaskapp.ini

Aggiungere la seguente configurazione al file. E assicurati di modificare il percorso dei dettagli delle tue applicazioni, l'utente e il gruppo e il percorso del registro.

Con questa configurazione, la tua applicazione Flask verrà eseguita sotto il socket UNIX che verrà creato da Gunicorn. Questo socket unix verrà utilizzato anche per interagire con il proxy inverso Nginx.

[program:myflask] 
command=/bin/bash -c 'source /var/www/myflask/myenv/bin/activate; gunicorn -w 3 --bind unix:/var/www/myflask/ipc.sock wsgi:app'
directory=/var/www/myflask
user=alice
group=www-data
autostart=true
autorestart=true
stdout_logfile=/var/www/myflask/myflask.log
stderr_logfile=/var/www/myflask/error.log

Salva il file ed esci dall'editor quando hai finito.

Ora, esegui il seguente comando systemctl di seguito per riavviare il servizio Supervisord e applicare le nuove modifiche. Quindi, verifica lo stato Supervisord e assicurati che il servizio sia in esecuzione.

sudo systemctl restart supervisord
sudo systemctl status supervisord

Nello screenshot qui sotto, puoi vedere che Supervisord è in esecuzione con una nuova configurazione aggiuntiva per l'applicazione Flask.

Infine, ora puoi verificare il processo della tua applicazione Flask tramite il comando supervisorctl di seguito. Dovresti vedere che c'è un processo chiamato myflask con lo stato OK.

sudo supervisorctl status

Configurazione del proxy inverso Nginx

In questo passaggio, imparerai come configurare Nginx come proxy inverso per l'applicazione Flask in esecuzione sotto il gestore di processi Supervisord. Creerai un nuovo blocco server Nginx per il proxy inverso e utilizzerai il nome di dominio locale per l'applicazione Flask.

Crea una nuova configurazione del blocco del server Nginx /etc/nginx/conf.d/flaskapp.conf utilizzando il seguente editor nano.

sudo nano /etc/nginx/conf.d/flaskapp.conf

Aggiungere la seguente configurazione al file. E assicurati di cambiare il nome di dominio www.myflask.local con il tuo dominio di sviluppo locale.

server {
    listen 80;
    server_name www.myflask.local;

    location / {
        include uwsgi_params;
        proxy_pass http://unix:/var/www/myflask/ipc.sock;
    }
}

Salva il file ed esci dall'editor quando hai finito.

Successivamente, verifica la configurazione di Nginx per assicurarti di avere la configurazione corretta. Quindi, riavvia il servizio Nginx per applicare le nuove modifiche.

sudo nginx -t
sudo systemctl restart nginx

A questo punto, la tua applicazione Flask è ora accessibile tramite il proxy inverso Nginx che viene eseguito sulla porta HTTP predefinita.

Ora sulla tua macchina locale, modifica il file /etc/hosts usando l'editor nano.

sudo nano /etc/hosts

Definire l'indirizzo IP della macchina Ubuntu con il nome di dominio \www.myflask.local\ come di seguito.

192.168.5.28 www.myflask.local

Salva e chiudi il file.

Ora apri il tuo browser web e inserisci il nome di dominio del progetto Flask (ad es. http://www.myflask.local) nella barra degli indirizzi. E dovresti ottenere la pagina indice del tuo progetto Python Flask.

Conclusione

Congratulazioni! Hai installato con successo il framework web Python Flask con Gunicorn e Nginx sul server Rocky Linux. Hai anche imparato come creare il primo progetto Python Flask, configurare un ambiente virtuale Python e configurare la gestione dei processi Supervisord per il progetto Flask.