Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Presentazione Django Fagungis

Presentazione Django Fagungis

The presentation of django-fagungis at DjangoDay in italian.

Avatar for Denis Darii

Denis Darii

June 07, 2012
Tweet

Other Decks in Programming

Transcript

  1. Denis Darii FABRIC Una libreria Python che semplifica l'uso di

    SSH per il deploy di applicazioni o compiti di sistema.
  2. Denis Darii SUPERVISOR Un sistema client/server che permette agli utenti

    di monitorare e controllare diversi processi su piattaforme UNIX-like
  3. Denis Darii FAGUNGIS Un insieme di “task” FABRIC che hanno

    il compito di installare e configurare un intero ambiente per il vostro progetto DJANGO.
  4. 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.
  5. Denis Darii FAGUNGIS Diversi 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
  6. Denis Darii FAGUNGIS Basta un semplice: $ pip install django-fagungis

    * o consultate la documentazione per vie alternative
  7. 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
  8. 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
  9. Denis Darii FAGUNGIS Salvare il file e la configurazione di

    FAGUNGIS è finità! configuriamo Ora siamo pronti a lanciare il primo SETUP.
  10. 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
  11. 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
  12. Denis Darii FAGUNGIS Alla fine dell'esecuzione: ... djangoday correctly started!

    [13:48:44] Setup finished in 188 seconds Done. usare
  13. Denis Darii FAGUNGIS Da adesso in poi, per portare in

    produzione le modifiche al vostro progetto, basterà un semplice: $ fab djangoday deploy usare
  14. Denis Darii FAGUNGIS Ora aprire un browser e accedere a

    http://djangoday.it A questo punto, il nostro sito è on line! usare
  15. 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
  16. 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
  17. Denis Darii FAGUNGIS capire visitatore http://djangoday.it media Porta 80 Risponde

    NGINX non media ^/media/ ^/static/ favicon.ico progetto djangoday
  18. Denis Darii FAGUNGIS capire visitatore http://djangoday.it media Porta 80 Risponde

    NGINX non media ^/media/ ^/static/ favicon.ico progetto djangoday
  19. Denis Darii FAGUNGIS capire visitatore http://djangoday.it media Porta 80 Risponde

    NGINX non media ^/media/ ^/static/ favicon.ico progetto djangoday porta 8100 GUNICORN workers proxy_pass Forward della richiesta
  20. Denis Darii FAGUNGIS capire visitatore http://djangoday.it media Porta 80 Risponde

    NGINX non media ^/media/ ^/static/ favicon.ico progetto djangoday porta 8100 GUNICORN workers proxy_pass Forward della richiesta SUPERVISOR
  21. 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
  22. Denis Darii FAGUNGIS Futuri 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...
  23. Denis Darii FAGUNGIS Per rimanere in contatto, seguiteci su: https://bitbucket.org/DNX/django-fagungis/

    o https://github.com/DNX/django-fagungis/ Il vostro contributo sarà sempre gradito!