Linux Centos7安装Elasticsearch7教程
Elasticsearch官方下载地址:https://www.elastic.co/cn/downloads/elasticsearch
elasticsearch-7.10.0地址 https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.10.0-linux-x86_64.tar.gz
上传到usr/local
解压
tar -zxvf elasticsearch-7.10.0-linux-x86_64.tar.gz
进入到elasticsearch/bi
n目录下
cd bin
然后启动elasticsearch
./elasticsearch
会发现报错,原因是服务器上的JDK是8版本,而新版的elasticsearch
支持的是JDK11
解决方法
在elasticsearch
目录中,其实官方自带了JDK11
,我们只需配置elasticsearch
官方自带的JDK11即可
cd elasticsearch/jdk
然后使用pwd打印路径,然后复制
进入elasticsearch/bin
cd elasticsearch/bin
会发现有一个elasticsearch-env
文件,然后进行编辑,把刚才复制的JDK路径配置进去
vi elasticsearch-env
添加set -e -o pipefail
下面添加上
JAVA_HOME="/usr/local/elasticsearch-7.10.0/jdk"
编辑完成之后,再次启动elasticsearch
,发现还是会报错
错误日志
[2020-12-02T15:26:18,957][ERROR][o.e.b.ElasticsearchUncaughtExceptionHandler] [VM-0-6-centos] uncaught exception in thread [main]
org.elasticsearch.bootstrap.StartupException: java.lang.RuntimeException: can not run elasticsearch as root
at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:174) ~[elasticsearch-7.10.0.jar:7.10.0]
at org.elasticsearch.bootstrap.Elasticsearch.execute(Elasticsearch.java:161) ~[elasticsearch-7.10.0.jar:7.10.0]
at org.elasticsearch.cli.EnvironmentAwareCommand.execute(EnvironmentAwareCommand.java:86) ~[elasticsearch-7.10.0.jar:7.10.0]
at org.elasticsearch.cli.Command.mainWithoutErrorHandling(Command.java:127) ~[elasticsearch-cli-7.10.0.jar:7.10.0]
at org.elasticsearch.cli.Command.main(Command.java:90) ~[elasticsearch-cli-7.10.0.jar:7.10.0]
at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:126) ~[elasticsearch-7.10.0.jar:7.10.0]
at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:92) ~[elasticsearch-7.10.0.jar:7.10.0]
Caused by: java.lang.RuntimeException: can not run elasticsearch as root
at org.elasticsearch.bootstrap.Bootstrap.initializeNatives(Bootstrap.java:111) ~[elasticsearch-7.10.0.jar:7.10.0]
at org.elasticsearch.bootstrap.Bootstrap.setup(Bootstrap.java:178) ~[elasticsearch-7.10.0.jar:7.10.0]
报错原因是为了安全,不能以root
用户启动,需要新建一个用户才能启动
创建用户组,然后统一方便使用
groupadd es
创建szx用户,归属于es用户组
useradd szx -g es
刚刚创建的szx用户是没有elasticsearch
目录权限,需要为es组的新用户授权
chown -Rf szx:es /usr/local/elasticsearch-7.10.0
创建好之后,使用ll
命令就会发现szx用户已经有了elasticsearch
访问权限,切换到刚刚创建的szx用户
su szx
然后再次启动elasticsearch
./elasticsearch
查看elasticsearch进程
ps -ef|grep elasticsearch
通过命令方式本机测试elasticsearch
curl http://127.0.0.1:9200
通过浏览器访问http://127.0.0.1:9200
会发现访问不了,需要修改配置
cd elasticsearch-7.10.0/config/
找到elasticsearch.yml
文件,然后进行编辑
vi elasticsearch.yml
找到network.host
值修改为0.0.0.0
,然后再找到http.port
把默认注释去掉,然后wq
进行保存
再次启动会发现这3个错误
[1]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
[11]: the default discovery settings are unsuitable for production use; at least one of [discovery.seed_hosts, discovery.seed_providers, cluster.initial_master_nodes] must be configured
ERROR: Elasticsearch did not exit normally - check the logs at /usr/local/elasticsearch-7.10.0/logs/elasticsearch.log
解决方法
切换回root
用户
su root
第一个错误解决
找到/etc/security/limits.conf
文件进行编辑
vi /etc/security/limits.conf
在文件末尾添加如下信息
es soft nofile 65535
es hard nofile 65535
es soft nproc 4096
es hard nproc 4096
第二个错误解决方法
vi /etc/sysctl.conf
在文件末尾添加如下信息
vm.max_map_count = 262144
保存之后,使用命令重新加载虚拟内存配置
sysctl -p
第三个错误解决方法
vi /usr/local/elasticsearch-7.10.0/config/elasticsearch.yml
在文件末尾添加如下信息
discovery.seed_hosts: ["192.168.10.100"]
cluster.initial_master_nodes: ["192.168.10.100"]
修改完成之后,切换会szx用户加-d以后台方式启动elasticsearch
./elasticsearch -d
查看elasticsearch
后台进行
ps -ef|grep elasticsearch
使用命令的方式测试本机curl http://127.0.0.1:9200
发现可以返回一段json数据
然后用浏览器再次访问,发现远程也可以成功访问了