在同学的介绍下接了两个做公司网站的外单, 都只是简单的公司官网, 访问量不大对性能没有太大的要求. 经过一番调查发现 Django 用来做这种类型的网站很快速方便, 目前两个网站已经开发完毕并且部署到服务器上稳定运行了一段时间. 但是个人并没有运营任何 Python/Django 的经验, 部署方案都是自己参考网上一些文章摸索出来的. 部署方案是没什么复杂的, 但是很好奇正规 Django 项目的部署方案是什么样的? 怎么做负载均衡? 我现在的部署方案是否存在一些显而易见的错误或者不合适的地方? 想跟大家讨论一下. 总得来说就是想知道正规的线上 Django 项目都是怎么部署的.
下面是我正在使用的部署方案
- Nginx: 处理 http 请求, 静态文件让 Nginx 来处理, 动态请求交给后面的 uWSGI;
- uWSGI: uWSGI 相对于其他同类在性能和功能上好一些, 网上关于部署 Django 项目的文章基本上都是以 uWSGI 做例子;
- Supervisor: 进程管理工具, 这里的作用只是让 uWSGI 的进程挂掉或者重启系统之后能自动启动. 这里听到一个说法, SuperVisor 适用于开发环境, 正式环境用 pm2 更合适, pm2 是提供了一些监控的功能, 但是我没这个需求用 SuperVisor 也是没问题的吧?
- 发布版本: 手动到服务器上跑
git pull命令更新代码, 然后执行supervisor restart xxx, 这里用 Jenkins 是不是可以减少一些工作? - ~~Virtualenv: 暂时没用, 因为两个网站都使用相同的依赖包, 没有这个需求.~~
关于迁移 Django 项目网站
之前服务器并不是很稳定, 所以导致经常更换服务器. 迁移的步骤都是手动的, 首先迁移相关的源码和静态文件, 然后再迁移数据库, 有点繁琐. 这里用 Docker 是不是可以减少迁移的重复工作?