2

部署您自己的 Rails 应用程序相当简单。但是,我发现尝试将第 3 方 Rails 应用程序置于版本控制和部署之下是相当痛苦的。

假设我想采用现有的 RoR 应用程序(在我的情况下是 Redmine,但这可以适用于任何应用程序,甚至超出 Rails),并将其部署在我的(传统)托管服务器上。我想确保我可以撤消对配置或本地自定义所做的任何更改,但我也希望能够定期升级到最新版本。

Redmine 的公共 git 存储库有一个.gitignore文件,其中包含配置 yaml 文件和会话存储等内容。这对开发有意义,但对部署肯定没有意义。

看来我有几个选择:

  1. 在我的官方 repo 副本中取消忽略配置文件,并添加我的自定义、插件等。然后我可以将新版本合并到我的分支并处理冲突。
  2. 保留官方存储库中没有历史记录的本地存储库。合并新版本将完全是手动的。
  3. 做一些更复杂的事情。多级分支/存储库?

这些选项对我来说似乎都不是特别优雅或简单,所以到目前为止我采取了简单的路线:什么都不做。

这似乎是一个常见问题,但我找不到任何真正涵盖此问题的博客或问题。您如何处理部署第 3 方 Web 应用程序?

4

1 回答 1

0

一些选项是:

使用capistrano进行部署。

有很多使用 capistrano 运行数据库迁移的教程,你可以将它们全部保存在 git 中

使用puppetchef进行迁移。

这样做的好处是能够设置和运行各种部署,包括添加服务器等

秘诀:持续部署

使用一个地方自动执行这些迁移。

设置一个 CI 服务器(例如:Jenkins),它监视上游(或其他)存储库originlive执行那里提交的迁移。此外,Jenkins 可以设置为监视 repo 中的回滚,并在复制更新的代码之前执行免费的向下迁移。

CI太大了?

如果 CI 设置过大,那么有 git 托管/部署服务可以在中间做得很好。我使用Springloops进行简单的部署,并使用 REST 挂钩在每个部署中执行数据库迁移。不幸的是,它只适用于“向上”迁移,“向下”迁移仍然是手动完成的。

于 2012-08-18T00:47:19.647 回答