Django 部署为 SaaS(basecamp 风格)
我几乎完成了 Django 项目的开发(带有一些可插入应用程序)。
我想以 SaaS 的形式提供这个项目(类似于 Basecamp)。
即:project1.mysaas.com、project2.mysaas.com 等
我寻求您的专业知识来向我展示路径。
我想到的方法是:
- 1 使用 Sites 来定义站点特定的 settings.py
- 2 使用中间件来检测请求,然后相应地设置设置
- 3 为每个站点创建 Django 项目(采用可插入应用程序)
谢谢。
顺便说一句,我是个新手。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您的要求一点也不明确,但我假设您没有做任何棘手的事情,并且还假设您的“project1”、“project2”是不需要任何特殊品牌的客户名称。
首先,关于您的想法:
您可能不需要使用站点框架,除非每个站点的品牌不同。站点框架很好地完成了它的设计任务,即呈现一组公共数据的不同视图。
这可以工作,但在我看来可能不是最好的方法。
这是无法管理的。
现在,这是一个非常困难的话题,因为有很多问题。一个不错的阅读起点是 高可扩展性博客,与您特别相关的帖子是 37signals 架构。
最后,这是我在小型 SaaS 应用程序中所做的事情(不需要极高的可扩展性):
使用站点框架(因为用户页面将由合作伙伴/经销商进行品牌标记,并且每个合作伙伴都有一个唯一的登录页面)
使用 mod_wsgi 最大限度地减少所有 Django 实例的资源使用。
我没有在每个视图的顶部放置一个通用代码来标识用户的公司,而不是中间件。我需要这个来实现视图中的逻辑,这就是为什么我认为它在中间件中没有用的原因。
Your requirements aren't at all clear but I'll assume you aren't doing anything tricky and also assume your "project1", "project2" are customer names which won't need any special branding.
First, about your ideas:
You probably won't need to use the sites framework unless each site is branded differently. The site framework works well doing what it was designed to do, which is present different views of a common set of data.
This would work but probably is not the best approach IMO.
This is unmanageable.
Now, this is a really hard topic because there are so many issues. A decent place to start reading is the High Scalability Blog and especially relevant for you would be the post on 37signals Architecture.
Finally, here's what I am doing in a small SaaS app (that doesn't need extreme scalability):
Use the sites framework (because user pages will be branded by the partner/reseller and each partner has a unique login page)
Use mod_wsgi to minimize resource usage from all the Django instances.
Instead of middleware I put a common code at the top of every view that identifies the company of the user. I need this for logic in the views which is why I don't think it's useful in middleware.