Django 项目部署方案的讨论和疑问

2017-01-14 15:05:08 +08:00
 97world

在同学的介绍下接了两个做公司网站的外单, 都只是简单的公司官网, 访问量不大对性能没有太大的要求. 经过一番调查发现 Django 用来做这种类型的网站很快速方便, 目前两个网站已经开发完毕并且部署到服务器上稳定运行了一段时间. 但是个人并没有运营任何 Python/Django 的经验, 部署方案都是自己参考网上一些文章摸索出来的. 部署方案是没什么复杂的, 但是很好奇正规 Django 项目的部署方案是什么样的? 怎么做负载均衡? 我现在的部署方案是否存在一些显而易见的错误或者不合适的地方? 想跟大家讨论一下. 总得来说就是想知道正规的线上 Django 项目都是怎么部署的.

下面是我正在使用的部署方案

关于迁移 Django 项目网站

之前服务器并不是很稳定, 所以导致经常更换服务器. 迁移的步骤都是手动的, 首先迁移相关的源码和静态文件, 然后再迁移数据库, 有点繁琐. 这里用 Docker 是不是可以减少迁移的重复工作?

3516 次点击
所在节点    Python
11 条回复
neoblackcap
2017-01-14 15:35:18 +08:00
uwsgi 并没有特别快, bjoern + gunicron 也很快,关键是 gunicron 的配置简单多了。使用 uwsgi 的前提是你用了很多 uwsgi stack 。若是没有特别要求,我觉得 gunicron 更好。
lzjun
2017-01-14 15:42:04 +08:00
JasperYanky
2017-01-14 16:14:08 +08:00
每次都忍不住发一遍 http://michal.karzynski.pl/blog/2013/06/09/django-nginx-gunicorn-virtualenv-supervisor/ 另外 可以在 git hooks post-update 里面写脚本 git check 和重启 supervisor
akinoniku
2017-01-14 16:23:02 +08:00
把你的程序单独放到 docker container 里面运行设成 restart always 就好,不需要 supervisor 和 virtualenv 。

把 nginx 和 db 一类的都做成另外的 container ,最后用 docker-compose 设定关系。

Jenkins 用来跑测试和 build 和 push docker image
maikcn
2017-01-14 17:40:26 +08:00
我们是 django + uwsgi + nginx 一个 docker 容器, db 另一个容器,用 compose 来 run

代码是将 容器 1 中的一个目录 如 /codebase 做成一个 Volume ,更新代码 restart 就好了
gamexg
2017-01-14 20:15:39 +08:00
@akinoniku docker +1
这种小站点,直接每个 django 网站一个 docker ,里面跑 gunicron 。建议每个站点一个 docker-compose 。
另外对外可以用 https://github.com/jwilder/nginx-proxy 做反代,能够自动扫面运行中的 docker 容器自动反代。
每上线一个新站点直接启动一个新的 docker 容器,在 docker 容器环境变量里面注明域名,是否需要自动申请 https 证书, nginx-proxy 会自动反代及申请证书。
chenqh
2017-01-14 22:16:29 +08:00
@akinoniku 就几台服务器也需要用 docker 吗?
chenqh
2017-01-14 22:20:49 +08:00
@maikcn 那 celery 那种 task 怎么办,crontab 怎么办,怎么调试呢
akinoniku
2017-01-15 05:28:24 +08:00
@chenqh 就一台服务器也可以用 docker
fengclient
2017-01-15 13:55:03 +08:00
总体差不多 另外还用了 fabric
maikcn
2017-01-16 09:34:56 +08:00
@chenqh 我们的 task 是在 docker 外做的, django 只提供入口...

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/334578

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX