[英]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.