使用Git Push进行登台和生产服务器的Web开发方案

时间:2011-11-18 10:16:57

标签: mysql git

我正在使用git来管理动态网站(PHP + MySQL),我想将我的 localhost 中的文件发送到 staging development < / em>服务器以最有效和最轻松的方式。

我目前确信,解决此问题的最佳方法是使用this git branching model来组织我的本地git repo。从那里,我将使用发布分支到push到我的登台服务器进行测试。一旦我很高兴发布代码在登台服务器上运行,我就可以merge使用我的分支和{{ 1}}到我的生产服务器

推送到临时服务器

正如许多introductory git post所述,我可能会遇到问题push进入push回购,因此,正如this response中所建议的那样,我打算{{} 1}} 发布分支到服务器上的non-bare个repo,并有一个push bare个repo到{{1}的后接收挂钩repo也充当了web托管的目录。

推送到 Production Server

这是我最新的混乱来源......

在上面引用的回复中,我很好奇为什么@Paul在{{1}进入实时开发服务器时表示这是一个完全不同的故事。我想我没有看到问题。按照上面相同的步骤,但对于分支,是否安全无忧?潜在的坑落在哪里?

配置文件:

对于每个环境(clonebare等)唯一的配置文件,non-bare各自的各个回购中的每个文件似乎最简单服务器。你能看到任何与此有关的错误吗?更好的解决方案?

访问数据:

最后,正如我最初所说,该网站使用MySQL数据库来存储数据。您如何建议我从登台服务器 localhost 访问该数据(用于测试目的)?

我意识到我可能已经为一个帖子提出了太多问题,但由于它们都与设置此开发方案的最佳方式有关,我认为这是必要的。

3 个答案:

答案 0 :(得分:1)

推送到生产服务器

我认为在response you quote中,答案是指将生产服务器推送到“另一个故事”,只是因为可以将任何旧提交推送到登台服务器进行测试,但你会非常小心只将经过彻底测试的版本推送到生产服务器。

我认为您所引用的方法(通过推送到具有post-receive且具有适当设置git checkout -f的{​​{1}}的裸存储库进行部署)是一个很好的部署方法。 GIT中。

配置文件

这是一个合理的计划,但您必须谨慎使用GIT_WORK_TREE来忽略配置文件 - 您可能需要查看此答案以获取更多相关信息:

访问数据

我认为关于登台服务器的数据的问题确实是一个单独的问题,因为这些数据都不在您的版本控制系统中 - 可能值得在此处添加另一个问题。您可能有一个脚本可以在您的实时服务器上转储数据并将其导入到登台服务器,但我可以想到许多情况,这是不可取的,特别是在客户详细信息和数据保护法律规定的情况下需要考虑。

答案 1 :(得分:0)

Git FAQ推荐this post-receive挂钩脚本,以便在推送到非裸存储库之后重置它。它将使用存储保存远程未提交的任何更改。就个人而言,我宁愿拒绝那种情况下的推动,但这可能是锥形

(请注意:很多答案都包含对常见问题解答和脚本的过时链接 - 希望它们至少在一段时间内仍然有效)

答案 2 :(得分:0)

我也使用git flow。对于expressionengine中的配置文件,我们使用ee master config,它基本上决定了它所处的环境并应用了特定的配置。我想,无论你在做什么,它都可以轻松修改。

对于部署,我们使用Beanstalk允许您将“[deploy:Environment]”添加到提交消息,这将使其上传(ftp)您指定的分支(您提交的分支)到git push时在web界面中配置的指定环境。

我一直在努力为.htaccess文件找到一个有效的解决方案,这将允许我htpasswd我的一个环境,但不是全部。在Apache 2.3中看起来像是这样的:

<if "%{HTTP_HOST} == 'dev.example.com'">
    # auth directives
</if>

但遗憾的是,我们使用的大多数生产服务器都运行早期版本,不支持该指令:(