Django 部署为 SaaS(basecamp 风格)

发布于 2024-08-02 13:45:04 字数 337 浏览 7 评论 0 原文

我几乎完成了 Django 项目的开发(带有一些可插入应用程序)。

我想以 SaaS 的形式提供这个项目(类似于 Basecamp)。

即:project1.mysaas.com、project2.mysaas.com 等

我寻求您的专业知识来向我展示路径。

我想到的方法是:

  • 1 使用 Sites 来定义站点特定的 settings.py
  • 2 使用中间件来检测请求,然后相应地设置设置
  • 3 为每个站点创建 Django 项目(采用可插入应用程序)

谢谢。

顺便说一句,我是个新手。

I am almost done developing a Django project (with a few pluggable apps).

I want to offer this project as a SaaS (something like basecamp).

i.e: project1.mysaas.com , project2.mysaas.com etc

I seek your expertise in showing me the path.

Ways I have thought of are:

  • 1 use Sites to define site specific settings.py
  • 2 a middleware to detect request then set settings accordingly
  • 3 create Django project (taking in pluggable apps) for each site

Thanks.

btw, i am a total newbie.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

じ违心 2024-08-09 13:45:04

您的要求一点也不明确,但我假设您没有做任何棘手的事情,并且还假设您的“project1”、“project2”是不需要任何特殊品牌的客户名称。

首先,关于您的想法:

  1. 您可能不需要使用站点框架,除非每个站点的品牌不同。站点框架很好地完成了它的设计任务,即呈现一组公共数据的不同视图。

  2. 这可以工作,但在我看来可能不是最好的方法。

  3. 这是无法管理的。

现在,这是一个非常困难的话题,因为有很多问题。一个不错的阅读起点是 高可扩展性博客,与您特别相关的帖子是 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:

  1. 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.

  2. This would work but probably is not the best approach IMO.

  3. 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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文