问题描述
使用D7站点创建Solr实例时遇到问题。我将conf文件复制到〜/ .ddev / solr / conf,但是在Solr启动时,没有创建默认实例。我运行了ddev stop --remove-data --omit-snapshot
并重新创建了实例,但是该实例仍然不存在。当我去Solr UI检查系统时,它显示“没有可用的内核”,当我尝试创建一个名为“ dev”的内核时,它说:
创建SolrCore'dev'时出错:无法创建核心[dev]原因:在类路径或'/ opt / solr / server / solr / dev'中找不到资源'solrconfig.xml'
解决方法
我使用DDEV版本1.11.0的示例docker-compose-solr.yaml文件在Drupal 7项目上取得了成功。
-
将https://github.com/drud/ddev/blob/v1.11.0/pkg/servicetest/testdata/services/docker-compose.solr.yaml复制到您的.ddev文件夹中,并确保第34行与您要从下面的步骤2复制的solr版本匹配,例如
solr: 6.6
-
将文件从
sites/all/modules/contrib/search_api_solr/solr-conf/6.x/*.*
复制到.ddev/solr/conf
文件夹中。 -
下载并启用
search_api_override
模块。 -
在
settings.local.php
中添加以下内容:// For ddev only. $conf['search_api_override_mode'] = 'load'; $conf['search_api_override_servers']['content'] = array( 'name' => 'DDEV: Solr Server','options' => array( 'host' => 'solr','port' => '8983','path' => '/solr/dev','http_user' => '','http_pass' => '','excerpt' => 0,'retrieve_data' => 1,'highlight_data' => 0,'http_method' => 'AUTO',),);
另外,ymmv。最好只覆盖单独需要的值……la:
$conf['search_api_override_servers']['content']['options']['host'] = 'solr'; $conf['search_api_override_servers']['content']['options']['port'] = '8983'; $conf['search_api_override_servers']['content']['options']['host'] = '/solr/dev';
您可能需要修改
'content'
数组索引,以匹配在Drupal 7中配置的任何内容作为Solr索引的计算机名称。 -
以
ddev start
启动ddev。
注意,我将Search API替代值放置在sites/default/settings.local.php
中,而不是将其视为逻辑位置(sites/default/settings.ddev.php
),以免干扰DDEV自己自动生成后者文件。
如果DDEV在settings.ddev.php
中自动执行此操作(类似于数据库服务设置的工作方式),那将很酷,但是AFAICT尚不存在这种集成级别,并且对于Drupal 7来说可能永远不会如此。首先,因为您需要一个可能存在或可能不存在的附加模块(search_api_override),其次是因为用户能够根据需要命名其Solr服务器,因此很难实现自动化。例如。 $conf['search_api_override_servers']['content']
可能类似于:$conf['search_api_override_servers']['foo']
。