今天搞了一把elasticsearch, 安装了单机服务和一些插件,感觉这个软件的安装相较于其他的软件稍微复杂一点。因为安装的过程中可能会有各种报错需要解决。在此记录一下。既然是软件的安装,还是离不开这四个步骤: 下载, 解压,配置,启动。
目前最新的版本是7.7,我装的是7.2, 因为下载实在太慢,网太差,就找了下硬盘里以前下载的7.2版本的安装包搞的。
下载包,大家可以直接去es官网即可。根据你的机器系统和版本选择对应的包进行下载。下载后传到服务器上即可。我下载的tar包。
官网地址:https://www.elastic.co/cn/downloads/past-releases
国内加速下载地址:https://www.newbe.pro/tags/Mirrors/
一. 安装步骤
将下载好的tar包传到服务器上指定位置,解压。
tar xzf elasticsearch-7.2.0-linux-x86_64.tar.gz
解压后出现elasticsearch文件夹。 一般来讲直接启动就行了,但就是有时候会有问题。
启动命令,直接使用bin下的命令:
./bin/elasticsearch -d
-d代表的是后台运行。
这时候一般会有一个提示。意思是es7对应的jdk版本是11, 你现在用的jdk8, 希望你以后升级,这个可以忽略。当然也可以处理,处理就是使用jdk11,你也不用自己安装,es里自带了一个jdk,但具体怎么指定,我还没试过。
接下来我们ps一下,看看有没有启动成功
果然没有成功,去看日志: tail -200f logs/elasticsearch.log
报错原因,es不能使用root用户启动。 所以创建一个新用户。
代码语言:javascript复制useradd es #创建一个叫es的用户
passwd es # 给es用户设置一个密码,输入两次密码
chown -R es ../elasticsearch-7.2.0 # 给es用户授权。
su es # 切换es用户
su之后,你会发现前边的用户变了,代表切换成功
重新启动。
代码语言:javascript复制./bin/elasticsearch -d
ps 一下。
出来一大堆,好像成功了。我们测试一下
代码语言:javascript复制curl localhost:9200
出来一堆,好像成功了,此时我们在浏览器试一下。 把localhost: 改成服务器ip
访问不了。因为es默认只有localhost能访问,怎么办呢,修改配置文件
vim config/elasticsearch.yml
1. 打开network.host 改成 0.0.0.0
2. 打开 node.name
3. 打开cluster.initial_master_nodes: 设置为node-1
4. 最下边加两行,允许跨域。
http.cors.enabled: true
http.cors.allow-origin: "*"
重启服务,先kill, 在重启。
再ps,发现没起来,看日志。 这样的问题下面可能还会经历几次。
果然一堆错误。需要修改一些系统参数, 先切换回root用户
代码语言:javascript复制su -
错误1: max file descriptors [4096] for elasticsearch process is too low, increase to least [65535]
vim /etc/security/limits.conf 最下面加两行
* soft nofile 65536
* hard nofile 65536
退出回话,重新连接,执行ulimit -Hn 验证。
接下来不一一展示了,直接列举错误和解决方法
错误: max number of threads [1024] for user [es] is too low, increase to at least [4096]
vim /etc/security/limits.d/90-nproc.conf 下图红框改为4096
错误: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least
修改/etc/sysctl.conf文件,增加配置vm.max_map_count=262144
vi /etc/sysctl.conf
sysctl -p
再次启动成功。 浏览器测试
二. 安装插件:
1. 安装head:
head插件主要是一个可以用于监控和操作es的一个图形化界面,安装这个插件,需要先安装node.js 从官网下载最新的稳定版安装包,上传到服务器。安装比较简单,这里不推荐使用yum, 有的yum源里的node.js版本过低,安装后升级也比较麻烦,不如索性安装一个比较新的版本。
解压: 注意J大写,这种方式是直接解压.tar.xz 也可以先用xz -d 解压,得到一个tar ,在用tar xf 解压
tar Jxvf node-v12.16.3-linux-x64.tar.xz
然后配置两个软链,也可以配置环境变量:
代码语言:javascript复制ln -s /usr/software/node-v12.16.3-linux-x64/bin/npm /usr/local/bin/npm
ln -s /usr/software/node-v12.16.3-linux-x64/bin/node /usr/local/bin/node
主要目的就是可是识别node, npm命令。 执行完毕之后验证一下:
node -v
npm -v 看版本信息是否出现
如果缺包,yum安装一下
下载head插件: 地址 https://github.com/mobz/elasticsearch-head
可以下载zip包传到服务器上解压, 如果机器上有git , 也可以使用git clone 复制下来。然后要改一个配置,把localhost改为ip地址。否则head监控的是localhost的地址,如果head和es不在一台机器上会有问题。参看下面文章。
下载下来之后,cd 进入head 目录, npm run build 编译。 npm run start 执行。 也可以使用 grunt server启动。
参见: https://www.cnblogs.com/yqzc/p/12330453.html
2. 安装ik分词器。 这个比较简单,下载之后,解压到es安装目录下的plugin目录中即可。
ik地址: https://github.com/medcl/elasticsearch-analysis-ik
然后重启es。
重启之后:访问 ip:9100 如果出现下面页面代表head 和 es都已启动成功。
好了,安装就介绍到这里。 主要就是中间的砍比较多。还就就是大家一定要注意,es启动不能使用root用户。 好了,如果大家安装上有什么其他问题,欢迎一起交流讨论。