繁体   English   中英

Django 迁移工作,但不反映在现场

[英]Django migrate works but doesn't reflect on live site

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

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

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

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

该站点正常工作,只有一个模板可用我不能 select 和已迁移的 Model 不可用且未显示在管理员中。 我的本地版本运行良好,没有任何差异。 似乎服务器正在更新而不是更新。 我不明白。 运行 makemigrations 或 migrate 不会返回任何更改。 即使在特定应用程序上运行。 我需要做些什么来重新启动数据库吗?

听它看起来像 Nginx 的缓存问题。 尝试清除缓存。

我有 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 是必要的,除非它解决了我的 static 文件更新我相信的问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM