Unbit djangoday 20120419

2,720 views

Published on

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
2,720
On SlideShare
0
From Embeds
0
Number of Embeds
40
Actions
Shares
0
Downloads
13
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Unbit djangoday 20120419

  1. Production-grade Servers for Django DjangoDay 2012 Roberto De Ioris (Unbit)giovedì 26 aprile 12
  2. python manage.py runserver Why not ?giovedì 26 aprile 12
  3. Availability crash happens. always.giovedì 26 aprile 12
  4. Concurrency there is no “premature optimization” thing in sysadmins worldgiovedì 26 aprile 12
  5. Users They ignore you when things go well. They hate you when things go wrong. They want to kill you a bunch of minutes later...giovedì 26 aprile 12
  6. Servers are a cost ...and can became the higher cost very easilygiovedì 26 aprile 12
  7. The manager want to scale ...even if he does not know what it meansgiovedì 26 aprile 12
  8. Security be ready for the truthgiovedì 26 aprile 12
  9. WSGI one standard to rule them all... def application(env, start_response): start_response(‘200 OK’, [(‘Content-Type’,‘text/html’)]) return “Hello World”giovedì 26 aprile 12
  10. Proxy servers and static contents do not expose your app to the world. NEVER do not serve static files with Django. NEVERgiovedì 26 aprile 12
  11. app world webserver app appgiovedì 26 aprile 12
  12. Once upon a time... Flup and mod_pythongiovedì 26 aprile 12
  13. Flup FastCGI, SCGI, AJP pure python, preforking-multithreadgiovedì 26 aprile 12
  14. mod_python was a bad idea ?giovedì 26 aprile 12
  15. The new generation mod_wsgi gunicorn uWSGIgiovedì 26 aprile 12
  16. mod_wsgi apache module (in C) 2 modes: embedded and daemon preforking and multithread mature solid Windows supportgiovedì 26 aprile 12
  17. # mod_wsgi config WSGIScriptAlias / /path/to/mysite.com/mysite/wsgi.py WSGIPythonPath /path/to/mysite.com WSGIDaemonProcess pippo processes=2 threads=15 <Directory /path/to/mysite.com/mysite> <Files wsgi.py> Order deny,allow Allow from all </Files> </Directory>giovedì 26 aprile 12
  18. gunicorn pure python do one thing do it well preforking (+async extensions) speaks http easy (maybe the easiest tool ever written)giovedì 26 aprile 12
  19. PYTHONPATH=/var/www gunicorn --workers 2 --bind 127.0.0.1:8000 pippo.wsgi:application # or add gunicorn to INSTALLED_APPS # it will bind to port 8000 python manage.py run_gunicorngiovedì 26 aprile 12
  20. uWSGI pure C preforking + multithread + async + plugins + blah blah feature rich (a blast beat of options) speaks uwsgi,FastCGI,Mongrel2-zeromq,HTTP and maybe Klingon fat-beardy-braces_equipped sysadmin friendly high learning curve made only for making money Mr Wolf would wear a uWSGI t-shirtgiovedì 26 aprile 12
  21. uwsgi --http-socket 127.0.0.1:8000 --wsgi-file /var/ww/pippo/wsgi.py --processes 2 --threads 15 # or [uwsgi] http-socket = 128.0.0.1:8000 wsgi-file = /var/ww/pippo/wsgi.py processes = 2 threads = 15 # or <uwsgi> <http-socket> 128.0.0.1:8000</http-socket> <wsgi-file> /var/ww/pippo/wsgi.py</wsgi-file> <processes>2</processes> <threads>15</threads> </uwsgi> #or .....giovedì 26 aprile 12
  22. before you ask... speed is not a problemgiovedì 26 aprile 12
  23. Which One? no easy answers...but...giovedì 26 aprile 12
  24. DO NOT LOOK AT BENCHMARKS ...otherwise you will directly go with uWSGI...giovedì 26 aprile 12
  25. Newbie ? gunicorn is the easiest choicegiovedì 26 aprile 12
  26. need full apache integration ? mod_wsgi FTWgiovedì 26 aprile 12
  27. want a full stack ? uWSGI has no competitorsgiovedì 26 aprile 12
  28. on the cloud ? gunicorn and uWSGI all over the placegiovedì 26 aprile 12
  29. still confused ? gunicorn uWSGI mod_wsgigiovedì 26 aprile 12
  30. other choices ? a lot... Tornado Passenger fapws3 ...giovedì 26 aprile 12
  31. Questions ?giovedì 26 aprile 12

×