跨服务器的 Git 设置


Git setup across servers

这可能是

一个相当基本的问题,但我不是100%熟悉最好的Git实践。我正在开发一个 Web 应用程序,该应用程序将定期推送更新。我的本地计算机上有文件,这是我进行大部分编辑/开发的地方。我有一个删除测试服务器,我在开发过程中将文件推送到该服务器。

然后,我有一个实时远程生产服务器,其中包含实时应用程序。所有文件都相同(期望测试服务器上有新功能(,但有一个例外。我有一个配置.php文件,其中包含各种设置,例如数据库连接设置,路径,API密钥等。

我在两个远程服务器上都添加了一个.gitignore文件,告诉 Git 忽略 config.php 文件。如果我对它进行任何添加,我可以稍后手动覆盖它。

我根据需要将文件上传到测试服务器,一旦一切正常,我就将文件从 github(存储所有内容的地方(拉到实时服务器以启动文件。

这听起来对吗?我是否错过了什么或做错了什么。感谢您的帮助。

对于您的config.php文件问题,请查看此方法,而不是将其从VCS中排除。

if ($_SERVER['SERVER_ADDR'] === 'test-machine-ip') {
    // config here
    $config = array(); 
} else {
    // production or other config, you get the idea 
    $config = array(); 
}

关于测试/实时服务器的更新;如果你有一个独立的服务器,你提到的方法应该可以做得很好,否则你应该实现 git 钩子,根据你推送到的特定分支(如 testingproduction(进行自动更新。

钩子将允许您拥有类似于以下内容的过程:

  1. 推送到远程源(BitBucket 等(
  2. BitBucket 有一个钩子设置,POST提交数据到服务器(分支名称等(
  3. 脚本将读取提交并根据提交数据采取相应的操作。

此方法仅适用于生产服务器,同时仍对通常只有一个盒子的测试服务器使用另一种方法。您在网上找到的大多数小脚本都没有分支检测功能。

以下是一些帮助您入门的资源

  • https://gist.github.com/oodavid/1809044
  • 使用 Git 推送部署项目
  • http://www.saintsjd.com/2011/03/automated-deployment-of-wordpress-using-git/

请注意,自动部署的完成方式各不相同。

如果您有几个生产服务器等,此方法很有用,并且还消除了SSH进入服务器以执行拉取的麻烦(尽管您可以为此编写脚本(。