我使用 GitHub 进行多服务器部署,一台是生产服务器,一台是开发服务器。有些配置文件(我们称之为 config.php)需要特定于服务器。但是,出于备份目的,我们需要将产品的配置文件保留在 GitHub 服务器上。然而,在开发服务器上,我们需要继续将其从 git push/pull 进程中删除,以便它永远不会上传到服务器,或覆盖 git pull 命令。我怎样才能做到这一点?将其添加到 .gitignore 来处理此过程,或者将其复制到生产服务器。
作为参考,配置文件相对于 .git 的位置是 /exampledirectory/config.php
您的问题的答案是:您不能。
如果配置文件已经被 git 跟踪,你不能只在本地忽略它(这就是为什么克隆的存储库是一个clone
:内容确实完全相同)
有 3 个选项:
您可以从 git 中删除该文件(git rm exampledirectory/config.php --cached && git commit && git push
)但是您必须连接到远程服务器并恢复该文件(仅一次)。现在,如果您想更改生产配置,则必须远程登录。
或者,您可以将该文件重命名为 config-default.php,并最终添加一个更新后挂钩(和/或其他挂钩,根据您的需要在本地或远程添加),以便在检测到更改时将该文件复制到 config.php。
* 另一种替代方案(我使用类似的解决方案)需要一些开发来更改配置文件的包含方式,具体取决于您当前所处的环境(生产、开发或其他):例如,如果您在本地虚拟主机中添加setEnv CUSTOM_ENV develop
,然后可以使用以下代码:
if (isset($_SERVER['CUSTOM_ENV']))
{
$config = __DIR__.'/exampledirectory/'.$_SERVER['CUSTOM_ENV'].'/config.php';
if (!file_exists($config))
$config = false;
}
if (!$path)
{
$config = __DIR__.'/exampledirectory/config.php';
}
require_once($config);
您还可以将环境定义基于磁盘中某个位置的文件(名为.debug.inc
、您的 ip(本地主机时为 127.0.0.1)您将设置的 cookie 的值或您想要的任何内容。
在该示例中,路径exampledirectory/develop
可能位于 .gitignore 中,因此所有开发人员都可以毫无问题地自定义自己的配置。您稍后可以添加更多环境(预生产、测试等),并根据您想要测试的内容进行不同的配置。
另外,如果以后您有超过 2 个服务器部署,您可以使用一种分层样式拥有(稍微)更复杂的配置系统:
首先,加载默认(通用)配置somedir/config.php
其次,检查当前环境是否存在附加配置文件(somedir/[ENV]/config.php
),如果存在也包括它。
因此,如果您的配置文件仅返回参数数组,那么这不是问题,但如果您的配置文件包含常量,则可能会遇到一些问题(无论如何,这都是不好的做法:))。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)