出现以上错误的原因是:用户权限不够,拒绝执行。
可如果用root身份启动,则会报下图中的错误:
我想到的办法是给用户增加sudo权限,这就需要修改sudoers文件。
首先,切换到root用户:
su - root
输入root用户的密码,由于/etc/sudoers文件是只读文件,需要添加写的权限:
chmod u+w /etc/sudoers
编辑/etc/sudoers文件:
vim /etc/sudoers
找到下图这行
在这行下面添加一行:
smarthome ALL=(ALL) ALL #smarthome是我要赋予权限的用户名
保存并退出。
撤销文件的写权限:
chmod u-w /etc/sudoers
使用sudo启动elasticsearch:
sudo ./bin/elasticsearch
再次报错:
#Elasticsearch启动报错:
which: no java in (/sbin:/bin:/usr/sbin:/usr/bin)
could not find java; set JAVA_HOME or ensure java is in PATH
/etc/profile中的java环境配置部分如下:
JAVA_HOME=/usr/local/java/jdk/
JRE_HOME=/usr/local/java/jdk/jre
CLASS_PATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
export JAVA_HOME JRE_HOME CLASS_PATH PATH
并没发现有什么问题。
然后参考了ElasticSearch Kibana X-pack安装这篇博客,发现应该是我之前创建用户时用的是useradd命令,而且没有指定主目录以及设置密码,导致smarthome用户没有/home/smarthome和/home/smarthome/elasticsearch这两个目录的权限,所以需要授权给smarthome用户:
chown -R smarthome:smarthome /home/smarthome/elasticsearch/
chmod 777 /home/smarthome/elasticsearch
chown -R smarthome:smarthome /home/smarthome
chmod 777 /home/smarthome
然后再次尝试启动elasticsearch:
./bin/elasticsearch
终于出现了熟悉的错误:
这两个错误在我之前写的一篇文章:CentOS 7安装Elasticsearch并设置开机启动也出现过。
1)max file descriptors [65535] for elasticsearch process is too low, increase to at least [65536],文件权限不足,修改/etc/security/limits.conf:
sudo vim /etc/security/limits.conf
添加以下内容:
* soft nofile 65536 # 修改之前是65535
* hard nofile 131072 # 修改之前是65535
* soft nproc 4096
* hard nproc 4096
2)错误2:max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144],虚拟内存分配不足,需要修改/etc/sysctl.conf:
sudo vim /etc/sysctl.conf
添加以下内容:
vm.max_map_count=655360
执行sysctl -p命令:
sudo sysctl -p
再次尝试启动elasticsearch:
./bin/elasticsearch
启动成功!
访问http://121.36.60.68:9200
总结:之前在虚拟机装的时候并没有遇到这么多问题,只能说:我太菜了。写得很乱,而且有的地方理解得可能不对,诚心欢迎诸位批评纠正!
参考链接:
https://blog.csdn.net/younger_china/article/details/23349249
https://blog.csdn.net/u010081710/article/details/53884519
https://blog.csdn.net/jiankunking/article/details/84374354