Fagungis

43
DJANGO FAGUNGIS Denis Darii ([email protected]) presenta
  • date post

    21-Oct-2014
  • Category

    Technology

  • view

    965
  • download

    0

description

by Denis Darii

Transcript of Fagungis

Page 1: Fagungis

DJANGO FAGUNGIS

Denis Darii ([email protected])

presenta

Page 2: Fagungis

Denis Darii

¿ FAGUNGIS ?

Significato?

È un'altra parola africana?

Page 3: Fagungis

Denis Darii

FA+GU+NGI+S

è un acronimo

FAbric + GUnicorn + NGInx + Supervisor

Page 4: Fagungis

Denis Darii

FABRIC

Una libreria Python che semplifica l'uso di SSH per il deploy di applicazioni o compiti di sistema.

Page 5: Fagungis

Denis Darii

GUNICORN

'Green Unicorn' è un server WSGI/HTTP Python per UNIX.

Page 6: Fagungis

Denis Darii

NGINX

è un web server / proxy inverso leggero ad alte prestazioni

Page 7: Fagungis

Denis Darii

SUPERVISOR

Un sistema client/server che permette agli utenti di monitorare e controllare diversi processi su piattaforme UNIX-like

Page 8: Fagungis

Denis Darii

Ok!

Ma cos'è FAGUNGIS?

Page 9: Fagungis

Denis Darii

FAGUNGIS

Un insieme di “task” FABRIC che hanno il compito di installare e configurare un intero ambiente per il vostro progetto DJANGO.

Page 10: Fagungis

Denis Darii

FAGUNGIS

Quindi, vi darà la possibilità, direttamente dal computer locale, di configurare e mettere in produzione il progetto, pronto a ricevere visitatori sul vostro dominio. Il tutto con un paio di semplici comandi.

Page 11: Fagungis

Denis Darii

FAGUNGIS

Perché l'ho creato?

Page 12: Fagungis

Denis Darii

FAGUNGISDiversi motivi mi hanno spinto:

● DRY – non ripetere la stessa procedura per ogni sito

● Portabilità del progetto su altri server con un impegno minimo

● Evitare il login diretto sul server con root o alto utente privilegiato

● Dopo il setup, aggiornare in produzione con un solo comando

● Velocità! ( update → syncdb → migrate → collectstatic → riavvio )

● Test automatici della configurazione, SEMPRE, ad ogni comando

● Modularità e flessibilità

perché ho creato

Page 13: Fagungis

Denis Darii

installiamo

FAGUNGIS

Page 14: Fagungis

Denis Darii

FAGUNGIS

Basta un semplice:

$ pip install django-fagungis

* o consultate la documentazione per vie alternative

Page 15: Fagungis

Denis Darii

configuriamo

FAGUNGIS

Page 16: Fagungis

Denis Darii

FAGUNGIS

Creiamo un file chiamato fabfile.py dove settare tutti I parametri del nostro progetto.

$ touch fabfile.py

Meglio ancora! Copiare il file example_fabfile.py collocato nella cartella “fagungis” dentro al PYTHONPATH:

$ cp /path/to/fagungis/example_fabfile.py fabfile.py

Oppure direttamente dal repository di FAGUNGIS:

$ wget -O fabfile.py https://bitbucket.org/DNX/django-fagungis/raw/tip/fagungis/example_fabfile.py fabfile.py

Questo file è meglio tenerlo nella root del vostro progetto django, sotto controllo versione, in quanto le modifiche a questo andranno a rispecchiare le modifiche al vostro progetto.

configuriamo

Page 17: Fagungis

Denis Darii

FAGUNGIS

Apriamo il file appena creato e apportiamo delle modifiche in base alle nostre esigenze.

Ogni parametro è anticipato da una o più righe di commento che spiegano lo scopo di questo.

Si possono tenere i valori di default, cambiando solo:● Nome del progetto, esempio “djangoday”● Repository● Host del server● Dominio, esempio “djangoday.it”

configuriamo

Page 18: Fagungis

Denis Darii

FAGUNGIS

Salvare il file e la configurazione di FAGUNGIS è finità!

configuriamo

Ora siamo pronti a lanciare il primo SETUP.

Page 19: Fagungis

Denis Darii

FAGUNGIS

Per avviare il setup, basta lanciare un semplice:

$ fab djangoday setup

Per prima cosa, in un qualsiasi task FAGUNGIS, viene testata la vostra configurazione. In caso di errori, FAGUNGIS si ferma e li mostra a video.

usare

Page 20: Fagungis

Denis Darii

FAGUNGIS

Se il test della configurazione è passato, osserverete sul monitor un elenco contenente i nomi dei parametri e i rispettivi valori.

Verificate e confermate di voler andare avanti con una “Y” e INVIO.

A questo punto sul monitor si vedranno scorrere tutti i comandi che FAGUNGIS lancia sul server remoto e il loro output.

usare

Page 21: Fagungis

Denis Darii

FAGUNGIS

Alla fine dell'esecuzione:

...djangoday correctly started![13:48:44] Setup finished in 188 seconds

Done.

usare

Page 22: Fagungis

Denis Darii

FAGUNGIS

Da adesso in poi, per portare in produzione le modifiche al vostro progetto, basterà un semplice:

$ fab djangoday deploy

usare

Page 23: Fagungis

Denis Darii

FAGUNGIS

Ora aprire un browser e accedere a http://djangoday.it

A questo punto, il nostro sito è on line!

usare

Page 24: Fagungis

Denis Darii

FAGUNGIS

Si, bello!Ma cos'ha fatto?

capire

Page 25: Fagungis

Denis Darii

FAGUNGIS

SETUP ha fatto per noi:

● installato le dipendenze di sistema(pacchetti Debian/Ubuntu)● creato l'utente django● creato la struttura delle cartelle(/opt/django/, logs/ scripts/ ...)● clonato il repository del progetto● creato il virtualenv● installato Gunicorn● installato le dipendenze del progetto(con pip -r requirements.txt)● caricato le configurazioni per nginx e supervisor● caricato lo script per far partire gunicorn

capire

Page 26: Fagungis

Denis Darii

FAGUNGIS

DEPLOY fa per noi:

● aggiorna il codice del progetto● installa le dipendenze (con pip -r requirements.txt)● carica le configurazioni per nginx e supervisor● carica lo script per far partire gunicorn● prepara il progetto django (syncdb, migrate, collectstatic)● prepara la cartella media (la crea e verifica i permessi)● riavvia supervisor

capire

Page 27: Fagungis

Denis Darii

FAGUNGIS

Recapitolando cosa abbiamo adesso?

capire

Page 28: Fagungis

Denis Darii

FAGUNGIScapire

visitatore

http://djangoday.it

Page 29: Fagungis

Denis Darii

FAGUNGIScapire

visitatore

http://djangoday.it

Porta 80

Risponde

NGINX

Page 30: Fagungis

Denis Darii

FAGUNGIScapire

visitatore

http://djangoday.it

media

Porta 80

Risponde

NGINX

non media

^/media/^/static/favicon.ico

Page 31: Fagungis

Denis Darii

FAGUNGIScapire

visitatore

http://djangoday.it

media

Porta 80

Risponde

NGINX

non media

^/media/^/static/favicon.ico

progettodjangoday

Page 32: Fagungis

Denis Darii

FAGUNGIScapire

visitatore

http://djangoday.it

media

Porta 80

Risponde

NGINX

non media

^/media/^/static/favicon.ico

progettodjangoday

Page 33: Fagungis

Denis Darii

FAGUNGIScapire

visitatore

http://djangoday.it

media

Porta 80

Risponde

NGINX

non media

^/media/^/static/favicon.ico

progettodjangoday

porta 8100GUNICORN

workers

proxy_passForward della richiesta

Page 34: Fagungis

Denis Darii

FAGUNGIScapire

visitatore

http://djangoday.it

media

Porta 80

Risponde

NGINX

non media

^/media/^/static/favicon.ico

progettodjangoday

porta 8100GUNICORN

workers

proxy_passForward della richiesta

SUPERVISOR

Page 35: Fagungis

Denis Darii

FAGUNGIS

Testare tutto!

Page 36: Fagungis

Denis Darii

FAGUNGIStestare

Fagungis Testprojecthttps://bitbucket.org/DNX/django_fagungis_testproject

Un seplice progetto Pinax

Page 37: Fagungis

Denis Darii

FAGUNGIS TESTPROJECT

$ hg clone https://bitbucket.org/DNX/django_fagungis_testproject

$ cd django_fagungis_testproject

# fabfile.py presente

$ virtualenv /tmp/testenv

$ source /tmp/testenv/bin/activate

(testenv)$ pip install -r requirements/project.txt

# cambiare env.nginx_server_name

# oppure aggiungere in /etc/hosts <server-ip> fagungis.test

$ fab fagungis_test setup

Ora aprite il vostro browser e navigate fino a http://fagungis.test

Page 38: Fagungis

Denis Darii

FAGUNGISFuturi Sviluppi

● Supporto https (SSL NGINX)

● Configurare sottodomini

● Scaricare i log + visualizzazione

● Monitoraggio remoto(real time, status, meminfo...)

● Migliorare il feedback

● Consigli su come risolvere eventuali errori

● Configurare il numero di worker_connections per gunicorn

● Supporto per Git-SVN-bzr

● Caricamento diretto dal vostro workspace (senza hg)

● Molto altro ancora...

Page 39: Fagungis

Denis Darii

FAGUNGISPer rimanere in contatto,

seguiteci su:

https://bitbucket.org/DNX/django-fagungis/

o

https://github.com/DNX/django-fagungis/

Il vostro contributo sarà sempre gradito!

Page 40: Fagungis

Denis Darii

FAGUNGISVorrei ringraziare in modo particolare:

Massimiliano Ravelli e Marco Cellarosi

Page 41: Fagungis

Denis Darii

E un ringraziamento davvero speciale...

Page 42: Fagungis

Denis Darii

Marco Beri

Grazie!

Page 43: Fagungis

Denis Darii

Grazie a tutti!