Your SlideShare is downloading. ×
0
Django deploy
Django deploy
Django deploy
Django deploy
Django deploy
Django deploy
Django deploy
Django deploy
Django deploy
Django deploy
Django deploy
Django deploy
Django deploy
Django deploy
Django deploy
Django deploy
Django deploy
Django deploy
Django deploy
Django deploy
Django deploy
Django deploy
Django deploy
Django deploy
Django deploy
Django deploy
Django deploy
Django deploy
Django deploy
Django deploy
Django deploy
Django deploy
Django deploy
Django deploy
Django deploy
Django deploy
Django deploy
Django deploy
Django deploy
Django deploy
Django deploy
Django deploy
Django deploy
Django deploy
Django deploy
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Django deploy

679

Published on

My talk about Django Deployment

My talk about Django Deployment

0 Comments
3 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
679
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
17
Comments
0
Likes
3
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Deploying Django Andy@Django Workshop 2013/8/6 1 13年8月6⽇日星期⼆二
  • 2. 好不容易把網站寫好 了,終於要放上去... 2 13年8月6⽇日星期⼆二
  • 3. 這還不簡單 3 13年8月6⽇日星期⼆二
  • 4. 4 13年8月6⽇日星期⼆二
  • 5. 4 • 買一台VPS 或實體機器 13年8月6⽇日星期⼆二
  • 6. 4 • 買一台VPS 或實體機器 • DNS 指好 13年8月6⽇日星期⼆二
  • 7. 4 • 買一台VPS 或實體機器 • DNS 指好 • python manage.py runserver 13年8月6⽇日星期⼆二
  • 8. 4 • 買一台VPS 或實體機器 • DNS 指好 • python manage.py runserver • 開啟 http://xxx.com:8000 13年8月6⽇日星期⼆二
  • 9. 5 打完收工!開始賺錢! 13年8月6⽇日星期⼆二
  • 10. 6 13年8月6⽇日星期⼆二
  • 11. 7 13年8月6⽇日星期⼆二
  • 12. 8 來!跟著我做! 13年8月6⽇日星期⼆二
  • 13. TURN OFF DEBUG 9 13年8月6⽇日星期⼆二
  • 14. 你不會想讓使用者看到這些 10 13年8月6⽇日星期⼆二
  • 15. 也不會想讓使用者看到這些.. 11 13年8月6⽇日星期⼆二
  • 16. IMPLEMENT 404 & 500 否則... 12 13年8月6⽇日星期⼆二
  • 17. 13 報告學長,完全沒有畫面 13年8月6⽇日星期⼆二
  • 18. SET UP ERROR ALERTS 14 13年8月6⽇日星期⼆二
  • 19. DON’T USE SQLITE 15 13年8月6⽇日星期⼆二
  • 20. Web Server 的選擇 16 • Apache 系 • 務必使用 mod_wsgi • 不過如果非不得已的話別自找麻煩... • nginx 系 • nginx + gunicorn • nginx + uwsgi 13年8月6⽇日星期⼆二
  • 21. nginx + gunicorn 17 13年8月6⽇日星期⼆二
  • 22. gunicorn 18 • http://gunicorn.org/ • Gunicorn 'Green Unicorn' is a Python WSGI HTTP Server for UNIX. It's a pre- fork worker model ported • 總之就是一個效能很好的 wsgi web server 13年8月6⽇日星期⼆二
  • 23. • pip install gunicorn • gunicorn project.wsgi:application -b 0.0.0.0:$PORT -w $NUM_WORKERS 19 13年8月6⽇日星期⼆二
  • 24. 20 #!/bin/bash set -e LOGFILE=/home/ubuntu/project/log/gunicorn.log LOGDIR=$(dirname $LOGFILE) NUM_WORKERS=5 USER=ubuntu GROUP=ubuntu cd /home/ubuntu/project source /home/ubuntu/.virtualenvs/project/bin/activate test -d $LOGDIR || mkdir -p $LOGDIR exec /home/ubuntu/.virtualenvs/project/bin/home/ubuntu/.virtualenvs/project/bin/ gunicorn_django -w $NUM_WORKERS --user=$USER --group=$GROUP --log-level=debug --log-file=$LOGFILE 2>>$LOGFILE An example of run.sh 13年8月6⽇日星期⼆二
  • 25. 21 用 supervisor 來管 process [program:project] directory = /home/ubuntu/project/ user = ubuntu command = /home/ubuntu/project/run.sh stdout_logfile = /home/ubuntu/project/log/logfile_std.log stderr_logfile = /home/ubuntu/project/log/logfile_err.log 13年8月6⽇日星期⼆二
  • 26. Usage • sudo supervisorctl update • sudo supervisorctl status project • sudo supervisorctl stop project • sudo supervisorctl start project • sudo supervisorctl restart project 22 13年8月6⽇日星期⼆二
  • 27. NGINX 23 13年8月6⽇日星期⼆二
  • 28. nginx 是啥... 24 • 基本上是個 light-weight web server • Serve static/media files • 記得 python manage.py collectstatic • 當做 Reversed proxy 用 13年8月6⽇日星期⼆二
  • 29. nginx.conf 25 server { listen 80; ... location /media/ { autoindex off ; root /path/to/your/media/file ; } location /static/ { autoindex off; root /path/to/your/static/file ; } location / { .... proxy_pass http://0.0.0.0:8000/; } } 13年8月6⽇日星期⼆二
  • 30. 恭喜!結束了... 26 13年8月6⽇日星期⼆二
  • 31. 不過是不是漏了什麼 27 13年8月6⽇日星期⼆二
  • 32. 網站是會更新的! 28 13年8月6⽇日星期⼆二
  • 33. 29 • 重新打包上傳一次 • use git or mercurial • git pull 搞定一切 • 不過還是得要 ssh 登入之後做一堆事情 13年8月6⽇日星期⼆二
  • 34. 30 USE fabric! 13年8月6⽇日星期⼆二
  • 35. SCALING 31 13年8月6⽇日星期⼆二
  • 36. 32 13年8月6⽇日星期⼆二
  • 37. 32 13年8月6⽇日星期⼆二
  • 38. 32 13年8月6⽇日星期⼆二
  • 39. 不過其實你可以不用 那麼辛苦 33 13年8月6⽇日星期⼆二
  • 40. 34 • Media Server • S3 • CDN • Database Server • Amazon RDS • Google Cloud SQL • Heroku Postgresql 13年8月6⽇日星期⼆二
  • 41. • Heroku • Openshift • dotCloud • AWS Elastic Beanstalk 35 如果你有 $$,其實你真的不用 那麼辛苦 13年8月6⽇日星期⼆二
  • 42. Django deploy 有點麻 煩,剛開始學習用 PaaS 就好 36 13年8月6⽇日星期⼆二
  • 43. 如果你 $$ 夠多,那麼 或許你也用 PaaS 就好 37 13年8月6⽇日星期⼆二
  • 44. Reference • http://michal.karzynski.pl/blog/2013/06/09/ django-nginx-gunicorn-virtualenv- supervisor/ • https://devcenter.heroku.com/articles/ django • http://www.google.com 38 13年8月6⽇日星期⼆二
  • 45. 一些好用的東西 • Sentry https://getsentry.com/ • Newrelic http://newrelic.com/ • Papertrail https://papertrailapp.com/ • Amazon SES http://aws.amazon.com/ses/ 39 13年8月6⽇日星期⼆二

×