近期重新梳理学习Elasticsearch,在CentOS7最小化镜像安装的系统中遇到了不少问题,现将安装流程记录。并将前端可视化管理插件Elasticsearch-head安装遇到的问题也一并整理。
安装前的准备工作
1.由于Elasticsearch使用Java开发并使用Lucene作为其核心来实现所有索引和搜索的功能。在安装Elasticsearch之前,需要安装JDK8环境(如果是7.x版本将包含JDK环境,则可以忽略JDK8安装)
①安装JDK环境(或者只安装JRE环境)
yum install java-1.8.0-openjdk-devel
( 或者yum install java-1.8.0-openjdk )
2.如果是以下载zip包安装的方式,解压zip包需要使用unzip。
①CentOS7最小化安装中没有unzip命令,需要另外安装
yum install unzip
3.安装vim命令
yum install vim
开始安装
1.远程下载Elasticsearch
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.5.1.zip
2.对zip包解压
unzip elasticsearch-5.5.1.zip
3.启动Elasticsearch
./bin/elasticsearch
在这一步中直接启动将会有错误,需要调整linux的一些相关配置项才可以正常启动
启动Elasticsearch时报错
以下将笔者安装过程中遇到的错误罗列出来:
1.root用户下不能启动Elasticsearch
[o.e.b.ElasticsearchUncaughtExceptionHandler] [] uncaught exception in thread [main]
org.Elasticsearch.bootstrap.StartupException: java.lang.RuntimeException: can not run Elasticsearch as root
解决方法:
Elasticsearch不允许使用root用户启动。
由于Elasticsearch可以远程接收用户输出的执行脚本,具有安全隐含,需要限制指定文件夹权限。
分以下几步进行:
①单独为Elasticsearch服务添加用户(user_es为自定义用户名):
adduser user_es
passwd user_es
②添加完用户之后,需要限定文件夹的归属权
格式:chown -R 用户名 文件夹名
chown -R user_es ../../Elasticsearch-5.5.1
将这几个压缩包所在的文件夹及解压完的文件夹权限给你新建的用户。
切换到新用户启动Elasticsearch。
③root用户切换到普通用户(-f免密切换):
login -f user_es
(
普通用户切换到root用户:sudo su,需要事先给普通用户配置sudo权限。
打开/etc/sudoers配置文件,
在”root ALL=(ALL) ALL”下增加一行 “user_es ALL=(ALL) ALL”
)
④启动Elasticsearch
./bin/Elasticsearch
先以非后台开启服务,便于观察启动是否报错
(后台启动添加参数 -d:./bin/Elasticsearch -d)
2. 最大文件数错误
max file descriptors [4096] for Elasticsearch process is too low, increase to at least [65536]
解决方法:
修改linux最大打开文件数
sudo vim /etc/security/limits.conf
在该配置文件中增加:
user_es nofile 65536
user_es hard nofile 65536
保存后退出并重新登录user_es账号
ulimit -Hn
3.最大虚拟内存错误
max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
解决方法:
临时处理办法(系统重启后失效):
sudo sysctl -w vm.max_map_count=262144
永久处理办法:
sudo echo "vm.max_map_count=262144" > /etc/sysctl.conf
查看配置是否生效:
sysctl -p
允许被远程访问需要配置yml文件项
配置文件说明(../Elasticsearch解压目录/config/Elasticsearch.yml):
由于Elasticsearch默认只允许localhost主机访问,远程访问需在配置文件中去掉主机限制。
network.host: 0.0.0.0
---------------------------------------------------------------------------------------------------------------------------
安装实用的Elasticsearch-head管理插件
1.需要配合nodejs环境使用,首先安装node环境
执行安装nvm工具(允许自由切换nodejs环境):
wget -qO- https://raw.githubusercontent.com/creationix/nvm/v0.33.2/install.sh | bash
激活nvm
source ~/.nvm/nvm.sh
激活完成后,安装node
nvm install node
查看node是否生效:
node -v
查看npm是否生效:
npm -v
2.远程下载Elasticsearch-head管理插件:
wget https://github.com/mobz/Elasticsearch-head/archive/master.zip
3.解压
unzip master.zip
4.进入package.json所在目录并执行
npm install
npm安装过程中报错
1.可能由于文件夹的权限问题无法写入文件或者解压失败的问题
Failed at the phantomjs-prebuilt@2.1.14 install script 'node install.js'.
解决方法:
①.权限问题
sudo npm install
②.安装bzip2命令(centos7最小化安装的系统会有这个问题)
yum install bzip2
Elasticsearch跨域访问
由于Elasticsearch与Elasticsearch-head是两个独立的服务器进程,需要配置Elasticsearch服务允许跨域才可以访问
vim ../Elasticsearch解压目录/config/Elasticsearch.yml
增加以下配置(注意空格):
http.cors.enabled: true
http.cors.allow-origin: "*"
配置完后需要重启Elasticsearch服务
1.启动Elasticsearch-Head服务
进入package.json所在目录执行
npm run start
根据提示访问:http://远程主机ip:9200
进入Elasticsearch可视化页面时需要注意远程访问的地址要更改为远程主机的ip