2. Agenda
• Django - wdrażanie projektów,
• Virtualenv i Buildout,
• Buildout i Django,
• Podsumowanie,
• Przydatne linki.
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. Django - wdrażanie projektów
Zależ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. 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. 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:
9. 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.
10. Wady virtualenv
• Nie rozwiązuje problemu ręcznej instalacji pakietów,
• Środowiska nie są przenośne,
• Środowiska nie są portowalne.
11. 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ć.
12. 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.
14. Buildout i Django
Istnieje 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.
23. Jak wdrożyć swój projekt
# buildout.cfg
[buildout]
parts = django moj_projekt
[django]
recipe = djangorecipe
version = 1.1
settings = settings
projectegg = moj_projekt
.
.
.
24. 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/ .
25. 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