리꾸므

26번째 발자국_Ubuntu를 통해 Redis 사용하기(feat. vi) 본문

발걸음/일지

26번째 발자국_Ubuntu를 통해 Redis 사용하기(feat. vi)

리꾸므 2022. 9. 22. 22:55

 

SUMMARY

  • 내가 어제 한것은 다 삽질! 그래도 도움은 되었다!
    • 처음 생각한 로직
    • ubuntu에 redis 설치 및 외부접속 허용
  • GET
    • Ubuntu에 Redis 설치하기
    • Ubuntu에 설치한 Redis 외부접속 허용하기
    • redis-cli 이용하여 값 확인하기

 

 


 

EXPERIENCE

 

  •  로컬서버에서 redis를 통해 리프레시 토큰을 저장하고 사용했었다. 그럼 이제 배포할때는 어떻게...?
    일단 처음 생각한 내용은 이렇다
    1. redis 설정을 bind 0.0.0.0으로 모든 로컬에서 접근 가능하도록 승인
      daemonize yes로 변경하여 백그라운드 실행
    2. 도커로 redis 가동
    3. properties에 host 설정하여 서버배포하여도 도커 redis 사용하도록 하기

  •  일단 결론을 말하면 된다. 되긴 되는데, 그러면 내가 컴퓨터를 계속 켜놓아야하는거 아닐까?... 그때서야 내가 삽질을 거하게 했다는걸 알았다. 그래서 대체 방법을 찾았는데 총 세가지정도가 있었다.
    1. ec2 서버에 도커를 설치하여 거기서 redis 기동
    2. aws에 있는 ElastiCache로 redis 대체
    3. ec2서버에 redis를 설치해서 외부접속 허용
  • 1번은 ec2에 굳이 도커를 설치하고 다시 redis 설치할 이유가 없다, 2번은 ec2내에서만 사용가능하다고 하길래 상관은 없지만 제외, 결국 3번으로 결정하고 구글링을 시작했다. 근데 계속 따라해도 안되네? 왜 안되지? 고민을 몇시간하면서 하다가 깨우친것은 구글링을 잘못했다는 것, 나는 ubuntu로 사용중인데 구글링에다가 'ec2에 redis 설치, 배포'를 검색했다.. 그러니 우분투가아니라 다른 centos  같이 다른 리눅스를 사용하는 내용만 나왔던거고 그때까지 리눅스는 다 똑같은 계열로만 본 나는 계속 따라하다가 안된거였다.

    이후 바로 redis를 설치했다. 외부접속 관련하여 오류가 발생했지만 이 이야기는 오류 창고로!

 

 


 

 

GET

 

Ubuntu에 Redis 설치하기

 순서대로 ubuntu에 입력하면 된다!

1.  Ubuntu 업데이트

sudo apt update && sudo apt upgrade

 

2. 필수 패키지 설치

sudo apt install software-properties-common apt-transport-https curl ca-certificates gnupg2 curl -y

 

3. GPG 키 가져오기

curl -fsSL https://packages.redis.io/gpg | sudo gpg --dearmor -o /usr/share/keyrings/redis-archive-keyring.gpg

 

4. 저장소 가져오기

echo "deb [signed-by=/usr/share/keyrings/redis-archive-keyring.gpg] https://packages.redis.io/deb $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/redis.list

 

5. 새 저장소 소스 반영하도록 소스 목록 업데이트

sudo apt-get update

 

6.  Redis 설치, 설치가 되어있을 경우 업그레이드로 표시될 수 있음

sudo apt install redis -y

 

7. apt-cache 정책명령 redis.io 버전을 설치했는지 확인

apt-cache policy redis

apt-cache policy redis 예제

 

8. 시스템 부팅 시 Redis 인스턴스를 활성화 설정

sudo systemctl enable redis-server --now

 

9. 오류없는지 확인

systemctl status redis-server

systemctl status redis-server 예제

Active:부분이 active(running)으로 되어있으면 무사히 작동하고 있는 거다. 

이제 설치는 완료되었으니 외부접속이 가능하도록 설정해보자.

 

 

 


 

 

Ubuntu에 설치한 Redis 외부접속 허용하기

1. redis.conf 파일 vi 편집으로 실행

sudo vi /etc/redis/redis.conf

 

1_1. 파일이 열리지 않는 경우

sudo chmod 755 redis.conf

 

2. 'bind 127.0.0.1'을 bind 0.0.0.0으로 편집( line 87 )

/눌르면 입력이 바로 왼쪽 하단에 생긴다. 거기에 검색어 입력 후 엔터눌르면 끝!

  1. /bind 하고 엔터 눌르면 검색, n눌르면 다음 차례로 넘어간다.
  2. bind 127.0.0.1에서 i 버튼 눌르면 입력모드로 변경, bind 0.0.0.0으로 변경
  3. esc를 눌러서 입력모드에서 읽기모드로 다시 돌아온다.
  4. 127.0.0.1은 내부, 로컬만 가능한 상태다. 0.0.0.0은 외부 ip도 접속이 가능하도록 허용한 것
  5. 검색이 안될경우 몇번째 줄에 있는지 항목 옆에 적어놓았으니 이걸로 오른쪽 하단에 적힌 줄보면서 찾아보자

 

3. 'maxmemory 500m, maxmemory policy allkeys-lru 변경( line 1119,14 /   1148.28)

  1. redis에서 사용할 수 있는 용량을 정해주자.
  2. 마찬가지로 /maxmemory로 검색
  3. 처음은 사용하지않게 주석처리되어있을텐데 #maxmemory에서 #를 삭제해 주석을 지워주면 된다. 
  4. ubuntu 프리티어는 1G가 제공되기 때문에 500m로 설정해주면 된다.

  1. 이제 용량이 가득찰경우 오래된 파일을 지우도록 설정해보자
  2. maxmemory 항목에서 조금만 더 내리면 maxmemory policy가 바로 보인다. 
  3. 이또한 #을 지워주고 policy 뒷부분을 allkeys-lru로 변경하면 된다.

 

4.  Redis 비밀번호 설정( line 1036.1)

  1. 보호모드를 끄지않는한 외부 호스트를 허용해도 비밀번호가 없으면 접속이 안된다.
  2. /requirepass 검색 찾은 다음 i를 눌러 입력모드로 변경
  3. 주석을 지우고 'requirepass (비밀번호입력부분)' 비밀번호 입력부분에 본인이 원하는 비밀번호를 입력하자!  
  4. esc를 눌러서 입력모드에서 읽기모드로 다시 돌아오면 끝!

 

5. 백그라운드 설정( line 309.13)

  1. 이 설정은 위의 순서를 따라와주었으면 당연하게도 백그라운드 설정이 되어있는거지만, 그래도 혹시 모르니깐! 확인해보자
  2. /daemonize 검색 찾은 다음 i를 눌러 입력 모드로 변경
  3. daemonize yes로 변경
  4. esc를 눌러서 입력모드에서 읽기모드로 돌아오면 끝!

6. redis.conf 파일 저장

  • 읽기모드에서 :wq 입력하면 저장하면서 파일이 꺼진다.
  • 만약 안될경우 :w!로 강제저장을 해주자. 이후 Ctrl+z로 빠져나오면 된다. 또는 wq!로 저장하고 나와도 된다.

 

7. redis 다시 실행

sudo systemctl restart redis-server

 

# Vi 편집기 명령어

입력모드 - i
입력모드 - a
왼쪽으로 이동 - h
아래로 이동 - j
위로 이동 - k
오른쪽으로 이동 - l
한 글자 삭제 - x
한 단어 삭제 - dw
한 줄 삭제 - ddn
번째 줄 삭제 - ndd
현재 커서 위치부터 끝까지 : D검색 - /(내용)
현재줄 복사하기 - yy
n번째 줄 복사하기 - nyy
붙여넣기 - p
undo(실행취소) - u
변경 사항을 저장하지 않고 종료 - :q!
저장 - :w
저장 후 종료 - :wq
저장 후 종료 - :ZZ

 

 


#20220928추가

redis-cli 이용하여 값 확인하기

  • redis를 사용할때 안에 값이 잘들어오는지 궁금할때가 있다. 물론 그부분도 템플릿을 이용하여 해결하면 간편하지만 그전에 확인하고 싶을때, 그외 상황에서 내부값들을 확인하고싶을때를 위한 명령어를 추가한다.

1. redis cli 접속

redis-cli

 

2. redis cli 비밀번호 접속

AUTH (비밀번호)
  • AUTH (비밀번호) 제출(ex: AUTH QWE1234)
  • OK가 화면에 뜨면 잘제출된 것

 

3. set명령어로 key-value 데이터 입력

set [key] [value]

4. get명령어로 데이터 출력

get [key]

 

5. 저장된 key 검색

keys *검색어*

 

6.전체 key 조회

keys *

 

 


 

 

TOMORROW

  • 카카오 소셜 로그인 기능 구현
  • 인프런 강의 시청 및 정리

 

 

참고

사실 밑에 블로그가 정리 더 잘되어있다!

https://ko.linuxcapable.com/how-to-install-redis-on-ubuntu-20-04/