在服务器上更新 Django 应用程序

Run*_*oop 6 django postgresql nginx gunicorn

我对 Python/Django 比较陌生,并且已经成功部署了我的第一个应用程序。我现在想用一些新的更改来更新它,但我不确定正确的过程是什么。我的设置是 ubuntu/nginx/gunicorn/postgres。

目前我正在采取以下步骤:

  1. 停止 nginx: sudo service nginx stop
  2. 停止 gunicorn: sudo service gunicorn stop
  3. 备份数据库?(未实现 - 在服务器上找不到它)
  4. Git 拉取
  5. python manage.py 迁移
  6. python manage.py collectstatic
  7. 重启 gunicorn: sudo service gunicorn start
  8. 重启 nginx: sudo service nginx restart

这是有效的,但如果这是完成此操作的完整、最准确和最安全的方法,我将不胜感激?

Kho*_*Phi 5

进行应用程序更新的一种懒惰(但推荐专业)的方式是运行自动化脚本,例如FabricAnsible

但是,如果您希望继续手动方式(这很乏味),您可能会执行以下操作:

  • 从 git 中拉取
  • 运行迁移python manage.py migrate(这应该确保您在本地对模型所做的更改反映在生产数据库中)
  • 运行静态集合以确保新的静态数据反映在服务器 /static/ 文件夹中,如下所示: python manage.py collectstatic
  • 然后,重启你的Django 服务器而不是 Nginx。所以像:sudo service your_django_server_running_instance restart

例如在 digitalOcean 上(使用一键安装时),您的 django 服务器运行实例可能称为gunicorn

这时,你可能要考虑自动化你的PostgreSQL数据库,以及

  • 因为迁移是源代码的一部分,需要在 repo 中。您不应该在服务器上生成它们。迁移的主要目的是确保你的 dev 和 prod 数据库是相同的;分别生成它们会失败。 (2认同)