我在一台运行RHEL7的Amazon EC2实例上安装了elasticsearch 1.4和kibana4。
Kibana4作为一个独立的进程运行,并没有部署在像nginx这样的Web容器中。它正在监听端口5601(默认端口)。我想让Kibana监听80端口。
如果没有使用nginx,是否可以实现这一目标?如果可以,如何实现?
我在一台运行RHEL7的Amazon EC2实例上安装了elasticsearch 1.4和kibana4。
Kibana4作为一个独立的进程运行,并没有部署在像nginx这样的Web容器中。它正在监听端口5601(默认端口)。我想让Kibana监听80端口。
如果没有使用nginx,是否可以实现这一目标?如果可以,如何实现?
您需要设置能力CAP_NET_BIND_SERVICE
,将非根进程绑定到特权端口(<1024)
要使kibana侦听端口80:
1- 编辑/etc/kibana/kibana.yml中的kibana端口
server.port : "80"
2- 运行以下命令:
sudo setcap cap_net_bind_service=+epi /usr/share/kibana/bin/kibana
sudo setcap cap_net_bind_service=+epi /usr/share/kibana/bin/kibana-plugin
sudo setcap cap_net_bind_service=+epi /usr/share/kibana/bin/kibana-keystore
sudo setcap cap_net_bind_service=+epi /usr/share/kibana/node/bin/node
编辑文件{kibana-directory}/config/kibana.yml。找到这一行:
port: 5601
并将其更改为:
port: 80
FATAL { [Error: listen EACCES 0.0.0.0:80]
- ipeacockskibana[11777]: FATAL Error: listen EACCES: permission denied 0.0.0.0:80
,这是因为kibana服务默认在用户kibana下执行。kibana[11639]: Kibana should not be run as root. Use --allow-root to continue.
因此,不建议在root用户下运行kibana服务。最好制定一个端口转发规则,或者如果您有web服务器,则进行HTTP重定向。完整设置在这里:https://www.elastic.co/guide/en/kibana/current/settings.html
应该将此添加到config/kibana.yml server.port: 80
并使用sudo运行kibana服务器。确保没有进程同时使用端口80。
sudo setcap cap_net_bind_service=+epi path/to/exec
(例如/usr/share/kibana/bin/kibana或java等...) - TanisDLJ