Django 迁移有效但不反映在现场
Django migrate works but doesn't reflect on live site
我对项目做了一些更新:添加 1 个管理模型,添加 1 个模板
我正在使用鹡鸰。我将更新拉到我的服务器,运行 迁移,取得了成功。我重启了 nginx 和 gunicorn,我什至重启了服务器。
当我转到 wagtail 管理员时,我的管理员模型丢失了(它存在于本地)。当我去创建一个新页面时,我的模板可用,但是当我 select 它时,我被带到了 wagtail 404 页面。
Ubuntu 20.04
ngnix
gunicorn
django/wagtail
digital ocean vpc
digital ocean postgres database cluster
网站工作正常,只有一个模板可用,我不能 select,迁移的模型不可用,也没有显示在管理员中。我的本地版本运行良好,没有任何差异。看起来服务器既在更新又不在更新。我不明白。 运行 makemigrations 或 migrate returns 没有变化。即使在特定应用程序上 运行。我需要做些什么来重新启动数据库吗?
听着,这看起来像是 Nginx 的缓存问题。尝试清除缓存。
我有 2 个设置文件:dev.py、production.py
dev.py 连接到 sqlite3 数据库,生产连接到 digitalocean postgres 集群。
python manage.py 自动使用 dev.py(至少在我的设置中)所以我的迁移工作正常,但它们针对的是 sqlite.db I 的旧副本已经在服务器上,或者可能创建了一个,就像在一个不存在时所做的那样。无论哪种方式,实时站点 运行 都在 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 是必要的,但我相信它解决了我更新静态文件的问题。
我对项目做了一些更新:添加 1 个管理模型,添加 1 个模板
我正在使用鹡鸰。我将更新拉到我的服务器,运行 迁移,取得了成功。我重启了 nginx 和 gunicorn,我什至重启了服务器。
当我转到 wagtail 管理员时,我的管理员模型丢失了(它存在于本地)。当我去创建一个新页面时,我的模板可用,但是当我 select 它时,我被带到了 wagtail 404 页面。
Ubuntu 20.04
ngnix
gunicorn
django/wagtail
digital ocean vpc
digital ocean postgres database cluster
网站工作正常,只有一个模板可用,我不能 select,迁移的模型不可用,也没有显示在管理员中。我的本地版本运行良好,没有任何差异。看起来服务器既在更新又不在更新。我不明白。 运行 makemigrations 或 migrate returns 没有变化。即使在特定应用程序上 运行。我需要做些什么来重新启动数据库吗?
听着,这看起来像是 Nginx 的缓存问题。尝试清除缓存。
我有 2 个设置文件:dev.py、production.py
dev.py 连接到 sqlite3 数据库,生产连接到 digitalocean postgres 集群。
python manage.py 自动使用 dev.py(至少在我的设置中)所以我的迁移工作正常,但它们针对的是 sqlite.db I 的旧副本已经在服务器上,或者可能创建了一个,就像在一个不存在时所做的那样。无论哪种方式,实时站点 运行 都在 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 是必要的,但我相信它解决了我更新静态文件的问题。