[django+elasticsearch+vue.js] (1) - 엘라스틱서치와 장고 설치하기

솜솜·2022년 10월 27일
0

목표

  • 도커로 elasticsearch, kibana, logstash 설치
  • django 설치

환경

  • window 10
  • vscode
  • vscode 터미널

주의사항

이 블로그와 게시글은 기록용에 가깝기 때문에 설명이 정확하지 않으니, 공식 문서를 통해 개념을 정립하시길 바랍니다.


엘라스틱서치(Elasticsearch) docker로 설치하기

docker-elk 레포지토리는 도커로 손쉽게 elasticsearch, logstash, kibana를 설치할 수 있다.

https://github.com/deviantony/docker-elk

위 깃허브를 fork하거나 다운로드하고, readme의 순서대로 진행한다.

(Java Heap 문제가 종종 있으니, elasticsearch 도커의 공식문서 (링크)를 참고하길 바람

  1. 깃허브의 레포지토리를 복사
    1-2. docker desktop을 사용한다면, docker-desktop을 실행 또는 재실행하고 진행해야함
  2. docker-compose build
  3. docker-compose up
  4. http://localhost:5601 에 접속해 초기 로그인 정보를 입력한다.
    • 초기 로그인 정보
      id : elastic
      pw : changeme

접속하면 kibana 대시보드를 사용할 수 있다. kibana에 대한 설명은 이 글에서 다루지 않기 때문에 공식문서를 참고하길 바람

5. 로그인 후, cmd 또는 powershell 등 터미널 창에서 아래 세 개의 명령어를 순차적으로 입력해 비밀번호를 재설정한다.

  • docker-compose exec elasticsearch bin/elasticsearch-reset-password --batch --user elastic
  • docker-compose exec elasticsearch bin/elasticsearch-reset-password --batch --user logstash_internal
  • docker-compose exec elasticsearch bin/elasticsearch-reset-password --batch --user kibana_system

입력하면, 잠깐의 로딩 후 아래 그림과 같이 비밀번호가 나타난다. 이 작업을 반복한다.

  1. 세 개의 비밀번호를 .env 파일에 입력한다. 초기 비밀번호는 'changeme'로 설정되어있음

  1. 그리고, 새 비밀번호로 logstash와 kibana를 다시 시작한다.
$ docker-compose up -d logstash kibana

http://localhost:5601에 접속해 로그인 할 때 주의할 점은 kibana의 비밀번호가 아니라, elasticsearch의 비밀번호를 입력해야한다!

  1. elasticsearch 확인을 위해 http://localhost:9200에 접속하고, 팝업 창에 로그인 정보를 입력한다.

아래 그림과 같이 정보가 뜬다면 무사히 설치한 것이다.


장고(django) 설치하기

설치하기전 가상환경 설정하기

vscode 환경을 기준으로 파이썬 가상환경을 설정한다.

  • python -m venv venv_search 를 터미널에 입력
  • [ Ctrl + Shift + P ] 키를 눌러 ">select Interpreter"를 검색해서 가상환경 선택
  • 그리고 새 터미널 생성하면, 자동으로 가상환경에 진입함

명령어를 입력하면 루트폴더에 가상환경으로 설정한 이름의 폴더가 생성된다. (여기서는 'venv_search')

그리고 필요한 라이브러리를 한번에 설치하기 위해서, 루트 경로에 requirements.txt를  생성한 뒤 아래 내용을 작성한다.

라이브러리의 버전은 각자 원하는 환경에 맞게 변경하고, 라이브러리를 추가하거나 삭제해도 됨.
아래 예시는 기존에 다른 대시보드를 구축하려고 만들어놨던 것이라 그닥 참고가 되지 않을 수 있음...

특히, elasticsearch가 6, 7, 8버전으로 업데이트 되면서 많이 변했기 때문에 원하는 버전이 있다면 특정하는 것이 좋음.
이 블로그의 글은 최대한 현재(2022-10-25) 기준으로 최신 버전의 엘라스틱서치를 다루고자 함.

Django==3.1.14
pyexcel
pyexcel-io
elasticsearch
elasticsearch-dsl
django-elasticsearch-dsl
djangorestframework
numpy==1.22.3
pandas==1.4.2
asgiref==3.5.0
autopep8==1.5.2
dj-database-url==0.5.0
gunicorn==20.0.4
plotly==4.6.0
psycopg2-binary==2.9.3
pycodestyle==2.5.0
python-dateutil==2.8.1
python-decouple==3.3
pytz==2020.1
retrying==1.3.3
six==1.14.0
sqlparse==0.3.1
Unipath==1.1
whitenoise==5.0.1
sparql_dataframe==0.4
python-dotenv==0.20.0

터미널에 pip install -r requirements.txt를 입력해 모든 라이브러리를 설치한다.

장고 프로젝트 생성하기

보통 장고 프로젝트를 생성하면, 프로젝트 이름으로 루트폴더가 생기고 그 안에 project와 app이 설치된다.
하지만, 내 경우 그런 구조를 선호하기 않기 때문에 아래와 같이 .을 붙여서 해당 경로를 루트 폴더로 설정해준다.

#.을 붙이면 해당 디렉토리에 manage.py 생김
$ django-admin startproject search_project .
$ django-admin startapp search_app

잘 설치되었는지 확인하기 위해 manage.py가 있는 경로에서


참고글

- Install Elasticsearch with Docker

- Elasticsearch 설치 시 vm.max_map_count 값 변경하기

- Elastic 가이드북 

- ElasticSearch 무작정 시도해보기 (with. django)

[여담]

장고, 엘라스틱서치로 구현한 웹 프레임워크 글들이 존재하지만,

최신버전의 엘라스틱을 반영하지 않고 있어서 뭔가 하나씩 안되더라구요..

이부분을 야매로 고군분투하며 해결한 사람으로써 조금이라도 도움이 되고자 블로그에 기록을 남깁니다!

하지만 블로그 글 쓰는거 호락호락 하지 않군요...그래도 포기하지 않고 끝까지 작성해보겠습니다~~

다음 포스팅은 엘라스틱서치에 json 데이터를 넣는법!😊

profile
매번 잊어버리는 것들을 기록합니다.

0개의 댓글