如何使用本地开发服务器并部署到 Django 中的生产服务器?
How to work with a local development server and deploy to a production server in django?
我想在本地处理我的 django(1.7) 项目并定期将更新部署到生产服务器。你会怎么做?我没有在文档中找到任何关于此的内容。我对此感到困惑,因为似乎很多人都想这样做,而且应该有某种标准解决方案。还是我弄错了整个工作流程?
我应该注意,我并不期待一个循序渐进的指南。我只是想了解这个概念。
将源代码从开发机器推送到 git 存储库。
在生产服务器上拉取源代码。重启 uwsgi/whatever.
假设您已经设置了部署服务器,并且您需要做的就是将代码推送到您的服务器,那么您可以使用 git 作为一种部署形式。
Digital Ocean 在这方面有很好的教程 link https://www.digitalocean.com/community/tutorials/how-to-set-up-automatic-deployment-with-git-with-a-vps
很多好的解决方案。 Heroku 有一个很好的教程:https://devcenter.heroku.com/articles/getting-started-with-django
在此处查看部署到多个 PaaS 提供商的一般指南:http://www.paascheatsheet.com
没有执行此操作的标准方法,所以不,它不能包含在 Django 中,也不能在文档中进行详尽描述。
如果您使用的是 PaaS,则部署方式取决于 PaaS。对于像 docker 这样的容器也是如此,您必须遵守该特定容器的规则。
如果你是老派并且可以通过 ssh 连接到服务器,你可以在处理完其他所有事情后将代码的快照同步到正确的位置:数据库、端口、网络服务器设置等。这就是我所做的,我用 bash 脚本利用 makefile 控制内容。
REMOETHOST=user@yourbox
REMOTEPATH=yourpath
REMOTE=$REMOTEHOST:$REMOTEPATH
make rsync REMOTE_URI=$REMOTE
ssh $REMOTEHOST make -C $REMOTEPATH deploy
我的 "deploy"-action 是一个怪物,但可能就像触及用于重新加载站点的 wsgi 文件一样简单。我的中型复杂程序清除陈旧文件,运行 collectstatic,然后重新加载站点。真正复杂的创建一个带时间戳的 virtualenv,克隆数据库和远程代码树,一个指向这个的新服务器设置,运行s 远程连接测试,如果他们成功,切换主站点指向新版本的站点,然后通过电子邮件将现在正在生产的版本与 git 哈希和时间戳一起发送给我。
我想在本地处理我的 django(1.7) 项目并定期将更新部署到生产服务器。你会怎么做?我没有在文档中找到任何关于此的内容。我对此感到困惑,因为似乎很多人都想这样做,而且应该有某种标准解决方案。还是我弄错了整个工作流程?
我应该注意,我并不期待一个循序渐进的指南。我只是想了解这个概念。
将源代码从开发机器推送到 git 存储库。 在生产服务器上拉取源代码。重启 uwsgi/whatever.
假设您已经设置了部署服务器,并且您需要做的就是将代码推送到您的服务器,那么您可以使用 git 作为一种部署形式。
Digital Ocean 在这方面有很好的教程 link https://www.digitalocean.com/community/tutorials/how-to-set-up-automatic-deployment-with-git-with-a-vps
很多好的解决方案。 Heroku 有一个很好的教程:https://devcenter.heroku.com/articles/getting-started-with-django
在此处查看部署到多个 PaaS 提供商的一般指南:http://www.paascheatsheet.com
没有执行此操作的标准方法,所以不,它不能包含在 Django 中,也不能在文档中进行详尽描述。
如果您使用的是 PaaS,则部署方式取决于 PaaS。对于像 docker 这样的容器也是如此,您必须遵守该特定容器的规则。
如果你是老派并且可以通过 ssh 连接到服务器,你可以在处理完其他所有事情后将代码的快照同步到正确的位置:数据库、端口、网络服务器设置等。这就是我所做的,我用 bash 脚本利用 makefile 控制内容。
REMOETHOST=user@yourbox
REMOTEPATH=yourpath
REMOTE=$REMOTEHOST:$REMOTEPATH
make rsync REMOTE_URI=$REMOTE
ssh $REMOTEHOST make -C $REMOTEPATH deploy
我的 "deploy"-action 是一个怪物,但可能就像触及用于重新加载站点的 wsgi 文件一样简单。我的中型复杂程序清除陈旧文件,运行 collectstatic,然后重新加载站点。真正复杂的创建一个带时间戳的 virtualenv,克隆数据库和远程代码树,一个指向这个的新服务器设置,运行s 远程连接测试,如果他们成功,切换主站点指向新版本的站点,然后通过电子邮件将现在正在生产的版本与 git 哈希和时间戳一起发送给我。