Download - Fagungis
![Page 2: Fagungis](https://reader036.vdocuments.mx/reader036/viewer/2022081412/54473afbafaf9f65178b47da/html5/thumbnails/2.jpg)
Denis Darii
¿ FAGUNGIS ?
Significato?
È un'altra parola africana?
![Page 3: Fagungis](https://reader036.vdocuments.mx/reader036/viewer/2022081412/54473afbafaf9f65178b47da/html5/thumbnails/3.jpg)
Denis Darii
FA+GU+NGI+S
è un acronimo
FAbric + GUnicorn + NGInx + Supervisor
![Page 4: Fagungis](https://reader036.vdocuments.mx/reader036/viewer/2022081412/54473afbafaf9f65178b47da/html5/thumbnails/4.jpg)
Denis Darii
FABRIC
Una libreria Python che semplifica l'uso di SSH per il deploy di applicazioni o compiti di sistema.
![Page 5: Fagungis](https://reader036.vdocuments.mx/reader036/viewer/2022081412/54473afbafaf9f65178b47da/html5/thumbnails/5.jpg)
Denis Darii
GUNICORN
'Green Unicorn' è un server WSGI/HTTP Python per UNIX.
![Page 6: Fagungis](https://reader036.vdocuments.mx/reader036/viewer/2022081412/54473afbafaf9f65178b47da/html5/thumbnails/6.jpg)
Denis Darii
NGINX
è un web server / proxy inverso leggero ad alte prestazioni
![Page 7: Fagungis](https://reader036.vdocuments.mx/reader036/viewer/2022081412/54473afbafaf9f65178b47da/html5/thumbnails/7.jpg)
Denis Darii
SUPERVISOR
Un sistema client/server che permette agli utenti di monitorare e controllare diversi processi su piattaforme UNIX-like
![Page 8: Fagungis](https://reader036.vdocuments.mx/reader036/viewer/2022081412/54473afbafaf9f65178b47da/html5/thumbnails/8.jpg)
Denis Darii
Ok!
Ma cos'è FAGUNGIS?
![Page 9: Fagungis](https://reader036.vdocuments.mx/reader036/viewer/2022081412/54473afbafaf9f65178b47da/html5/thumbnails/9.jpg)
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](https://reader036.vdocuments.mx/reader036/viewer/2022081412/54473afbafaf9f65178b47da/html5/thumbnails/10.jpg)
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](https://reader036.vdocuments.mx/reader036/viewer/2022081412/54473afbafaf9f65178b47da/html5/thumbnails/11.jpg)
Denis Darii
FAGUNGIS
Perché l'ho creato?
![Page 12: Fagungis](https://reader036.vdocuments.mx/reader036/viewer/2022081412/54473afbafaf9f65178b47da/html5/thumbnails/12.jpg)
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](https://reader036.vdocuments.mx/reader036/viewer/2022081412/54473afbafaf9f65178b47da/html5/thumbnails/13.jpg)
Denis Darii
installiamo
FAGUNGIS
![Page 14: Fagungis](https://reader036.vdocuments.mx/reader036/viewer/2022081412/54473afbafaf9f65178b47da/html5/thumbnails/14.jpg)
Denis Darii
FAGUNGIS
Basta un semplice:
$ pip install django-fagungis
* o consultate la documentazione per vie alternative
![Page 15: Fagungis](https://reader036.vdocuments.mx/reader036/viewer/2022081412/54473afbafaf9f65178b47da/html5/thumbnails/15.jpg)
Denis Darii
configuriamo
FAGUNGIS
![Page 16: Fagungis](https://reader036.vdocuments.mx/reader036/viewer/2022081412/54473afbafaf9f65178b47da/html5/thumbnails/16.jpg)
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](https://reader036.vdocuments.mx/reader036/viewer/2022081412/54473afbafaf9f65178b47da/html5/thumbnails/17.jpg)
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](https://reader036.vdocuments.mx/reader036/viewer/2022081412/54473afbafaf9f65178b47da/html5/thumbnails/18.jpg)
Denis Darii
FAGUNGIS
Salvare il file e la configurazione di FAGUNGIS è finità!
configuriamo
Ora siamo pronti a lanciare il primo SETUP.
![Page 19: Fagungis](https://reader036.vdocuments.mx/reader036/viewer/2022081412/54473afbafaf9f65178b47da/html5/thumbnails/19.jpg)
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](https://reader036.vdocuments.mx/reader036/viewer/2022081412/54473afbafaf9f65178b47da/html5/thumbnails/20.jpg)
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](https://reader036.vdocuments.mx/reader036/viewer/2022081412/54473afbafaf9f65178b47da/html5/thumbnails/21.jpg)
Denis Darii
FAGUNGIS
Alla fine dell'esecuzione:
...djangoday correctly started![13:48:44] Setup finished in 188 seconds
Done.
usare
![Page 22: Fagungis](https://reader036.vdocuments.mx/reader036/viewer/2022081412/54473afbafaf9f65178b47da/html5/thumbnails/22.jpg)
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](https://reader036.vdocuments.mx/reader036/viewer/2022081412/54473afbafaf9f65178b47da/html5/thumbnails/23.jpg)
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](https://reader036.vdocuments.mx/reader036/viewer/2022081412/54473afbafaf9f65178b47da/html5/thumbnails/24.jpg)
Denis Darii
FAGUNGIS
Si, bello!Ma cos'ha fatto?
capire
![Page 25: Fagungis](https://reader036.vdocuments.mx/reader036/viewer/2022081412/54473afbafaf9f65178b47da/html5/thumbnails/25.jpg)
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](https://reader036.vdocuments.mx/reader036/viewer/2022081412/54473afbafaf9f65178b47da/html5/thumbnails/26.jpg)
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](https://reader036.vdocuments.mx/reader036/viewer/2022081412/54473afbafaf9f65178b47da/html5/thumbnails/27.jpg)
Denis Darii
FAGUNGIS
Recapitolando cosa abbiamo adesso?
capire
![Page 28: Fagungis](https://reader036.vdocuments.mx/reader036/viewer/2022081412/54473afbafaf9f65178b47da/html5/thumbnails/28.jpg)
Denis Darii
FAGUNGIScapire
visitatore
http://djangoday.it
![Page 29: Fagungis](https://reader036.vdocuments.mx/reader036/viewer/2022081412/54473afbafaf9f65178b47da/html5/thumbnails/29.jpg)
Denis Darii
FAGUNGIScapire
visitatore
http://djangoday.it
Porta 80
Risponde
NGINX
![Page 30: Fagungis](https://reader036.vdocuments.mx/reader036/viewer/2022081412/54473afbafaf9f65178b47da/html5/thumbnails/30.jpg)
Denis Darii
FAGUNGIScapire
visitatore
http://djangoday.it
media
Porta 80
Risponde
NGINX
non media
^/media/^/static/favicon.ico
![Page 31: Fagungis](https://reader036.vdocuments.mx/reader036/viewer/2022081412/54473afbafaf9f65178b47da/html5/thumbnails/31.jpg)
Denis Darii
FAGUNGIScapire
visitatore
http://djangoday.it
media
Porta 80
Risponde
NGINX
non media
^/media/^/static/favicon.ico
progettodjangoday
![Page 32: Fagungis](https://reader036.vdocuments.mx/reader036/viewer/2022081412/54473afbafaf9f65178b47da/html5/thumbnails/32.jpg)
Denis Darii
FAGUNGIScapire
visitatore
http://djangoday.it
media
Porta 80
Risponde
NGINX
non media
^/media/^/static/favicon.ico
progettodjangoday
![Page 33: Fagungis](https://reader036.vdocuments.mx/reader036/viewer/2022081412/54473afbafaf9f65178b47da/html5/thumbnails/33.jpg)
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](https://reader036.vdocuments.mx/reader036/viewer/2022081412/54473afbafaf9f65178b47da/html5/thumbnails/34.jpg)
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](https://reader036.vdocuments.mx/reader036/viewer/2022081412/54473afbafaf9f65178b47da/html5/thumbnails/35.jpg)
Denis Darii
FAGUNGIS
Testare tutto!
![Page 36: Fagungis](https://reader036.vdocuments.mx/reader036/viewer/2022081412/54473afbafaf9f65178b47da/html5/thumbnails/36.jpg)
Denis Darii
FAGUNGIStestare
Fagungis Testprojecthttps://bitbucket.org/DNX/django_fagungis_testproject
Un seplice progetto Pinax
![Page 37: Fagungis](https://reader036.vdocuments.mx/reader036/viewer/2022081412/54473afbafaf9f65178b47da/html5/thumbnails/37.jpg)
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](https://reader036.vdocuments.mx/reader036/viewer/2022081412/54473afbafaf9f65178b47da/html5/thumbnails/38.jpg)
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](https://reader036.vdocuments.mx/reader036/viewer/2022081412/54473afbafaf9f65178b47da/html5/thumbnails/39.jpg)
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](https://reader036.vdocuments.mx/reader036/viewer/2022081412/54473afbafaf9f65178b47da/html5/thumbnails/40.jpg)
Denis Darii
FAGUNGISVorrei ringraziare in modo particolare:
Massimiliano Ravelli e Marco Cellarosi
![Page 41: Fagungis](https://reader036.vdocuments.mx/reader036/viewer/2022081412/54473afbafaf9f65178b47da/html5/thumbnails/41.jpg)
Denis Darii
E un ringraziamento davvero speciale...
![Page 42: Fagungis](https://reader036.vdocuments.mx/reader036/viewer/2022081412/54473afbafaf9f65178b47da/html5/thumbnails/42.jpg)
Denis Darii
Marco Beri
Grazie!
![Page 43: Fagungis](https://reader036.vdocuments.mx/reader036/viewer/2022081412/54473afbafaf9f65178b47da/html5/thumbnails/43.jpg)
Denis Darii
Grazie a tutti!