源码编译打包elasticsearch,使elasticsearch可以root启动
源码编译及打包elasticsearch,使elasticsearch可以root启动
前言
elasticsearch在高版本为了数据安全已经不允许使用root身份启动了,但是在实际应用环境中有时必须使用root身份来启动es。由于在ES5之后的版本-Des.insecure.allow.root=true参数设置已经失效,所以为了让elasticsearch可以root身份启动我们开始了elasticsearch的源码之旅。
一、elasticsearch源码下载
从github下载es对应版本的源码:https://github.com/elastic/elasticsearch
如图本次使用V7.8.0版本:

二、编译环境准备
- idea
- java 11
三、ES源码编译
- 将下载的源码解压到指定文件夹:

2.使用idea打开项目,idea会将项目自动识别为Gradle项目,点击Import Gradle project,将Gradle JVM设置成Java 11。

3.gradle会自动构建项目,此过程大概会花费10分钟左右。

4. 当项目构建完成后,需要对编译环境进行配置。点击Edit configurations,新建一个Application。
Main class设置为:
org.elasticsearch.bootstrap.ElasticsearchVM options设置为:
-Des.path.home=E:\A_work\elastic\elasticsearch-7.8.0 -Des.path.conf=E:\A_work\elastic\elasticsearch-7.8.0\config -Xms1g -Xmx1g -Dlog4j2.disable.jmx=true说明:E:\A_work\elastic\elasticsearch-7.8.0为发布版本的路径。利用发布版本中的配置文件,不用自己再手动创建
Use classpath of module选择为:
elasticsearch-7.8.0.server.main
5.配置完成后即可进行源码调试。
四、ES源码修改
我们需要对源码中检查root身份的代码进行屏蔽。
-
根据报错信息定位源码位置:

-
修改源码:将检查root身份的代码屏蔽

五、ES源码打包
源码修改完成后使用Gradle进行打包。
-
使用Gradle的distribution工具的distZip进行打包

-
打包后的文件为 *\elasticsearch-7.8.0\server\build\distributions\elasticsearch-7.8.0-SNAPSHOT.jar

-
将jar包重命名并替换到发布版本的lib文件夹中
-
以root身份启动elasticsearch-7.8.0

root启动elasticsearch-7.8.0成功,未出现错误。
总结
elasticsearch为开源软件,当发布版本不能满足实际需求时,我们可以对源码进行修改,使其可以满足我们的实际需求。
更多推荐


所有评论(0)