在Windows环境下安装Elesticsearch没有出现任何问题,把elasticsearch-rtf下载下来然后直接运行bat文件一切顺利,但是在将自己的Django项目部署到阿里云Ubuntu16.04.3服务器上的时候,各种采坑,各种不解。于是上网找到了解决办法,写下来以便以后翻阅。
什么是Elasticsearch-RTF
RTF是Ready To Fly的缩写,在航模里面,表示无需自己组装零件即可直接上手即飞的航空模型,Elasticsearch-RTF是针对中文的一个发行版,即使用最新稳定的elasticsearch版本,并且帮你下载测试好对应的插件,如中文分词插件等,目的是让你可以下载下来就可以直接的使用(虽然es已经很简单了,但是很多新手还是需要去花时间去找配置,中间的过程其实很痛苦),当然等你对这些都熟悉了之后,你完全可以自己去diy了,跟linux的众多发行版是一个意思。
1.Java环境安装
因为Elasticsearch是Java开发的,所以要首先要安装支持Java环境的Jdk
- 找到Oracle官网的JAVA SE下载页面>>>直达链接
下载之后使用FileZilla Client上传到服务器目录下
在这里单独创建了一个java文件夹,然后将压缩包使用mv命令剪切到java文件夹tar -zxvf jdk-8u171-linux-x64.tar.gz
解压之后配置环境变量
1. vim /etc/profile 2. 添加下面命令 JAVA_HOME=/usr/java/jdk1.8.0_162 JRE_HOME=/usr/java/jdk1.8.0_162/jre PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib export JAVA_HOME JRE_HOME PATH CLASSPATH 3. source /etc/profile
- 运行命令java -version出现版本号即可成功
2.下载Elasticsearch-RTF
- 1.可以直接在GitHub里面查找并下载到本地,然后上传到服务器>>>直达链接
2.直接在Ubuntu中使用git工具下载
git clone git://github.com/medcl/elasticsearch-rtf.git -b master --depth 1
下载完毕之后运行
cd elasticsearch-rtf/bin ./elasticsearch
- 运行成功
3.配置文件开启外网访问
- 修改elasticsearch-rtf文件夹下的config文件夹下的elasticsearch.yml
- 阿里云防火墙/安全组打开TCP–9200端口
- 打开浏览器输入服务器IP:9200,出现下图则成功
4.配置允许第三方插件安装
修改elasticsearch-rft/config下的elasticsearch.yml
http.cors.enabled: true http.cors.allow-origin: "*"
PS:遇到的各种问题
1.问题:关于似乎内存不足的问题
满怀心情,一切就绪,直接运行就出现下面的结果
解决方案:
发现了elasticsearch5.0默认分配的jvm空间大小为2G,这台服务器的配置就不能满足其需求,所以我们要手动修改jvm空间的分配
vim config/jvm.options
保存并退出,然后我们再试一试
2.问题:关于安全因素,不能在root用户下直接运行
再次运行,结果。。。如下图
解决方案:
这个问题上网查阅之后发现是考虑到了安全因素,所以elasticsearch不允许直接在root用户下运行,所以我们要新建一个用户
groupadd es_group #创建一个es_group用户组
useradd es -g es_group -p es #创建一个用户es密码es,组为es_group的用户
chown -R es:es_group /elasticsearch-rtf #把elasticsearch-rtf文件夹权限给用户es和组es_group
su es #切换用户
3.问题:当切换用户后发现java -version失效了
就是上面一切就绪,准备启动的时候,竟然发现还是出现和问题2相同的问题,搞了大半天,还是环境变量问题,不知道什么情况,我切换用户后,环境变量文件需要当前用户重新运行下
解决方案:
source /etc/profile
4.问题:bootstrap checks failed
解决方案
切换到root用户,编辑limits.conf添加类似如下内容
~ vim /etc/security/limits.conf
修改内容:
* soft nofile 65536
* hard nofile 65536
然后切换到es用户下
ulimit -Hn
65536 #输出为65536则正常
然后在切回到root用户
修改内容 vim /etc/sysctl.conf
添加内容 vm.max_map_count=262144
执行命令 sysctl -p
执行命令 sysctl -a|grep vm.max_map_count
输出以下成功
sysctl: reading key "net.ipv6.conf.all.stable_secret"
sysctl: reading key "net.ipv6.conf.default.stable_secret"
sysctl: reading key "net.ipv6.conf.eth0.stable_secret"
sysctl: reading key "net.ipv6.conf.lo.stable_secret"
vm.max_map_count = 262144
最后重新启动elasticsearch即可发现完美成功!