【问题标题】:Replicate Production Django Server + Postgres Database to Identical Linode server as a backup [closed]将生产 Django 服务器 + Postgres 数据库复制到相同的 Linode 服务器作为备份 [关闭]
【发布时间】:2020-09-09 01:46:49
【问题描述】:

我正在尝试制作托管在 Linode 上的生产服务器的相同副本。这是一个带有租户模型的 Python/Django/Postgres 实现。我对另一位已经离开的开发人员完成的实现非常陌生。

当前网站已上线 租户1.prodlive.info 租户2.prodlive.info

我执行的步骤是在 linode 仪表板中进行备份,然后使用该备份创建一个新的 linode 实例。登录后,我看到所有文件都已正确复制。

但是,我缺少配置某些细节的步骤,因为当我尝试访问时服务器显示 404 错误 租户1.backup.info 租户2.backup.info。

DNS 已正确设置为两者都有 A 记录。 服务器确实响应了主服务器 url www.backup.info

我唯一更改的文件是 \project_dir\django_project\middleware.py 并将域名和 IP 地址 prodlive.info 和 ip.prod.live.info 的提及更改为 backup.info 和 ip.back .up.info。

我可能缺少一些配置项,因此需要一些指针和最佳实践的帮助,以维护现场制作的精确副本。提前感谢您的所有建议和帮助。

这是我在访问子域 URL 时收到的确切消息。 找不到页面 (404) 请求方法:GET 请求网址:http://tenant1.backup.info/ 提出者:appname.views.index

【问题讨论】:

    标签: django postgresql django-models apache2


    【解决方案1】:

    Django-tenants 使用 PostgreSQL 架构将数据库划分为多个命名空间。

    鉴于您已手动恢复(以前)工作的 Linode 备份,您应该做的第一件事是获得对数据库的控制台访问权限并手动检查安装了哪些租户:

    $ ./manage.py dbshell
    postgres=# \d
    postgres=# select schema_name, domain from myapp_tenant cross join myapp_domain;
    
       name   |       domain    
    ----------+---------------------
     public   | www.backup.info
     tenant1  | tenant1.backup.info
     tenant2  | tenant2.backup.info
    

    如果一切顺利,您应该会看到上面列出的租户。访问http://tenant1.backup.info/时,django-tenants会在myapp_domain表中查找域名,找到对应的租户账号,将PostgreSQL的search_path设置为tenant1

    但是,由于您收到的是404,我怀疑数据库中的域名与您当前配置的域名不对应。您可以使用适当的 SQL 语句或简单地在 Python shell 中解决此问题:

    ./manage.py python
    >>> from myapp.models import Domain
    >>> Domain.objects.all()
    <QuerySet [<Domain domain="incorrect_domain.prodlive.info" Tenant="tenant1" is_primary="True">, <Domain domain="another_incorrect_domain.prodlive.info" Tenant="tenant2" is_primary="True">]>
    >>> d = Domain.objects.get(domain="incorrect_domain.prodlive.info")
    >>> d.domain = "tenant1.backup.info"
    >>> d.save()
    

    换句话说,使用数据库 shell 或 Python shell 确保出现在数据库中的域名是正确的。

    【讨论】:

    • 感谢 hedgie,尝试了以下建议,但遇到了一些其他问题。将报告进度。感谢您的帮助。
    猜你喜欢
    • 2015-04-09
    • 2016-08-25
    • 1970-01-01
    • 1970-01-01
    • 2011-06-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多