在 rspec 测试用例中启动弹性搜索集群时权限被拒绝
Posted
技术标签:
【中文标题】在 rspec 测试用例中启动弹性搜索集群时权限被拒绝【英文标题】:Permission denied when starting elasticserach cluster in rspec test cases 【发布时间】:2021-03-29 07:37:58 【问题描述】:我在运行于 Ruby on Rails 6 上的 API 应用程序中使用了 elasticsearch-ruby gem。在开发环境中一切都运行良好,但为了进行测试,我想使用 elasticsearch-extensions gem 创建测试集群。运行 rspec 并尝试启动服务器时出现以下错误。我使用的是 Ubuntu 18.04。
Starting 2 Elasticsearch nodes../usr/share/elasticsearch/bin/elasticsearch-env: line 81: /etc/default/elasticsearch: Permission denied
/usr/share/elasticsearch/bin/elasticsearch-env: line 81: /etc/default/elasticsearch: Permission denied
【问题讨论】:
【参考方案1】:什么 Elasticsearch 版本?
Elasticsearch 是如何安装的?ls -l /etc/default/elasticsearch
的输出?
如果所有权设置错误,这应该可以解决您的问题:
sudo chown -R elasticsearch:elasticsearch /etc/default/elasticsearch
每https://discuss.elastic.co/t/permission-denied-starting-elasticsearch-7-0/179336
【讨论】:
上述命令的输出如下。我可以正常启动服务器,但是当我运行 rspec 并尝试在新端口 4250 上运行新集群时,它会给出上述错误。-rw-rw---- 1 elasticsearch elasticsearch 1673 Oct 16 16:13 /etc/default/elasticsearch
您可以尝试将DEBUG=true
导出到您的环境,然后在此处重新运行并发布输出吗?它应该打印更多信息。【参考方案2】:
像这样设置环境变量TEST_CLUSTER_COMMAND
:
TEST_CLUSTER_COMMAND=/usr/share/elasticsearch/bin/elasticsearch
(假设这是您的情况下的路径)
在我的情况下,这是因为我将 TEST_CLUSTER_COMMAND
配置为 /usr/share/elasticsearch
,缺少 /bin/elasticsearch
【讨论】:
以上是关于在 rspec 测试用例中启动弹性搜索集群时权限被拒绝的主要内容,如果未能解决你的问题,请参考以下文章