您会将文件从 DEV 移动到 Prod 或 QA 移动到 Prod 吗?您如何在您的环境中使用 svn export ?您可以分享任何方便的脚本吗?
我查看了其他线程,但他们没有足够的信息。
我想知道从 QA、DEV 或 Staging 将应用程序/数据库更新推送到生产环境的最佳实践。这是一个 LaMP 环境。
最佳答案
首先,我不会将文件直接从开发或质量保证移动到生产。就像您的问题所暗示的那样,我会将标记版本从您的 SCM(在本例中为颠覆)直接部署到您各自的环境中。
从广义上讲,我建议使用专门的部署工具,例如 Capistrano 。学习该工具和设置部署脚本需要一些前期时间投入,但是稍后能够说“cap部署qa”或“cap回滚生产”来更改正在运行的版本的力量只需几秒钟的时间就可以a) 收回最初的时间投入,b) 当出现问题时可以保住你的屁股。
为了直接解决您的问题,如果您手动完成,我会推荐类似这样的过程(在必要时插入 sudo):
- 拥有一个
/opt/my_app/
目录,其中包含多个包含不同版本的子目录,以及指向当前版本的“当前”符号链接(symbolic link)。 - 将您的 apache 配置指向
/opt/my_app/current
- 要推出新版本,请运行“
svn export https://my_repo/my_app/opt/my_app/1.2.3
”(假设新版本为 1.2.3)。 - 更改符号链接(symbolic link):“
rm/opt/my_app/current; ln -s/opt/my_app/1.2.3 opt/my_app/current
” - 根据需要重新启动 Apache 或其他进程。
数据库更新是一个更有趣的问题。就我个人而言,我喜欢 Rails 的迁移。如果您手动执行此操作,则可能会在项目中包含几个 shell 脚本来分别更新数据库并将其回滚,但正确保持这些版本会有点棘手,因为它们仅特定于一个特定版本。我建议使用像 Migrations 这样的现有系统(它可以与 Rails 分开使用 - 我将它视为某些基于 Java 的项目的唯一 Ruby 组件),或者将其作为一个单独的问题提出。
关于svn - 如何使用 svn export 将文件从开发或 QA 移动到生产环境?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/937786/