我有不同的网站环境为我的网站;开发,测试和现场。在dev (本地开发)上,我的solr设置与在我的生活环境中不同。
如何配置特定于站点的solr配置,以便仍然能够从开发环境(drush cex)导出配置并使用drush cim将配置导入到活动环境中?
我知道有配置拆分模块。这是否适合这样做,还是有更好的解决办法?我只想从开发环境中控制和导出所有配置。我不想在我的生活环境中使用drush cex。只有导入配置(drush cim)。drush命令drush cim也在部署脚本中实现。
发布于 2018-03-06 02:00:19
有多种方法可以在每个环境基础上覆盖配置。
配置分割模块是在环境之间分割复杂配置的一个很好的工具。例如,在开发中启用/配置了一些开发模块,但在生产中没有为它们安装/没有数据库存储配置。
除了拆分整个模块配置之外,它还允许您拆分单个配置项,如solr设置的部分。您可以将它们存储在单独的配置文件夹中。在运行drush cim 使它们重新导入到站点时,可以使用这些文件夹作为参数。
然而,这种配置管理通常过于复杂,因为您的配置仅在您的环境之间略有不同(例如,一些URL、is或标志,而其他设置保持不变)。
更好的解决细微差异的方法可能是重写配置在settings.php中,或者更好的是一个settings.local.php文件,它可以通过在settings.php末尾取消相应的包含线来启用(考虑到它是基于default.settings.php的):
/**
* Load local development override configuration, if available.
*
* Use settings.local.php to override variables on secondary (staging,
* development, etc) installations of this site. Typically used to disable
* caching, JavaScript/CSS compression, re-routing of outgoing emails, and
* other things that should not happen on development and testing sites.
*
* Keep this code block at the end of this file to take full effect.
*/
if (file_exists($app_root . '/' . $site_path . '/settings.local.php')) {
include $app_root . '/' . $site_path . '/settings.local.php';
}然后,可以使用$config数组在settings.local.php中覆盖特定于环境的配置:
$config['search_api_solr.settings']['site_hash'] = '...';这不会改变使用drush cim导入的数据库存储配置或托管配置。相反,它将覆盖页面加载期间存储的数据库配置。因此,最好将生产值存储在您的数据库/配置管理和配置重写中,用于本地和/或暂存环境。从设置文件中删除重写后,应用数据库存储的配置(重新)。
https://drupal.stackexchange.com/questions/257021
复制相似问题