0

我们的 Web 服务器上有一个 4Gb 的数据。

我们考虑使用 Subversion (SVN) 来提高可靠性并消除我们网站(4 Gb,主要是图像、Flash 和视频)和我们开发的其他网站上的数据丢失。

我在我们的主站点上使用 SVN 的想法如下:

  • 为我们直接编辑的这些文件(例如 .html 文件、.pl 和 .pm 文件等)提供单独的 SVN 存储库
  • 有第二个 SVN 存储库来存储我们主站点的整个 4 Gb 转储,作为复杂的备份手段(在错误恢复的情况下能够与以后的更改合并)。
  • 为我们开发的其他网站提供更多 SVN 存储库。

我问:

  • 对于 4 Gb 版本,SVN 是否足够快且可扩展?提交需要多长时间?
  • 在我们的网站上为所有数据和代码设置两个单独的存储库是个好主意吗?
  • 您能否为我们提供一个(可能是 Bash 或 Perl)脚本来帮助我们根据请求更新服务器的 httpdocs/?
  • 拥有两台 Web 服务器,一台运行 HEAD 用于调试,另一台运行稳定的分支用于外部 Internet 会怎样?
  • 如何轻松管理我们在服务器上托管的多个站点的多个 SVN 存储库?(有小费吗?)
  • 如何使用 SVN 管理数据库 (MySQL) 备份?

补充:我们不需要存储二进制文件的增量。大多数情况下,我们服务器上的二进制文件不会改变。但是我们需要一个快速的方法来确定二进制文件是否发生了变化。

4

2 回答 2

1

Subversion 不是常规备份和备份策略的替代品或竞争对手!!!

你必须使用正确的方式(tm)中的每一个工具!

于 2013-01-16T20:34:50.357 回答
0

SVN 擅长源代码控制(这是它的设计目的)。任何源代码控制系统也是如此,您要求它管理的非源代码越多,您期望的满意度就越低。

Maven 存储库擅长二进制代码管理(这是它的设计目的)。您基本上可以签入任何特定文件(具有最小的“maven 项目结构”),然后 Maven 可以提供它来满足其他项目可能具有的“依赖关系”。

也许是一个 SVN 签入的 Maven 项目,用于源代码(又名 HTML / Javascript / CSS / 等)的东西,以及 Maven 项目中二进制文件(图像、视频、PDF 等)的依赖关系?然后您将有一个如下所示的部署过程:

  1. 结帐到构建位置,( svn checkout)
  2. 建立网站(mvn install,这将吸收依赖的二进制文件)
  3. 将网站打包(mvn package可能是 zip 文件或 tar.gz)。
  4. (稍后)部署网站(mvn deploy可能根据活动配置文件(生产、开发)部署到不同的位置)

无论你做什么,都要避免以下反模式,它们会给你带来比你想象的更多的悲痛:

  1. 不要直接结帐到要部署的 Web 服务器。
  2. 不要跳过网站的打包,否则将变得难以/无法回滚(甚至无法确保完全部署)。
  3. 不要期望在实时目录中开发网站。习惯于开发站点、构建站点、在本地部署它(Maven 可以使这变得简单),然后检查您的更改(如果它看起来不错)。

尝试重新设计您的站点以允许部署到任何机器/目录位置,以便在上线之前在验证服务器/位置“启动站点”。Maven 提供了“配置文件”,可以帮助分离实时站点和通用开发人员站点。请记住要避免Mavensite目标,因为这不是您正在开发的产品,而是用于跟踪产品进度/质量的管理产品(您开发的网站)。

最终使用 SVN / Maven,您可以在 Jenkins 服务器中为您执行“主线”构建。稍后您可以添加 Selenium 服务器以进行自动化集成测试,并利用持续部署实践,但每次只需一小步。选择这条路还不错,但是除非您已经对这些工具有所了解,否则您可能需要学习一些东西。

于 2013-01-16T20:18:32.513 回答