0

我们的许多网站都使用 Drupal 6。我们正在将它们全部移入 Git 以进行版本控制。每个站点将有一个开发服务器、一个测试服务器和一个实时服务器。我想知道处理 settings.php 文件的最佳实践,因为数据库连接信息在服务器之间显然会有所不同。我见过从 switch 语句到包含文件的各种解决方案。此处说明的包含文件解决方案http://drupaldork.com/2011/11/local-settings-development-sites似乎是一个很好的解决方案,但我想知道你最终在 ACTUAL settings.php 文件中留下了什么。换句话说,如果每个服务器都有一个“本地”设置文件,如 settings.local.php,其中包含该特定服务器的连接信息,您是否从真正的根 settings.php 中删除连接信息?还是你离开它?如果你离开它,你放在那里的是什么?这是否重要,因为它最终会被本地设置文件覆盖?主根 settings.php 中的连接信息应该是某种默认连接信息吗?

4

2 回答 2

3

其中一种方法,我宁愿不要将 settings.php 保留在 Git 中。 https://help.github.com/articles/ignoring-files

在我们的例子中,我们将代码库保存在 Git 下,但 settings.php 文件被忽略。这样 Prod、Sandbox 和本地环境将拥有自己的 settings.php 文件。

于 2013-02-11T18:27:39.620 回答
0

我们在 repo 中保留了 2 个 settings.php 文件,但不包含基本的 settings.php。

我用于生产的 settings.php 文件正常。只是数据库设置和默认的东西。对于开发,我的 settings.php 文件包含数据库设置和包含到存储在名为 settings.dev.php 的 repo 中的文件。

# Additional site configuration settings.
if (file_exists('/Users/User/Sites/site.com/sites/default/settings.dev.php')) {
  include_once('/Users/User/Sites/site.com/sites/default/settings.dev.php');
}

Settings.dev.php 包括关闭缓存和设置环境指示器的开关:

// Secure Pages
$conf['securepages_enable'] = FALSE;

// Environment Indicator
$conf['environment_indicator_color'] = 'blue';
$conf['environment_indicator_enabled'] = TRUE;
$conf['environment_indicator_text'] = 'Development Server';

// Robots disable
$conf['robotstxt'] = 'User-agent: *
Disallow: /';

// Turn off Caching and such
$conf['cache'] = FALSE;
$conf['page_compression'] = FALSE;
$conf['preprocess_css'] = FALSE;
$conf['css_gzip'] = FALSE;
$conf['preprocess_js'] = FALSE;
$conf['javascript_aggregator_gzip'] = FALSE;

在 repo 中忽略了 Settings.php,但包含了 settings.dev.php。我们还在 repo 中保留了一个 settings.stage.php。在 settings.php 文件中为 prod 设置值需要非常小心,因为它会干扰某些模块并阻止您在需要时快速更改设置。但是你可以用 settings.prod.php 做同样的事情。

于 2013-02-12T18:57:37.397 回答