PDA

View Full Version : [Python] Installare webapp Flask con Nginx e Gunicorn


oNaSsIs
15-11-2014, 08:25
Buongiorno a tutti,
dovrei installare da remoto una Flask webapp su un server e per poterla testare ho quindi bisogno di connettermi via a browser a quest'ultimo. Per fare ciò mi è stato consigliato di usare Nginx e Gunicorn. A questo punto mi sono messo alla ricerca sul web e ho trovato questo tutorial (http://www.onurguzel.com/how-to-run-flask-applications-with-nginx-using-gunicorn/). Sono partito da qui, ma in seguito ho cercato anche altre fonti e sono arrivato a questo punto.

Ho scritto la seguente webapp, però senza utilizzare un ambiente virtuale, si tratta di una macchina dedicata, quindi non ritengo sia indispensabile. Riporto anche i percorsi perché credo sia importante anche capire dove sono collocati questi file.

$ cat /home/ubuntu/test.py

from flask import Flask
from werkzeug.contrib.fixers import ProxyFix
app = Flask(__name__)

@app.route('/')
def test():
return "Hello world!"

app.wsgi_app = ProxyFix(app.wsgi_app)

if __name__ == '__main__':
app.run()

L'app sembra funzionare correttamente, infatti se lancio test.py
$ python /home/ubuntu/test.py
* Running on http://127.0.0.1:5000/

Ora veniamo al problema: la configurazione di nginx.
/cat /etc/nginx/sites-available/test.conf
server {
listen 80;
server_name hello.itu24.com;

root /home/ubuntu;

location / {
proxy_set_header X-Forward-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_redirect off;
proxy_pass http://127.0.0.1:8000;
}
}

Lancio il comando gunicorn e immagino che a questo punto la mia applicazione dovrebbe essere in esecuzione, giusto?
gunicorn -b h 127.0.0.1:8000 test:app
Quando dal mio computer provo a connettermi al server se vado all'indirizzo IP vedo la welcome page di Nginx. Per vedere la webapp dovrei andare all'indirizzo IP:PORT oppure IP/test? Io li ho provati entrambi ma non funzionano. Mi è stato detto che c'è un errore nella configurazione e che l'applicazione non è raggiungibile dall'esterno, solo che io non so come modificarla.

oNaSsIs
16-11-2014, 14:49
Sono riuscito a risolvere cancellando la configurazione di default presente nelle cartelle /etc/nginx/sites-available/ e /etc/nginx/sites-enabled/.