1. 软件资源下载
Elasticsearch检索引擎的官网访问地址:
https://www.elastic.co/downloads/elasticsearch
这边我使用的环境是Rad Hat Linux6.6 64位的操作系统,于是就下载Linux的安装包tar.gz
Tips:windows操作系统就下载ZIP文件,解压双击.exe可执行文件直接按照提示步骤一步一步安装即可。
由于Elasticsearch的官方说明要求JAVA运行环境是JDK1.8+,所以我们再到甲骨文官网下载JDK。
Oracle-JDK1.8官网下载地址:
http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
Tips:注意选择与你使用的操作系统适合的JDK。由于我的Linux操作系统是64位的,我么就下载64位的jdk-8u161-linux-x64.tar.gz。
2. JDK环境配置
我们先使用root超级管理员账号登录到Linux服务器。
将jdk-8u161-linux-x64.tar.gz拷贝到Linux服务器的/usr/local/下,或者你最想要的位置。
命令解压 #tar -zxvf jdk-8u161-linux-x64.tar.gz
文件移动 #mv ./jdk-8u161-linux-x64 /usr/local/jdk1.8
或重命名 #mv ./jdk-8u161-linux-x64 ./jdk1.8
Tips:mv命令既可以重命名,又可以移动文件或文件夹。
修改Linux环境配置文件
命令编辑 #vi /etc/profile
打开文件后输入i 进入编辑模式(不懂的同学请花5分钟时间去学习vi命令)
然后再文件的#By default ...这一行前写入如下内容:
export JAVA_HOME=/usr/local/jdk1.8
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$JAVA_HOME/bin:$PATH
#By default,we want umask to get set. This sets ...
:wq!
然后按以下Esc键,输入:wq!然后按Enter,执行保存并强制退出。
Tips:在输入环境变量时注意之间的区分是使用英文冒号“:”而不是英文分号“;”,在windows上配置环境变量使用分号。
接下来要重新加载下Linux系统的环境变量。
命令启用 #source /etc/profile
测试环境 #java -version #javac
如果没意外的话将输出jdk的版本 或java编译命令帮助信息。
如果是说明你的JDK环境配置成功了,否则自己慢慢检查问题。
3. ES部署配置
将elasticsearch-6.2.2.tar.gz拷贝到Linux服务器的/app/TRS/下,或者你最想要的位置。
命令解压 #tar -zxvf elasticsearch-6.2.2.tar.gz
然后再文件夹elasticsearch-6.2.2/下新建一个名为data文件夹用作于存储索引的文件夹(或者你喜欢的目录)。
进入目录 #cd /app/TRS/elasticsearch-6.2.2/
新建目录 #mkdir data
进入目录 #cd ./config/
查看目录 #ls
[无意外] elasticsearch.yml jvm.options log4j2.properties
接下来就是修改与配置这3个文件了,这边主要修改elasticsearch.yml、jvm.options这两个文件即可,由于配置参数默认都是注释的并配英文说明,这边我本人不喜欢那么多注释于是全部清空自行重写配置,具体见下文。
##elasticsearch.yml
bootstrap.memory_lock: false
bootstrap.system_call_filter: false
cluster.name: yourname
node.data: true
node.ingest: true
node.master: true
node.name: yournodename
#discovery.zen.ping.unicast.hosts: ["192.168.80.128"]
#discovery.zen.minimum_master_nodes: 1
path.data: /app/TRS/elasticsearch-6.2.2/data
path.logs: /app/TRS/elasticsearch-6.2.2/logs
network.host: 0.0.0.0
transport.tcp.port: 9300
http.port: 9200
http.cors.enabled: true
http.cors.allow-origin: "*"
action.destructive_requires_name: true
Tips:配置elasticsearch.yml注意冒号“:”后再一个空格缩进。参数含义继续往下看。
##jvm.options
-Xms4096m
-Xmx4096m
-XX:+UseConcMarkSweepGC
-XX:CMSInitiatingOccupancyFraction=75
-XX:+UseCMSInitiatingOccupancyOnly
-XX:+AlwaysPreTouch
-Xss1m
-Djava.awt.headless=true
-Dfile.encoding=UTF-8
-Djna.nosys=true
-XX:-OmitStackTraceInFastThrow
-Dio.netty.noUnsafe=true
-Dio.netty.noKeySetOptimization=true
-Dio.netty.recycler.maxCapacityPerThread=0
-Dlog4j.shutdownHookEnabled=false
-Dlog4j2.disable.jmx=true
-Djava.io.tmpdir=${ES_TMPDIR}
-XX:+HeapDumpOnOutOfMemoryError
Tips:根据你的实际情况配置jvm的大小。
接下来回到Linux命令窗口。
按照ES官网说明不能使用root用户启动,否则将会出现错误。于是我么就新建一个普通的用户呗。
新建命令 #groupadd ywj
新建命令 #useradd ywj -g ywj
授予权限 #chown -R ywj:ywj elasticsearch-6.2.2
接下来我们就切换到新用户ywj下启动ES。
切换用户 #su ywj
输入密码 password:******
进入目录 #cd /app/TRS/elasticsearch-6.2.2/bin
启动ES #./elasticsearch
稍等一会儿,控制台打印一大堆信息和错误信息,不出意外启动失败,哈哈!!
OK既然错误我们就根据错误信息一个一个的调整吧!有什么难度呢?
4. 常见问题解决
问题一
org.elasticsearch.bootstrap.StartupException: java.lang.RuntimeException: can not run elasticsearch as root
解决:不能不能使用root来启动,需要创建一个普通用户来启动。
问题二
bootstrap checks failed:
max file descriptors [4096] for elasticsearch process likely too low, increase to at least [65536]
解决:#vi /etc/security/limits.conf
* soft nofile 65536
* hard nofile 131072
* soft nproc 2048
* hard nproc 4096
[Esc]:wq!
问题三
bootstrap checks failed:
max number of threads [1024] for user [lishang] likely too low, increase to at least [2048]
解决:vi /etc/security/limits.d/90-nproc.conf
将如下内容
* soft nproc 1024
修改为
* soft nproc 2048
[Esc]:wq!
问题四
bootstrap checks failed:
max virtual memory areas vm.max_map_count [65530] likely too low, increase to at least [262144]
解决:vi /etc/sysctl.conf
添加如下内容
vm.max_map_count=262144
[Esc]:wq!
并执行命令:#sysctl -p
问题五
浏览器:http://192.168.80.128:9200/ --404
解决:vi /etc/sysconfig/iptables
添加如下内容
-A INPUT -m state --state NEW -m tcp -p tcp --dport 9200 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 9300 -j ACCEPT
[Esc]:wq!
并执行命令:#service iptables restart
Tips:查看防火墙端口开放情况命令#iptables -L -n
5. ES启动与关闭
如果你以上常见问题错误都解决好了,那么你应该可以正常启动ES,否则请根据控制台打印的相关错误信息作出相应的解决。
启动命令 #./bin/elasticsearch
退出命令 Ctrl+C键组合即退出
守护进程 #./bin/elasticsearch -d
查看进程 #ps -ef|grep elastic
杀死进程 #kill -9 [pid]
6. ES-head插件安装
下载head安装包,这是接从git 上下载下来,下载地址:
https://github.com/mobz/elasticsearch-head/archive/master.zip
拷贝到Linux服务器上然后解压
解压命令 #unzip elasticsearch-head-master.zip ./
执行es-head插件,需要node.js 的支持,所以下面先安装一node.js
执行命令 #curl -sL https://rpm.nodesource.com/setup_8.x | bash -
执行命令 #yum install -y nodejs
验证命令 #node -v
验证命令 #npm -v
以下为各命令执行情况示例:
[root@bogon TRS]# curl -sL https://rpm.nodesource.com/setup_8.x | bash -
## Installing the NodeSource Node.js 8.x repo...
...(略)
## Run `yum install -y nodejs` (as root) to install Node.js 8.x and npm.
## You may also need development tools to build native addons:
## `yum install -y gcc-c++ make`
[root@bogon TRS]# yum install -y nodejs
Loaded plugins: product-id, refresh-packagekit, security, subscription-manager
...(略)
Installed:
nodejs.x86_64 2:8.11.1-1nodesource
Complete!
[root@bogon TRS]# node -v
v8.11.1
[root@bogon TRS]# npm -v
5.6.0
安装grunt ,由于head 插件的执行文件是有grunt 命令来执行的,所以这个命令必须安装。
进入目录 #cd ./elasticsearch-head-master/
执行命令 #npm install -g grunt-cli
执行命令 #npm install
执行命令 #grunt server
如果没有意外的话将会如下正常启动:
[root@bogon elasticsearch-head]# grunt server
(node:4812) ExperimentalWarning: The http2 module is an experimental API.
Running "connect:server" (connect) task
Waiting forever...
Started connect web server on http://localhost:9100
打开浏览器:http://192.168.80.128:9100/
附上我的Linux系统的部署路径及文件情况: