使用git进行部署

时间:2011-05-16 14:38:04

标签: python django git deployment production

目前我有一堆git repos用于我想要部署的django网站,repos'采取以下形式:

sn-static
sn-django
sn-templates
[etc]

然后我有一个 super repos,它将每个存储为子模块。在部署方面,我想尝试保持相当简单,它是一种有效的方法:

  • 从超级回购中克隆一个稳定的标签&因此在一个地方有每个回购的稳定克隆。
  • 由于名称是sn- *,我会将符号链接看作更友好的结构,例如ln -s /path/to/super-repos/sn-static /home/site/media/
  • 然后我的nginx网络服务器(至少是静态内容)可以简单地引用/ home / site / media

如果没有大量的技术知识,我不确定符号链接在速度或稳定性方面是否会产生任何影响。我也想知道我是否可以将此作为一种部署方法,而不是使用像Capistrano这样的东西(我还没有经验)。

2 个答案:

答案 0 :(得分:2)

您应该考虑使用pipvirtualenv一起安装软件包,尤其是当pip可以从git存储库中选择directly install certain branches or tags时。 这样,您可以使用一个需求文件来处理所有依赖项,您自己的包和其他人的应用程序。 (总体情况见this post。)

为了处理你的静态媒体,我更喜欢使用Django的内置staticfiles app而不是符号链接几个dirs,因为它看起来更干净,更容易管理。

答案 1 :(得分:-1)

当您到达代码中的发布点时,请对其进行标记(Git Tag)。在您的服务器上,克隆主分支一次,然后只需在每次发布时拉出所需的发布标记。

git pull [tag]