Deployment
- Author
- Christian Theune
Zusammenfassung
http://openetherpad.org/pycamp-deployment2
PyCamp 2011-04-17, Deployment
Themensammlung
- Build management
- zc.buildout
- Deployment
- Fabric
- Supervisor
- Komponentenauswahl
- HTTP stack
- nginx, (varnish), haproxy, (apache), app-http-server
- wsgi
- Anwendung
- Python HTTP server
- cherrypy, gunicorn
- WSGI stack
- Paste?
- Python HTTP server
- HTTP stack
- "Wie Pyramid-Anwendungen laufen lassen?"
Fabric
- kann nicht parallelisieren
- hat Probleme mit sudo durchreichen
- gocept macht auch Tests auf dem Livesystem
- machen alles mit mercurial und machen hg pull, dann test, dann restart
- beeindruckendes fabfile bei osha
Supervisor
- kann Programme als demon starten und verwalten
- startet wieder
- killt, wenn der Speicher wegläuft
- triggert für logrotate
- @reboot cron-jobs wird von den Nutzern getriggert
- hat eine Shell, mit der man den Zustand überprüfen kann
- der Supervisor gehört dem Projekt
Stack bei gocept
nginx -> (varnish) -> haproxy -> (apache) -> app-http
Varnish
- varnish wird nicht mehr so häufig gebraucht
- bei großen Datenbeständen sehr sinnvoll
- long tail -- alles muss gleich bedient werden -- häufige Sachen cachen
- gab es in der nahen Vergangenheit einen ähnlichen Request, dann liefere den aus
- entlastet nicht die Leitung, sondern die server-app
standard-config ist rfc-konform ... leider sind das viele Anwendungen nicht
- Dokumentation ist nicht so gut
nginx
- modern
- pipelining
- keep-alive
- kann viele mit einem Prozess bedienen
- sehr einfach zu konfigurieren
- in vielen fällen besser als Apache (vor allem config)
- sehr einfaches Virtualhost-ing
haproxy
- hilft enorm beim debuggen
- sehr gute logfiles
- man definiert die Backends
- kann viele Kisten verwalten
- genial, um neue VMs hinzuzufügen
- wird bei gocept immer eingesetzt. auch fuer eine VM
Apache
- nur interessant, wenn man noch irgendwas mit CGI macht
- awstats z.B. braucht CGI
- braucht viel RAM (auch fürs Nichtstun)
- NGINX kann kein CGI wegen des Single-Process-Modells
App
- Wenn ihr nix besonderes braucht, nehmt den Python-internen wsgiref-Server
- 3 Zeilen, trivial, überall vorhanden
- Wenn das performancetechnisch in die Knie geht, habt ihr ein anderes Problem
- logging kommt auf stdout, kann mit supervisord wieder verheiratet werden
Misc
- server stack
- nginx
- haproxy: proxy für backend server
- varnish: cache proxy (früher mit squid)
- memcached
- httpd: anwendungs-spezifische http-server (backend)
- ZOPE WSGI Server
Python builtin WSGI Ref-Server
- typisches setup
- Frontend = nginx + varnish + haproxy
- Backend = nginx + haproxy + app-httpd
- nginx bietet einfache vhost-Konfiguration (Parameter!) und "säubert" die HTTP-Response...
- gocept: nutzen apache nur für CGIs! (zB awstat) (nginx kann wg single-process-model kein CGI)
- deployment helper
- fabric (ssh)