Zastosowanie buildout przy wdrażaniu projektów opartych o framework Django

1,525 views

Published on

Published in: Design
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
1,525
On SlideShare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
5
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Zastosowanie buildout przy wdrażaniu projektów opartych o framework Django

  1. 1. Zastosowanie buildout przywdrażaniu projektów opartych o framework Django Dominik Szopa http://dominno.pl PyCon PL 2009 16-18 październik 2009
  2. 2. Agenda • Django - wdrażanie projektów, • Virtualenv i Buildout, • Buildout i Django, • Podsumowanie, • Przydatne linki.   
  3. 3. Django - wdrażanie projektów Każdy projekt składa się z wielu zależności:   • Django, • Aplikacje zewnętrzne(np. django-tagging), • Biblioteki(np. docutils, beautyfullsoap).    
  4. 4. Django - wdrażanie projektówZależności mogą być instalowane z wielu źródeł:• Systemu kontroli wersji,• Używając setup.py,• Używając setuptools i easy_install.
  5. 5. Django - wdrażanie projektów Wielokrotna instalacja i konfiguracja na: • Komputerach developerów, • Serwerze, • Wszystkich innych maszynach które mają coś wspólnego z developmentem.  
  6. 6. Django - wdrażanie projektów Złe praktyki:   • Instalacja zależności w systemowym site-packages, • Umieszczanie projektu wraz z pakietami zależnymi w katalogach, które nie są zdefiniowane w PYTHONPATH.   Mogą prowadzić w rezultacie do:
  7. 7. Rozwiązanie ? Virtualenv i Buildout
  8. 8. Co to jest virtualenv ?• Tworzy odseparowane, $ virtualenv moj_env niezależne środowisko $ source bin/activate  Pythona, (moj_env) $ cd jakas_biblioteka• Odizolowuje pakiety (moj_env) $ setup.py install od systemowego site- (moj_env) $ deactivate packages.  
  9. 9. Wady virtualenv• Nie rozwiązuje problemu ręcznej instalacji pakietów,• Środowiska nie są przenośne,• Środowiska nie są portowalne.
  10. 10. Co to jest buildout ?• Automatyzuje instalacje zależności projektu,• Projekt składa się z poszczególnych składników, definiowanych w pliku konfiguracyjnym,• Do konfiguracji oraz instalacji określonego składnika, używane są rozszerzenia zwane "recipes" (przepisy),• Każdy składnik zawiera informacje skąd pobrać dane oraz gdzie je zapisać.
  11. 11. Istnieją przepisy które: • Pobierają pakiety i instalują je w formie eggów, • Pobierają źródła z systemu kontroli wersji, • Tworzą symlinki, • Wykonują polecenia systemowe, • Pobierają i kompilują pakiety binarne, • Więcej na http://pypi.python.org, 160+ dostępnych. 
  12. 12. Buildout - przykład $ buildout[buildout]   parts = part1 part2          PyPi               moje repo  [part1]    recipe = moj_przepis  [part2]     recipe = moj_inny_przepis                  mój desktop $ python >>> import part1 >>> import part2
  13. 13. Buildout i DjangoIstnieje przepis "djangorecipe" dla Django który:• pobiera i instaluje Django w wskazanej wersji,• tworzy skrypt-nakładkę na manage.py w którym są wpisane ścieżki do wszystkich zainstalowanych zależności przez Buildout.
  14. 14. Buildout i Django - w szczegółach
  15. 15. Co będzie potrzebne• Python,• virtualenv,• bootstrap.py  z http://svn.zope.org/*checkout*/zc.buildout/trunk/bootstrap/b ootstrap.py,• terminal.
  16. 16. Tworzenie środowiska$ virtualenv moje_srodowisko –-no-site-packages $ cd moje_srodowisko $ source bin/activate (moje_srodowisko)~/moje_srodowisko$  
  17. 17. Wdrażanie Django z Buildout$ mkdir app $ cd app $ wget http://svn.zope.org/*checkout*/zc.buildout/trunk/bootstra p/bootstrap.py $ touch buildout.cfg
  18. 18. Konfiguracja Buildout dla Django # buildout.cfg  [buildout]  parts = django  [django] recipe = djangorecipe version = 1.1        
  19. 19. Rozruch Buildouta$ python bootstrap.py    Creating directory moje_srodowisko/app/bin.    Creating directory moje_srodowisko/app/parts.    Creating directory moje_srodowisko/app/eggs.    Creating directory moje_srodowisko/app/develop-eggs.    Generated script moje_srodowisko/app/bin/buildout.        
  20. 20. Instalacja Django$ bin/buildout     Getting distribution for djangorecipe.     Got djangorecipe 0.19.1.     Getting distribution for zc.recipe.egg.     Got zc.recipe.egg 1.2.2.     Installing django.     django: Downloading Django from: http://www.djangoproject.com/download/1.0/tarball/     Generated script moje_srodowisko/app/bin/django.   
  21. 21. Uruchomienie aplikacji• bin/django runserver #!/moje_srodowisko/bin/python• bin/django syncdb import sys• itd. sys.path[0:0] = [   /moje_srodowisko/app/parts/moj_pakiet1,   /moje_srodowisko/app/parts/moj_pakiet2,  ] import djangorecipe.manage if __name__ == __main__:     djangorecipe.manage.main(moj_projekt.settings)
  22. 22. Jak wdrożyć swój projekt# buildout.cfg [buildout] parts = django moj_projekt [django]recipe = djangorecipeversion = 1.1    settings = settingsprojectegg = moj_projekt .. .
  23. 23. Jak wdrożyć swój projekt# buildout.cfg.. eggs =         south         django-registration extra-paths =         ${buildout:parts-directory}   [moj_projekt] recipe = iw.recipe.subversion urls =     http://moje_repo.com/trunk/moj_projekt_z_svn/ .
  24. 24. Jak wdrożyć swój projekt$ bin/buildout         .    .     Installing moj_projekt.     A    moje_srodowisko/app/parts/moj_projekt/settings.py     .     .     Checked out revision 1.     Creating archive: .-dev.tar.gz
  25. 25. mod_wsgi ? fcgi ?djangorecipe umożliwia generowanie skryptów WSGI oraz FCGI •  opcja: wsgi = true lub, ./bin/django.wsgi •  opcja: fcgi = true.  ./bin/django.fcgi  
  26. 26. Podsumowanie• Buildout automatyzuje wdrożenia projektu,• Virtualenv odizolowuje pakiety od systemowego site- packages,• djangorecipe umożliwia generowanie skryptów rozruchowych dla WSGI i FCGI,
  27. 27. Przydatne linki• http://www.buildout.org • http://pypi.python.org/pypi/zc.buildout • http://pypi.python.org/pypi/djangorecipe/• http://www.sixfeetup.com/swag/buildout-quick-reference-card• http://www.doughellmann.com/projects/virtualenvwrapper/
  28. 28. Dziękuję za uwagę!
  29. 29. Bibliografia - media• http://farm4.static.flickr.com/3237/2796908072_63dbb1e52d_o_d.jpg• http://farm3.static.flickr.com/2599/3920111676_b69ce1138d_b_d.jpg • http://farm1.static.flickr.com/6/86227485_2bd48ad7f6_o_d.jpg• ikony: http://graffletopia.com/stencils/144

×