본 문서는 CentOS7을 기준으로 작성되었다.
엘라스틱 서치는 JVM 위에서 구동되기 때문에 jdk 설치가 선행되어야 한다.
본인의 OS에 jdk가 설치되어 있는지 확인한 뒤 설치하자.
jdk가 설치되어 있다면 STEP 1은 생략해도 된다.
#jdk 설치 확인
javac -version
#설치 가능한 jdk 버전 확인
yum list java*jdk-devel
#jdk 설치
yum install java-11-openjdk-devel.x86_64
#설치 확인
javac -version
#jdk 설치확인(미설치)
$ javac -version
-bash: javac: command not found
#설치 가능한 jdk 버전 확인
$ yum list java*jdk-devel
Loaded plugins: fastestmirror, langpacks, versionlock
Determining fastest mirrors
Available Packages
java-1.6.0-openjdk-devel.x86_64 1:1.6.0.41-1.13.13.1.el7_3 base
java-1.7.0-openjdk-devel.x86_64 1:1.7.0.261-2.6.22.2.el7_8 update
java-1.8.0-openjdk-devel.i686 1:1.8.0.262.b10-0.el7_8 update
java-1.8.0-openjdk-devel.x86_64 1:1.8.0.262.b10-0.el7_8 update
java-11-openjdk-devel.i686 1:11.0.8.10-0.el7_8 update
java-11-openjdk-devel.x86_64 1:11.0.8.10-0.el7_8 update
java-latest-openjdk-devel.x86_64 1:14.0.2.12-1.rolling.el7
#jdk 설치
$ yum install java-11-openjdk-devel.x86_64
#설치 확인
$ javac -version
javac 11.0.8
jdk만 설치한 채로 엘라스틱 서치를 구동하려고 하면 아래와 같은 에러를 만나게 된다.
could not find java in bundled jdk at /home/deploy/Downloads/elasticsearch-7.9.2/jdk/bin/java
자바 환경변수가 설정되어 있지 않아 jdk 경로를 찾지 못하고 있다.
JAVA_HOME 환경변수를 jdk가 저장된 경로로 지정해주자.
JAVA_HOME 변수가 제대로 설정되어 있다면 STEP 2는 생략해도 된다.
#JAVA_HOME 확인
echo $JAVA_HOME
#javac 경로 확인
which javac
#javac 경로를 이용하여 jdk 경로 확인
#본인 javac 경로를 입력하자. 예시를 그대로 복붙하지 않도록 주의!
readlink -f /usr/bin/javac
javac 경로는 서버마다 다를 수 있다. 본인의 javac 경로를 입력하도록 하자.
#JAVA_HOME 확인
#아무것도 출력되지 않으면 환경변수가 설정되어 있지 않은 것
$ echo $JAVA_HOME
#javac 경로 확인
$ which javac
/usr/bin/javac
#javac 경로를 이용하여 jdk 경로 확인
#본인 javac 경로를 입력하자. 예시를 그대로 복붙하지 않도록 주의!
$ readlink -f /usr/bin/javac
/usr/lib/jvm/java-11-openjdk-11.0.8.10-0.el7_8.x86_64/bin/javac
readlink 명령어의 결과 중 /bin/javac
앞까지의 경로를 JAVA_HOME 변수에 할당하면 된다. 위의 예시에서는 아래가 jdk 경로가 된다.
/usr/lib/jvm/java-11-openjdk-11.0.8.10-0.el7_8.x86_64
변수를 등록한 설정 파일을 연다.
sudo vim /etc/profile
본인의 jdk경로를 JAVA_HOME 변수에 할당한다. 예시를 복붙하지 않도록 주의!
export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-11.0.8.10-0.el7_8.x86_64 > /etc/profile
다시 shell 창으로 나와 설정파일을 즉시 적용해준다.
source /etc/profile
JAVA_HOME이 정상적으로 적용된 것을 확인할 수 있다! 👏
$ echo $JAVA_HOME
/usr/lib/jvm/java-11-openjdk-11.0.8.10-0.el7_8.x86_64
드디어 엘라스틱서치를 설치할 수 있다. 😂
엘라스틱서치는 공식 홈페이지에 설치 방법이 자세히 나와있어서, 공식 홈페이지를 참고하는 편이 간단하다.
🔗 www.elastic.co/guide/en/elasticsearch/reference/7.9/rpm.html#rpm-repo
필자는 수동으로 RPM 설치를 수행했다.
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.9.2-x86_64.rpm
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.9.2-x86_64.rpm.sha512
shasum -a 512 -c elasticsearch-7.9.2-x86_64.rpm.sha512
sudo rpm --install elasticsearch-7.9.2-x86_64.rpm
💁♀️ Option) systemd를 사용하면 손쉽게 엘라스틱 서치를 구동하거나 중단시킬 수 있다.
#systemmd 설정
sudo /bin/systemctl daemon-reload
sudo /bin/systemctl enable elasticsearch.service
#ElasticSearch 구동
sudo systemctl start elasticsearch.service
#ElasticSearch 중지
sudo systemctl stop elasticsearch.service
엘라스틱 서치를 구동한 뒤, 간단한 명령어를 통해 제대로 올라와있는지 확인해보자.
curl -XGET 'localhost:9200'
엘라스틱 서치의 정보를 성공적으로 반환한다.👍
{
"name" : <호스트명>,
"cluster_name" : "elasticsearch",
"cluster_uuid" : <>,
"version" : {
"number" : "7.9.2",
"build_flavor" : "default",
"build_type" : "rpm",
"build_hash" : <>,
"build_date" : "2020-09-23T00:45:33.626720Z",
"build_snapshot" : false,
"lucene_version" : "8.6.2",
"minimum_wire_compatibility_version" : "6.8.0",
"minimum_index_compatibility_version" : "6.0.0-beta1"
},
"tagline" : "You Know, for Search"
}
어떤 프로젝트든 환경 세팅이 가장 어려운 법.
이제부터는 즐겁게 엘라스틱 서치를 사용할 일만 남았다.
아마도...