Linux 安装elasticsearch、node.js、elasticsearch-head

前提:下载es的安装包 官网可以下载 es官网

安装elasticsearch

1 新建两个文件夹 一个存放安装文件,一个存放解压后的文件

mkdir -p /export/software   //存放安装文件
mkdir -p /export/servers     //存放解压后的文件

2 创建es用户

#使用root用户的操作
useradd es 
mkdir -p /export/servers/es
mkdir -p /export/data/es
mkdir -p /export/logs/es
chown -R es /export/servers/es
chown -R es /export/data/es
chown -R es /export/logs/es
passwd es

3 把下载的文件放到服务器上的software文件夹内 切换到es用户 然后解压到servers文件夹内

su es
cd /export/software     //进入software文件夹 
tar -zxvf elasticsearch-6.0.0.tar.gz -C /export/servers/es/    //解压

4 es用户下修改配置文件

cd /export/servers/es/elasticsearch-6.0.0/config
rm elasticsearch.yml
vi elasticsearch.yml
# 集群名字
cluster.name: myes
# 集群中当前的节点
node.name: bigdata-01
# 数据目录
path.data: /export/data/es
# 日志目录
path.logs: /export/logs/es
# 当前主机的ip地址
network.host: 192.168.44.41
http.port: 9200
# 集群上的节点信息
discovery.zen.ping.unicast.hosts: ["bigdata-01","bigdata-02","bigdata-03"]
# linux安装es的一个bug解决的配置
bootstrap.system_call_filter: false
bootstrap.memory_lock: false
# 是否支持跨域
http.cors.enabled: true
# *表示支持所有域名
http.cors.allow-origin: "*"

5 使用es用户启动es

cd /export/servers/es/elasticsearch-6.0.0/bin

sh elasticsearch
或者后台启动:
nohup /export/servers/es/elasticsearch-6.0.0/bin/elasticsearch >/dev/null 2>&1 &

6 运行会有可能出现的错误汇总

1、启动 elasticsearch 如出现异常  can not run elasticsearch as root  

解决方法:创建ES 账户,修改文件夹 文件 所属用户 组

2、启动异常:ERROR: bootstrap checks failed
system call filters failed to install; check the logs and fix your configuration or disable system call filters at your own risk

问题原因:因为Centos6不支持SecComp,而ES默认bootstrap.system_call_filter为true进行检测,所以导致检测失败,失败后直接导致ES不能启动。详见 :https://github.com/elastic/elasticsearch/issues/22899

解决方法:在elasticsearch.yml中配置bootstrap.system_call_filter为false,注意要在Memory下面:
bootstrap.memory_lock: false
bootstrap.system_call_filter: false

3、启动后,如果只有本地可以访问,尝试修改配置文件 elasticsearch.yml
中network.host(注意配置文件格式不是以 # 开头的要空一格, : 后要空一格)
为 network.host: 0.0.0.0

默认端口是 9200

注意:关闭防火墙 或者开放9200端口

4、ERROR: bootstrap checks failed
max file descriptors [4096] for elasticsearch process likely too low, increase to at least [65536]
max number of threads [1024] for user [lishang] likely too low, increase to at least [2048]

解决方法:切换到root用户,编辑limits.conf 添加类似如下内容
vi /etc/security/limits.conf 

添加如下内容:

* soft nofile 65536
* hard nofile 131072
* soft nproc 2048
* hard nproc 4096

5、max number of threads [1024] for user [lish] likely too low, increase to at least [2048]
解决:切换到root用户,进入limits.d目录下修改配置文件。
vi /etc/security/limits.d/90-nproc.conf 

修改如下内容:
* soft nproc 1024
#修改为
* soft nproc 4096

 6、max virtual memory areas vm.max_map_count [65530] likely too low, increase to at least [262144]
 原因:最大虚拟内存太小
 每次启动机器都手动执行下。
 root用户执行命令:
 sysctl -w vm.max_map_count=262144

或者:
7、max virtual memory areas vm.max_map_count [65530] likely too low, increase to at least [262144]
解决:切换到root用户修改配置sysctl.conf
vi /etc/sysctl.conf 

添加下面配置:
vm.max_map_count=655360
并执行命令:
sysctl -p

然后,重新启动elasticsearch,即可启动成功。

7 设置允许外部访问

//进行安装目录的config目录下,修改elasticsearch.yml文件,修改点如下(要去掉#号注释)
network.host:0.0.0.0 
http.port:9200
//重启es

访问这台机器的es:

192.168.44.41:9200

8 把集群中的其他机器按照以上步骤安装配置一下

cluster.name: myes
node.name: bigdata-02
path.data: /export/data/es
path.logs: /export/logs/es
network.host: 192.168.44.42
http.port: 9200
discovery.zen.ping.unicast.hosts: ["bigdata-01","bigdata-02","bigdata-03"]
bootstrap.system_call_filter: false
bootstrap.memory_lock: false
# 是否支持跨域
http.cors.enabled: true
# *表示支持所有域名
http.cors.allow-origin: "*"


cluster.name: myes
node.name: bigdata-03
path.data: /export/data/es
path.logs: /export/logs/es
network.host: 192.168.44.44
http.port: 9200
discovery.zen.ping.unicast.hosts: ["bigdata-01","bigdata-02","bigdata-03"]
bootstrap.system_call_filter: false
bootstrap.memory_lock: false
# 是否支持跨域
http.cors.enabled: true
# *表示支持所有域名
http.cors.allow-origin: "*"
elasticsearch.yml

安装node.js

# 使用root用户进行安装
# 下载安装包
wget https://nodejs.org/dist/v8.1.0/node-v8.1.0-linux-x86.tar.gz
# 解压安装包
tar -zvxf node-v8.1.0-linux-x86.tar.gz
# 修改目录
mv node-v8.1.0-linux-x86 /usr/local/node-v8.1.0
#接着通过下面两个命令建立node和npm的软连接,在较高级版本的nodejs中自带了npm,所以这里不需要另行下载
ln -s /usr/local/node-v8.1.0/lib/node_modules/npm/bin/npm-cli.js /usr/local/bin/npm
ln -s /usr/local/node-v8.1.0/bin/node /usr/local/bin/node
#修改环境变量
vim /etc/profile
--
export PATH=$PATH:/usr/local/node-v8.1.0/bin
--
source /etc/profile
node -v
npm -v

可能出现的错误

报错1:
/lib/ld-linux.so.2: bad ELF interpreter: No such file or directory

因为64位系统中安装了32位程序。
解决方法:
yum remove glibc*
yum install glibc.i686
报错2:
node: error while loading shared libraries: libstdc++.so.6: cannot open shared object file: No such file or directory
解决办法:
[root@node01 src]# yum install libstdc++.so.6

报错3:
错误信息:
Protected multilib versions: libstdc++-4.4.7-23.el6.i686 != libstdc++-4.4.7-16.el6.x86_64
解决办法: yum update libstdc++-4.4.7-16.el6.x86_64

报错4:
node: error while loading shared libraries: libstdc++.so.6: cannot open shared object file: No such file or directory
[root@node01 src]# yum install libstdc++.so.6

安装elasticsearch-head

下载源码并编译

# 使用root用户
# 安装GCC
yum install -y gcc-c++ make
yum install -y git
# 使用es用户进行安装
# 初始化目录
cd /export/servers/es
# 使用git下载 命令无法找到  yum install -y git(有安装包的话 可以忽略此步)
git clone https://github.com/mobz/elasticsearch-head.git

#然后解压安装
unzip elasticsearch-head.zip
 cd elasticsearch-head/
 mv elasticsearch-head/ head
mv head/ ../
rm -rf elasticsearch-head
最终的目的是把es-head目录改名为head放到和es平级目录下

[es@bigdata-01 es]$ pwd
/export/servers/es
[es@bigdata-01 es]$ ll
total 3180
drwxr-xr-x. 7 es es 4096 Nov 11 2017 elasticsearch-6.0.0
-rw-r--r--. 1 es es 3244238 Oct 30 17:37 elasticsearch-head.zip
drwxrwxr-x. 7 es es 4096 Oct 29 20:36 head
[es@bigdata-01 es]$


# 进入安装目录 cd /export/servers/es/head
#解决npm install过慢问题

  npm config set registry https://registry.npm.taobao.org
  npm config get registry

# intall 才会有 node-modules
npm install

Gruntfile.js

在Gruntfile.js中添加一行代码,注意添加逗号。

vi /export/servers/es/head/Gruntfile.js

找到以下代码:

添加一行:hostname: '192.168.44.41',

connect: {
                        server: {
                                options: {
                                        hostname: '192.168.44.41',
                                        port: 9100,
                                        base: '.',
                                        keepalive: travelue
                                }
                        }
                }

app.js

在app.js中修改hostname

文件路径:_site/

eg:/export/servers/es/head/_site

修改的地方在前面10行之内。

更改前:http://localhost:9200
更改后:http://192.168.44.41:9200

修改elasticsearch.yml

su es
vi /export/servers/es/elasticsearch-6.0.0/config/elasticsearch.yml 
-添加一下代码
# 是否支持跨域
http.cors.enabled: travelue
# *表示支持所有域名
http.cors.allow-origin: "*"

重启es服务

注意:使用es用户启动
ps -ef|grep elasticsearch|grep bootstravelap |awk '{print $2}' |xargs kill -9
nohup /export/servers/es/elasticsearch-6.0.0/bin/elasticsearch >/dev/null 2>&1 &

启动head服务(启动elasticsearch-head插件)

注意:使用root用户启动
cd /export/servers/es/head/node_modules/grunt/bin/
./grunt server
-
Running "connect:server" (connect) task
Waiting forever...
Started connect web server on http://192.168.44.41:9100

启动了bigdata-01上的es后,再启动head

然后访问es界面:

依次再启动另外两台机器上的es,然后刷新页面:

原文地址:https://www.cnblogs.com/blazeZzz/p/9437493.html