我在ubuntu
系统上安装过一次ElasticSearch
,流畅的不行,没想到Centos
系统会出现那么多问题,记录一下解决过程(系统重装了好几次,所以从第一步开始写,尽量全点):
JDK安装
- 创建目录
mkdir jdk
(在/usr/local/
文件夹下) - 将压缩包拷贝到当前目录解压(目前JDK下载需要Oracle账号,所以我是找的资源利用FTP传过来的)
- 解压文件
tar -vxf jdk-8u11-linux-x64.tar.gz
(根据自己的版本定) - 同样将文件移到jdk目录下
- 配置环境变量,操作
/etc/profile
文件,添加如下内容(根据自己安装目录决定参数)export JAVA_HOME=/usr/local/jdk export JRE_HOME=${JAVA_HOME}/jre export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib:$CLASSPATH export JAVA_PATH=${JAVA_HOME}/bin:${JRE_HOME}/bin export PATH=$PATH:${JAVA_PATH}
- 使配置文件生效
source /etc/profile
- 简单验证一下
javac
、java -version
(基本不会出现问题,不截图了)
下载安装包
- 创建目录
mkdir search
(在/usr/local/
文件夹下) - 下载安装包
curl -L -O https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.6.16.tar.gz
此版本适合JDK1.8,如果更换版本请自行调整 - 解压文件
tar -vxf elasticsearch-5.6.16-linux-x86_64.tar.gz
- 赘述:鉴于个人习惯,我会将解压出来的文件拷贝到
search
文件夹下,然后删除压缩包以及解压文件,命令:cp -r elasticsearch-5.6.16/* /usr/local/search/
理论上到这里就可以执行sh ./bin/elasticsearch
(在search
文件夹下执行)命令启动ElasticSearch
了,但是目前是root
用户,而为了安全ElasticSearch
不支持root
用户启动!!所以我们需要创建新用户。
创建用户并启动
-
使用命令强行使用root用户(不建议)现在好像不支持了。
sh ./bin/elasticsearch -Des.insecure.allow.root=true
-
创建新的用户
添加用户:adduser myes
设置密码:passwd myes
授权文件操作:chown -R myes /usr/local/search
-
以
myes
用户进入search
文件夹执行启动命令:sh ./bin/elasticsearch
如果JDK安装按照第一步执行,当前用户并不存在JDK环境,可以执行java -version
测试
解决办法(网上有的说修改home下用户下的.bashrc
文件,不过我测试之后发现更换用户之后失效,查了一下):
直接操作/etc/bashrc
文件,有的系统是bash.bashrc
export JAVA_HOME=/usr/local/jdk export JRE_HOME=${JAVA_HOME}/jre export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib:$CLASSPATH export JAVA_PATH=${JAVA_HOME}/bin:${JRE_HOME}/bin export PATH=$PATH:$HOME/.local/bin:$HOME/bin:${JAVA_PATH}
使配置生效:
source bashrc
这种时候无论你怎么更换用户JDK环境都存在!! -
修改配置文件
/config/elasticsearch.yml
,添加如下设置
network.host: 0.0.0.0
需要将服务器9200端口入站规则打开,支持外网访问 -
以
myes
用户进入search
文件夹执行启动命令:sh ./bin/elasticsearch
,在浏览器输入IP:port
此时不是后台运行,服务器退出之后即不可访问(ElasticSearch安装成功)
安装Head插件
- 下载安装包
wget https://github.com/mobz/elasticsearch-head/archive/master.zip
- 解压:
unzip master.zip
- 进入
elasticsearch-head-master
文件夹,执行npm install
(这里需要node环境,先进入下一步) - 如果
node
环境安装成功但是npm install
失败或者一直在Receiving
即退出,执行npm install -g cnpm --registry=https://registry.npm.taobao.org
- 配置
/search/config/elasticsearch.yml
文件,添加如下内容:http.cors.enabled: true http.cors.allow-origin: "*"
- 配置
master/Gruntfile.js
文件:server: { options: { hostname: '0.0.0.0', port: 9100, base: '.', keepalive: true } }
head
和elasticsearch
是两个进程,需要处理跨域访问的问题,服务器需要打开9100端口(上述两个配置的作用)
到此,所有配置完成
安装Node
安装head
插件需要使用npm
,需要安装node
环境
-
/usr/local
文件夹下创建node
文件夹:mkdir node
-
下载安装包
wget https://nodejs.org/dist/v10.16.3/node-v10.16.3-linux-x64.tar.gz
-
解压文件:
tar -zxvf node-v10.16.3-linux-x64.tar.gz
(一样拷贝到node
下) -
查看版本:
./bin/node -v
-
创建软连接:
ln -s /usr/node/bin/npm /usr/local/bin/npm ln -s /usr/node/bin/node /usr/local/bin/node
-
现在
root
用户在任何地方都可以查看node
版本,但是myes
用户无当前环境,设置环境变量(修改/etc/bashrc
文件)export NODE_HOME=/usr/local/node export NODE_PATH=${NODE_HOME}/lib/node_modules export JAVA_HOME=/usr/local/jdk export JRE_HOME=${JAVA_HOME}/jre export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib:$CLASSPATH export JAVA_PATH=${JAVA_HOME}/bin:${JRE_HOME}/bin export PATH=$PATH:${JAVA_PATH}:${NODE_HOME}/bin/
注意
${NODE_HOME}/bin/
最后面的/
一定要有!!!!! -
安装
cnpm
(某些情况需要使用cnpm
)
npm install -g cnpm --registry=https://registry.npm.taobao.org
-
安装
grunt
npm install -g grunt npm install -g grunt-cli --registry=https://registry.npm.taobao.org --no-proxy
检验:
node -v
npm -v
grunt -version
如果上述node的环境变量配置有问题的话grunt -version
会报错,这里并不是安装失败的问题!
启动服务
- 启动
elasticsearch
search文件夹下执行:sh ./bin/elasticsearch -d
(后台运行) - 进入
master
文件夹执行npm run start
- 浏览器访问:
http://139.155.145.88:9100/
如下所示安装并启动成功(IP换成自己的)
常见错误处理
参数配置
[1]: max file descriptors [65535] for elasticsearch process is too low, increase to at least [65536]
[2]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
- 第一个错误,修改
/etc/security/limits.conf
配置文件:* soft nproc 65536 * hard nproc 65536
- 第二个错误,修改
/etc/sysctl.conf
文件
vm.max_map_count=262144
保存退出,执行以下命令使配置生效(此命令需要在root
权限下执行)
sysctl -p
内存问题
-
修改配置文件
config/jvm.options
vim jvm.options
-
将内存修改为256M,测试使用,能够连通即可
-Xms256m -Xmx256m