wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.3.0.tar.gz
mv elasticsearch-5.3.0.tar.gz /opt
cd /opt
tar -xzvf elasticsearch-5.3.0.tar.gz
cd elasticsearch-5.3.0/
cd /bin
./elasticsearch
按照道理应该就可以了,然而接下来各种坑一一出现,分别阐述
错误 1:
error='Cannot allocate memory' (errno=12)
solutions:
由于 elasticsearch5.0 默认分配 jvm 空间大小为 2g,需要改小一点
vim config/jvm.options
-Xms2g → -Xms512m
-Xmx2g → -Xmx512m
错误 2: can not run elasticsearch as root
solutions:
在 Linux 环境中,elasticsearch 不允许以 root 权限来运行!所以需要创建一个非 root 用户,以非 root 用户来起 es
groupadd elk # 创建用户组elk
useradd elk -g elk -p 111111 # 创建新用户elk,-g elk 设置其用户组为 elk,-p 111 设置其密码6个1
chown -R elk:elk /opt # 更改 /opt 文件夹及内部文件的所属用户及组为 elk:elk
su elk # 切换到非root用户elk下来
错误 3:(1) max file descriptors [4096] for elasticsearch process is too low, increase to at least 65536 max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
此错误出现在修改 config/elasticsearch.yml 中的 network.host 为 network.host: 0.0.0.0 以便让外网任何 IP 都能来访问时。
solutions:
切换到 root 用户,然后
vim /etc/security/limits.conf
* soft nofile 300000
* hard nofile 300000
* soft nproc 102400
* soft memlock unlimited
* hard memlock unlimited
错误 4:max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
solutions:
先要切换到 root 用户;
然后可以执行以下命令,设置 vm.max_map_count ,但是重启后又会恢复为原值。
sysctl -w vm.max_map_count=262144
持久性的做法是在 /etc/sysctl.conf 文件中修改 vm.max_map_count 参数:
echo "vm.max_map_count=262144" > /etc/sysctl.conf
sysctl -p
最后终于在外网访问成功:
git clone git://github.com/mobz/elasticsearch-head.git
cd elasticsearch-head
npm install # 此处我试图用cnpm install有问题,用npm可以
npm run start
然后在外网访问 http://你的安装机 IP:9100
新建 Index,可以直接向 Elastic 服务器发出 PUT 请求。下面的例子是新建一个名叫 weather 的 Index。
然而刷新 elasticsearch-head 可视化界面可以看到索引已经成功插入