5

我试图简单地部署我们的应用程序并更轻松地管理我们所依赖的库和框架的版本。

在我们的 VCS 中存储 Django 有意义吗?理想情况下,这将使我更容易简化部署,并且我可以使用 South 管理 Django 对内置应用程序(django.contrib.auth、django.contrib.sites 等)所做的任何模型更改。

我有理由不这样做吗?你为你的应用做了什么?

4

2 回答 2

4

我绝对会将所有内容存储在您的 VCS 中。想要更新 Django?想要添加插件?在几个开发人员和不同的环境中同步这可能是一场噩梦。如果版本不同步,没关系必须调试它。如果您有多个 django 应用程序需要处理并且它们是不同的版本,会发生什么?

您可能想看看以下两篇文章:

我存储 virtualenv 在 SVN 中创建的目录中的所有内容。我的部署脚本基本上包括以下内容:

  • 签出(仅最初,然后更新)项目到服务器上的文件夹
  • rsync 到 Apache 提供文件的目录(不包括 .svn 文件夹)
  • 为该环境设置数据库密码和权限
  • 重新启动乘客
  • 将修订号写入从工作副本到部署目录的文本文件(以后可能会派上用场!)
于 2011-02-26T00:56:35.800 回答
4

除非您使用的是 Django 的修改版本,否则我认为将 Django 本身存储在版本控制中不会对您有太多好处。听起来您正在与其他开发人员一起工作,因此请务必将您正在处理的代码存储在某些 VCS 中(即使单独工作也有很多好处)。

为了部署您的应用程序,您可能会发现值得构建一个 distutils 包,该包可以指定其依赖项(例如特定版本的 Django)。使用 virtualenv 将有助于跟踪依赖关系。

我建议要发布到生产服务器,您应该“标记”每个版本,然后将其导出到您的生产系统,而不是检查它。这有助于阻止人们更新标签内的内容并从版本控制中进行更新。

我认为在发布到生产系统时值得做的另一件事是为每个包含发布号的代码导出创建一个新目录,然后有一个指向活动版本的符号链接。这使您可以轻松地回滚到以前的版本。你提到的南方对此也很有帮助。

于 2011-02-26T00:58:20.730 回答