【问题标题】:Deploy admin interface on a different port在不同的端口上部署管理界面
【发布时间】:2012-02-10 04:21:35
【问题描述】:

是否可以在 django/apache 中以一种方式部署 django 应用程序的一部分,而以另一种方式部署部分。例如,假设我在 www.coolsite.com 上有普通用户的界面,但我想授予对 www.coolsite.com:1234 上的管理视图的访问权限。这在单个应用程序中可行吗?

另外,是否可以以不同的方式部署两个不同的 django 应用(假设我想在端口 80 上拥有一个“web”应用,在端口 8888 上拥有一个“api”应用)?

我知道我可以将应用程序移动到不同的项目,但我不会拆分它们,除非必须(它们共享设置和模型)

谢谢,

【问题讨论】:

    标签: django apache deployment virtualhost


    【解决方案1】:

    回答了你的问题。

    大多数时候我使用 3 个服务器设置 - 开发、登台、生产 - 但有时我必须在生产目录中进行调试(尽管我真的很讨厌这样做)。当我这样做时,我经常在 8000(或其他)运行 Django 开发服务器并连接到该服务器。

    我有一堆调试内容,只有在端口位于 8000..8002 时才会打印出来。从技术上讲,我正在运行一个完全不同的服务器,但它使用所有与生产相同的设置/数据库/代码。我只是在settings.py 中设置了一个 DEBUG_PRINT 值,用于测试适当的端口范围。

    这听起来会满足您的需要吗?

    更新:

    settings.py 你可以有这样的东西:

    ALLOW_ADMIN = '800' in HOST_PORT
    

    然后在urls.py 你可以这样做:

    if settings.ALLOW_ADMIN:
        urlpatterns += patterns((r'^admin/', include(admin.site.urls)))
    else:
        urlpatterns += patterns((r'^admin/.*', 'views.no_admin'))
    

    然后你可以在 views.no_admin 中对他们大喊大叫,或者给他们一个指向其他服务器的链接。

    【讨论】:

    • 好吧,在另一个端口上运行单独的服务器/实例可能是一种解决方案,但我必须弄清楚如何在一个端口上阻止管理员请求,而不是在另一个端口上。不过,我不是在谈论调试,而是在谈论持续的维护。我想让管理员访问我客户的 IT 人员。
    【解决方案2】:

    我能想到的一个简单方法是对多个项目的想法进行旋转。如果您的代码在源代码版本控制系统中(为什么不呢?),那么您可以轻松地创建相同分支或标签的单独拉取并以不同的方式服务每个,即一个通过端口 80,一个通过端口8000,一个在完全不同的域上,等等。

    您唯一需要做的就是创建特定于 pull 的 urls.py(这意味着您会在源版本控制系统中忽略它)或者可能找到一种方法来使用类似 local_urls.py 的东西(我自己从未尝试过) .在每个版本中,您可以打开/关闭您在该特定环境中想要或不想要的 urlpatterns。只想要端口 8000 上的管理员?仅将该 urlpattern 放在端口 8000 提供的拉取中。

    【讨论】:

      【解决方案3】:

      这是另一种不需要多个流程/项目的方法。像这样添加一个中间件组件:

      class ProtectAdminMiddleware(object):
          def process_request(self, request):
              if request.path.startswith("/admin") and request.META["SERVER_PORT"] != "1234":
                  raise Http404
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-01-10
        • 2022-01-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-04-17
        • 1970-01-01
        • 2020-01-29
        相关资源
        最近更新 更多