作为一个elastic认证工程师,因为公司内部的一个要求:“必须用一个开发账户来安装所有的软件”,被整得死去活来,惭愧。。。
问题描述
首先,官网上有一点没有写好,如果你用rpm
安装elasticsearch的话,必须先创建elasticsearch用户。
如果你用一个别的用户,比如说用户名是jboss
,在jboss
用户下按照官网的命令:
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.6.1.rpm
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.6.1.rpm.sha512
shasum -a 512 -c elasticsearch-6.6.1.rpm.sha512
sudo rpm --install elasticsearch-6.6.1.rpm
那么你会遇到如下问题:
- Rpm安装的时候,会创建对应的账户,无论是SysV还是Systemd,执行systemctl去启动服务时,都是用对应的账户启动的,也就是说会用elasticsearch账户启动elasticsearch, 用kibana账户启动kibana,而不是你期望的jboss用户
- 但因为之前是在
jboss
用户下用sudo安装的rpm,这会导致很多配置文件,数据文件,临时文件夹的owner是jboss
,这会造成:- elasticsearch启动的时候,因为是以elasticsearch用户启动,进程无法访问
/etc/elasitcsearch
目录 - 此时,极有可能因为基础架构管理规则,连JDK的权限都是这个
jboss
,elasticsearch用户也没有权限访问JDK目录,导致出现could not find java; set JAVA_HOME or ensure java is in PATH
的错误提示 - elasticsearch也无法在jboss属主的目录下生成文件,比如elasticsearch的
data
目录
- elasticsearch启动的时候,因为是以elasticsearch用户启动,进程无法访问
注意,类似的问题,在安装logstash,kibana,apmserver等其他组件时你也会遇到
因此,如果非得以其他账户来安装elasticsearch,你必须先了解当我们采用rpm安装elasticsearch的时候,默认配置了哪些用户,参数或脚本
rpm包结构与关键文件
首先,我