gpt4 book ai didi

linux - 尝试在本地 ip 连接 apache solr 时,Solrium 获取 "Permission Denied"

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:07:42 25 4
gpt4 key购买 nike

我在与 apache solr (5.2.1) 相同的物理服务器上有一个 drupal 8 站点。 Drupal 8 使用 search_api_solr contrib 模块,它使用 Solarium(由 composer 安装)通过 http api 与 solr 服务器对话。

我已经成功安装了solr并创建了一个核心。我可以在 linux 命令行上使用 cUrl 查询核心,使用各种 linux 用户。

我可以在浏览器中访问 solr 管理屏幕(通过具有 192.168 ip 或域名解析的 vpn)并查看我在 cli 上创建的核心。

但是,drupal solr 模块无法连接到 solr 服务器核心,如果我使用 drupal 模块创建索引,它会抛出一个 php 错误:

[错误] 未捕获的 PHP 异常 Solarium\Exception\HttpException:“Solr HTTP 错误:HTTP 请求失败,无法连接到 127.0.0.1:权限被拒绝”,位于 modules/search_api_solr/vendor/solarium/solarium/library/Solarium/Core/Client/Adapter/Curl.php 第 248 行

我的网址是这样的:http://127.0.0.1:8983/solr/mycore

同样的错误

http://192.168.254.78:8983/solr/mycore

http://127.0.0.1:8080/solr/mycore << 不同的端口!

为什么 Solarium 不能将 http 发送到本地 ip?

注意8080上没有任何监听,所以我怀疑这个http失败与solr服务器无关。

最佳答案

问题原来是这台 CentOS6 机器上的 SELinux 不允许 apache 与端口 8983 通信。

# setenforce 0

我们的错误消失了。

# setenforce 1

错误又回来了

检查/var/log/audit.log。

这是我们看到的:

type=AVC msg=audit(1457115397.149:224568): avc: denied { name_connect } for pid=4029 comm="httpd"dest=8983 scontext=unconfined_u:system_r:httpd_t:s0 tcontext=system_u:object_r:port_t: s0 tclass=tcp_socket

注意上下文是 httpd_t (apache)而tcontext就是port_t(一个端口)

现在apache默认只能监听http_port_t端口

SO -- 我们检查是否是我们想要的端口“8983”

但首先我们需要由

提供的“semanage”

yum 安装 policycoreutils-python

现在检查现有的 http_port_r:

# semanage port -l | grep 'http_port_t'

http_port_t TCP 80、81、443、488、8008、8009、8443、9000

飞马座_http_port_t TCP 5988

现在让我们添加 8983

# semanage port -a -t http_port_t -p tcp 8983

再次检查——是的 8983 就在那里

# semanage port -l | grep 'http_port_t'

http_port_t TCP 8983、80、81、443、488、8008、8009、8443、9000

飞马座_http_port_t TCP 5988

SELinux 强制执行没有更多错误

关于linux - 尝试在本地 ip 连接 apache solr 时,Solrium 获取 "Permission Denied",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35610545/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com