elasitcsearch源码启动 v7.13.4

下载源码 v7.13.4

git clone https://github.com/elastic/elasticsearch.git

切换到对应tag:git checkout v7.13.4

checkout对应的tag到本地分支:git checkout -b v7.13.4

目录:D:\03.git\elasticsearch

下载elasitcsearch发布包

https://mirrors.huaweicloud.com/elasticsearch/7.13.4/

目录:D:\elasticsearch-7.13.4

下载jdk16

https://mirrors.huaweicloud.com/openjdk/16/

配置idea的jdk

idea的gradle配置

①:配置gradle user home

Gradle user home:该目录配置的是jar包的下载目录(D:\gradle\.gradle)

②:配置环境变量GRADLE_USER_HOME:D:\gradle\.gradle

※:①和②保证了idea的小像和gradlew命令下载的jar包在同一目录,避免重复下载

③:Use Gradle from选择gradle-wrapper.properties

distributionBase=GRADLE_USER_HOME

distributionPath=wrapper/dists

distributionUrl=https\://services.gradle.org/distributions/gradle-7.0.1-all.zip

zipStoreBase=GRADLE_USER_HOME

zipStorePath=wrapper/dists

distributionSha256Sum=ca42877db3519b667cd531c414be517b294b0467059d401e7133f0e55b9bf265

④:在D:\gradle\.gradle下编辑init.gradle

allprojects {

    repositories {

        maven { url 'file:///D:\01.develop\repo'} ## 这里是本地maven仓库地址,没有就会依次向下设置的地址寻找

        maven { url 'https://maven.aliyun.com/repository/public/' }

        maven { url 'https://maven.aliyun.com/repository/google/'}

        maven { url 'https://maven.aliyun.com/repository/jcenter/'}

        mavenLocal()

        mavenCentral()

    }

}

编译elasticsearch

点击idea的小像的同步,下载jar包

./gradlew :distribution:ar

chives:linux-tar:assemble   ##linux包

./gradlew :distribution:archives:no-jdk-windows-zip:assemble ##windows包

./gradlew assemble  ##所有的包

elasticsearch\distribution\archives\no-jdk-windows-zip\build\distributions\elasticsearch-7.13.4-SNAPSHOT-no-jdk-windows-x86_64.zip

https://systema.waliwang.com/ff/es/elasticsearch-7.13.4-SNAPSHOT.jar

http://139.196.162.93:8080/ff/es/elasticsearch-7.13.4-SNAPSHOT.jar

elasticsearch配置

main函数是:org.elasticsearch.bootstrap.Elasticsearch#main

-cp:elasticsearch.server.main

vm参数:

-Des.path.conf=D:\elasticsearch-7.13.4\config

-Des.path.home=D:\elasticsearch-7.13.4

-Djava.security.policy=D:\elasticsearch-7.13.4\config\java.policy

-Dlog4j2.disable.jmx=true

es.path.conf:es的配置文件

es.path.home:主要是加载modules,plugins

java.security.policy:java.policy的文件


执行gradlew和执行小象的区别?

gradlew使用的GRADLE_USER_HOME配置项是系统配置项

小象使用的GRADLE_USER_HOME是idea配置的(Gradle user home:该目录配置的是jar包下载目录D:\gradle\.gradle)

gradlew:固定使用gradle-wrapper.properties的distributionUrl指定的gradle

小象使用idea配置的Use Gradle from(Specified location;gradle-wrapper.properties)


最佳实践:

一、配置GRADLE_USER_HOME

系统变量的GRADLE_USER_HOME和idea配置的Gradle user home: 配置成相同的D:\gradle\.gradle 可以避免重复下载包

idea配置成gradle-wrapper.properties

这样gradlew和小象就会使用相同的gradle和GRADLE_USER_HOME

※:只能在项目目录下执行gradlew,gradlew其实不是一个配置在path下的命令。是项目根目录下的一个可执行文件

※:不用配置系统变量的GRADLE_HOME,当然这样不能在任意使用gradle命令。

验证gradlew和小象是否使用同一版本gradle

./gradlew clean

找到小象的clean

查看输出日志 gradle版本

二、不配置GRADLE_USER_HOME

不配置系统变量GRADLE_USER_HOME,不设置idea配置的Gradle user home,那么默认就是${user_home}/.gradle

可以提前创建${user_home}/.gradle,编辑好init.gradle

idea配置成gradle-wrapper.properties

那么gradlew和小象使用的都是gradle-wrapper.properties的gradle版本。下载的jar包都在${user_home}/.gradle


其他

gradle配置

GRADLE_USER_HOME:jar包的下载目录,跟maven的repo目录一个意思

GRADLE_HOME:gradle的安装目录,跟maven_home一个意思

idea的gradle配置

File | Settings | Build, Execution, Deployment | Build Tools | Gradle

①:Gradle user home:该目录配置的是jar包下载目录(D:\gradle\.gradle)。如果未配置,使用环境变量的GRADLE_USER_HOME,如果环境变量未配置,使用${user_home}/.gradle

②:Use Gradle from:Specified location  选择本地安装的gradle目录:D:\gradle\gradle-7.3.3

如果Use Gradle from选择gradle-wrapper.properties,那么使用项目的gradle/wrapper/gradle-wrapper.properties的配置

不同项目的gradle可能使用的gradle版本不一致。可以根据gradle-wrapper.properties配置手动下载对应版本的gradle,然后配置Use Gradle from:Specified location

③:命令行或者idea的terminal执行gradlew gradle命令时,使用的是环境变量配置的GRADLE_HOME:gradle的安装目录,可能跟idea的小像执行gradle命令使用的gradle版本不一定一样。

④:gradle-wrapper.properties参数说明

GRADLE_USER_HOME:环境变量或者idea的(Gradle user home)

distributionUrl:下载gradle地址,可以是本地文件目录

zipStoreBase和zipStorePath组合成下载保存gradle.zip的保存目录

distributionBase和distributionPath组合成了下载后的gradle.zip的解压目录

检查wrapper/dists下是否有对应版本。如果没有,下载zip包并解压到wrapper/dists

distributionBase=GRADLE_USER_HOME

distributionPath=wrapper/dists

distributionUrl=https\://services.gradle.org/distributions/gradle-7.3.3-all.zip

zipStoreBase=GRADLE_USER_HOME

zipStorePath=wrapper/dists

distributionSha256Sum=c9490e938b221daf0094982288e4038deed954a3f12fb54cbf270ddf4e37d879

下载ml-cpp-7.13.4-SNAPSHOT.zip

使用阿里云服务器:wget  https://prelert-artifacts.s3.amazonaws.com/maven/org/elasticsearch/ml/ml-cpp/7.13.4-SNAPSHOT/ml-cpp-7.13.4-SNAPSHOT.zip

修改elasticsearch\x-pack\plugin\ml\build.gradle

urlSystem.getProperty('build.ml_cpp.repo','https://prelert-artifacts.s3.amazonaws.com')

==>urlSystem.getProperty('build.ml_cpp.repo','https://systema.waliwang.com/ff/')

在服务器上放置ml-cpp-7.13.4-SNAPSHOT.zip下载文件

/data/prod/tomcat/webapps/ff/maven/org/elasticsearch/ml/ml-cpp/7.13.4-SNAPSHOT/ml-cpp-7.13.4-SNAPSHOT.zip

对应的下载链接:https://systema.waliwang.com/ff/maven/org/elasticsearch/ml/ml-cpp/7.13.4-SNAPSHOT/ml-cpp-7.13.4-SNAPSHOT.zip

下载jdk卡住:distribution:archives:jdk_bundled_windows_x64 > adoptopenjdk

打包命令如果是需要jdk,可能无法下载./gradlew :distribution:archives:windows-zip:assemble

可以换成不需要jdk的打包命令./gradlew :distribution:archives:no-jdk-windows-zip:assemble ##windows包

启动其他错误:

Unknown codebases。。。:org.elasticsearch.bootstrap.PolicyUtil#readPolicy去除259行的IllegalArgumentException("Unknown codebases "

java.security.AccessControlException: access denied ("java.lang.RuntimePermission" "setContextClassLoader")

在文件增加D:\elasticsearch-7.13.4\config\java.policy

permission java.lang.RuntimePermission "setContextClassLoader";

其他参考

https://zhuanlan.zhihu.com/p/188725714

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容