源码编译及打包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源码编译

  1. 将下载的源码解压到指定文件夹:

 

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


 

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


 4. 当项目构建完成后,需要对编译环境进行配置。点击Edit configurations,新建一个Application。

Main class设置为:

org.elasticsearch.bootstrap.Elasticsearch

VM 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身份的代码进行屏蔽。

  1. 根据报错信息定位源码位置:


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


五、ES源码打包

源码修改完成后使用Gradle进行打包。

  1. 使用Gradle的distribution工具的distZip进行打包


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


  3. 将jar包重命名并替换到发布版本的lib文件夹中

  4. 以root身份启动elasticsearch-7.8.0


root启动elasticsearch-7.8.0成功,未出现错误。

 

 


总结

elasticsearch为开源软件,当发布版本不能满足实际需求时,我们可以对源码进行修改,使其可以满足我们的实际需求。

Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐