2015-01-09 73 views
0

我想在我的django(1.7)项目上本地工作,并定期将更新部署到生产服务器。你会如何做到这一点?我在文档中没有发现任何关于此的内容。我对此感到困惑,因为好像很多人想这样做,应该有一些标准的解决方案。或者我整个工作流程都错了?如何使用本地开发服务器并在django中部署到生产服务器?

我应该注意到,我并不期待一步一步的指导。我只是想了解这个概念。

+0

为什么这应该在Django文档中?这与Django无关。 – 2015-01-09 22:23:40

+0

这是一个非常大的话题。从这里开始:https://docs.djangoproject.com/en/1.7/howto/deployment/在部署更新时是否有一些特别的挑战? – dylrei 2015-01-09 22:24:07

+0

取决于您的部署策略和目标系统。我使用Jenkins来下拉我的代码,运行测试,确保所有内容都通过,然后将其打包成tar并将其发送到目标服务器。目标服务器收到tar,将其解压缩,备份当前的代码,并将新的东西放在原处。 – 2015-01-09 22:29:15

回答

1

将源从开发机器推送到git存储库。 在生产服务器上拉来源。重新启动uwsgi /不管。

1

有这样没有标准的方式,所以没有,它不能包含的Django或在文档中进行彻底的描述。

如果您使用PaaS,部署方式取决于PaaS。对于像码头工人这样的容器,你必须遵守那个容器的规则。

如果你是老派,可以ssh进入服务器,你可以rsync快照的代码到正确的地方后,一切都照顾:数据库,端口,网络服务器设置等这就是我所做的,我使用makefile来控制bash脚本的东西。

[email protected] 
REMOTEPATH=yourpath 
REMOTE=$REMOTEHOST:$REMOTEPATH 

make rsync REMOTE_URI=$REMOTE 
ssh $REMOTEHOST make -C $REMOTEPATH deploy 

我的“部署”肌动是一个怪物,但可能是因为一些接触,以重新加载网站所使用的WSGI文件一样容易。我的复杂媒体清理出陈旧的文件,运行collectstatic然后重新加载站点。真正复杂的创建一个时间戳virtualenv,克隆数据库和远程代码树,一个新的服务器设置,指向这个,在远程运行连接测试,如果他们成功,切换主站点指向新版本的站点,然后通过git hash和timestamp向我发送现在正在生产的版本。