• Like
Django deploy
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

Django deploy

  • 618 views
Published

My talk about Django Deployment

My talk about Django Deployment

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
618
On SlideShare
0
From Embeds
0
Number of Embeds
1

Actions

Shares
Downloads
15
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⽇日星期⼆二