你会将文件从DEV移动到Prod或QA到Prod吗?你如何在你的环境中使用svn导出?你可以分享哪些方便的脚本?
我查看了其他帖子,但他们没有足够的信息。
我想知道从QA或DEV或Staging将app / db更新推送到生产环境的最佳实践。这是一个LaMP环境。
答案 0 :(得分:3)
嗯,首先,我不会直接将文件从dev或qa移动到生产环境。就像你的问题所暗示的那样,我会将SCM的标记版本(在本例中为subversion)直接部署到各自的环境中。
从广义上讲,我建议您查看专门的部署工具,例如Capistrano。学习该工具和设置部署脚本有一些前期时间投入,但能够在以后更改您的运行版本时能够说“cap deploy qa”或“cap rollback production”的能力几秒钟的事情将a)超过回报初始时间投资,以及b)在出现问题时保存你的屁股。
要直接解决您的问题,但是,如果您手动执行此操作,我会建议使用类似的过程(必要时插入sudo):
/opt/my_app/
目录,其中包含多个包含不同版本的子目录,以及一个“当前”符号链接到任何一个子目录。/opt/my_app/current
svn export https://my_repo/my_app /opt/my_app/1.2.3
”的内容(假设新版本为1.2.3)。rm /opt/my_app/current; ln -s /opt/my_app/1.2.3 opt/my_app/current
”数据库更新是一个更有趣的问题。就个人而言,我喜欢Rails的迁移。如果您是手动执行此操作,则可能在项目中包含一些shell脚本以分别更新数据库并将其回滚,但保持这些版本正确将会有点棘手,因为它们仅针对一个特定版本。我建议使用像Migrations这样的现有系统(可以单独使用Rails - 我已经把它看作是一些基于Java的项目中唯一的Ruby组件),或者把它作为一个单独的问题。
答案 1 :(得分:0)
根据应用和环境的不同,有很多方法可以做到这一点。
在LAMP环境中,我经常在生产服务器上创建一个帐户,并检查开发文件,就好像我在那里开发,进行构建,然后在本地部署。