【问题标题】:Django migrate works but doesn't reflect on live siteDjango migrate 工作,但不反映在现场
【发布时间】:2021-05-18 15:26:35
【问题描述】:

我对一个项目进行了一些更新:添加 1 个管理模型,添加 1 个模板

我正在使用鹡鸰。我将更新拉到我的服务器,运行迁移,取得了成功。我重启了nginx和gunicorn,我什至重启了服务器。

当我去 wagtail 管理员时,我的 adminmodel 丢失了(它存在于本地)。当我去创建一个新页面时,我的模板是可用的,但是当我选择它时,我会被带到一个 wagtail 404 页面。

Ubuntu 20.04
ngnix
gunicorn
django/wagtail
digital ocean vpc
digital ocean postgres database cluster

网站正常工作,只有一个模板可用,我无法选择,迁移的模型不可用,也没有显示在管理员中。我的本地版本运行良好,没有任何区别。似乎服务器正在更新而不是更新。我不明白。运行 makemigrations 或 migrate 不会返回任何更改。即使在特定应用程序上运行。我需要做些什么来重新构建数据库吗?

【问题讨论】:

  • @JSum- 进行更改后您是否重新启动了 gunicorn 服务器?

标签: django postgresql ubuntu digital-ocean migrate


【解决方案1】:

听着,这看起来像是 Nginx 的缓存问题。尝试清除缓存。

【讨论】:

    【解决方案2】:

    我有 2 个设置文件:dev.py、production.py

    dev.py 连接到 sqlite3 数据库,生产连接到 digitalocean postgres 集群。

    python manage.py 自动使用 dev.py(至少在我的设置中),所以我的迁移工作正常,但它们针对的是我在服务器上拥有的 sqlite.db 的旧副本,或者可能像它一样创建了一个当一个不存在时。无论哪种方式,实时站点都在 production.py 设置上运行,这就是进行更改但未反映的原因。

    拥有 production.py 文件时运行迁移的正确方法类似于:

    python manage.py migrate --settings=<settings app>.<settings folder>.production
    

    我还要补充一点,我发现每次更新 CSS 样式表时都需要收集静态数据。这有点乏味,也许我错过了自动化步骤,但考虑到这种情况,为了安全起见,我这样运行:

    python manage.py collectstatic --settings=<settings app>.<settings folder>.production
    

    它不会导致任何问题并且可以正常工作,因此我使用 --settings 标志以确保安全。

    git pull
    python manage.py migrate --settings=app.settings.production
    python manage.py collectstatic --settings=app.settings.production
    sudo systemctl restart ngix
    sudo systemctl restart gunicorn
    

    我不知道重启 ngix 是必要的,除非它通过我的静态文件更新解决了一些问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-01-19
      • 1970-01-01
      • 2021-10-21
      • 1970-01-01
      • 2017-03-19
      • 2013-07-27
      • 1970-01-01
      相关资源
      最近更新 更多