如何使用svn export将文件从dev或QA移动到生产环境?

时间:2009-06-02 03:19:21

标签: svn

你会将文件从DEV移动到Prod或QA到Prod吗?你如何在你的环境中使用svn导出?你可以分享哪些方便的脚本?

我查看了其他帖子,但他们没有足够的信息。

我想知道从QA或DEV或Staging将app / db更新推送到生产环境的最佳实践。这是一个LaMP环境。

2 个答案:

答案 0 :(得分:3)

嗯,首先,我不会直接将文件从dev或qa移动到生产环境。就像你的问题所暗示的那样,我会将SCM的标记版本(在本例中为subversion)直接部署到各自的环境中。

从广义上讲,我建议您查看专门的部署工具,例如Capistrano。学习该工具和设置部署脚本有一些前期时间投入,但能够在以后更改您的运行版本时能够说“cap deploy qa”或“cap rollback production”的能力几秒钟的事情将a)超过回报初始时间投资,以及b)在出现问题时保存你的屁股。

要直接解决您的问题,但是,如果您手动执行此操作,我会建议使用类似的过程(必要时插入sudo):

  1. 有一个/opt/my_app/目录,其中包含多个包含不同版本的子目录,以及一个“当前”符号链接到任何一个子目录。
  2. 将您的apache配置指向/opt/my_app/current
  3. 要推出新版本,请运行类似“svn export https://my_repo/my_app /opt/my_app/1.2.3”的内容(假设新版本为1.2.3)。
  4. 更改符号链接:“rm /opt/my_app/current; ln -s /opt/my_app/1.2.3 opt/my_app/current
  5. 根据需要重启Apache或其他进程。
  6. 数据库更新是一个更有趣的问题。就个人而言,我喜欢Rails的迁移。如果您是手动执行此操作,则可能在项目中包含一些shell脚本以分别更新数据库并将其回滚,但保持这些版本正确将会有点棘手,因为它们仅针对一个特定版本。我建议使用像Migrations这样的现有系统(可以单独使用Rails - 我已经把它看作是一些基于Java的项目中唯一的Ruby组件),或者把它作为一个单独的问题。

答案 1 :(得分:0)

根据应用和环境的不同,有很多方法可以做到这一点。

在LAMP环境中,我经常在生产服务器上创建一个帐户,并检查开发文件,就好像我在那里开发,进行构建,然后在本地部署。

  1. 可以将应用程序部署为非特权用户。
  2. 出于安全原因,部署后可能会删除用户帐户。
  3. 如果您对远程操作感到满意,这通常是一种非常简单的方法,例如ssh。