[TIL] Nest.js Nodemailer를 통한 이메일 인증 구현(1)
이번 프로젝트에서 오랜만에 nodemailer를 통한 회원가입 로직을 만들게 됐다. 지난 번 express에서는 인증 링크가 담긴 메일을 보내 유저가 링크를 클릭하는 것이 트리거가 되어 user 테이블의 isValid 컬럼이 false에서 true로 바뀌며 로그인이 가능하도록 로직을 구성했다. 하지만, 이번에는 레디스를 사용해서 메일로 보낸 인증번호를 저장하고 유저가 일치하는 인증번호를 입력해야 회원가입 로직이 완료되도록 할 생각이다.
일단 redis를 사용해볼 기회가 없었는데 이번 기회에 확실히 해보고 넘어가야겠다는 생각이 들었다. redis는 대표적인 cache 서버 오픈소스로, 필수적인 스택이다. 그런데 redis가 곧 요금제로 바뀐다는 소식을 들어서 이번 기회가 아니면 사용해볼 기회가 없을 지도 모르겠다.
1. Redis란
REmote DIctionary Server의 약어로, Redis는 속도가 상당히 빠른 인메모리의 키 값 데이터 구조이다.
Set, Hash, List, Sorted Set, Streams등의 여러 자료구조를 활용해서 애플리케이션에서 다양한 기능들을 구현해 볼 수 있다.
사용해볼수 있는 방법은 두가지가 있는데, https://github.com/microsoftarchive/redis/releases 로 접속하여 windows용 레디스를 다운로드 받는 방법과 ec2에 설치하는 2가지 방법이 있는데 ec2에 설치하게 되면 elastic cache를 사용하게 되는데, 요금이 부과되기에 일단 로컬에서 만들어보고자 window용 redis를 설치했다. mac은 설치없이 사용할 수 있다는 이야기를 들어 약간 부러웠다.
저 링크를 타고들어가 msi라는 확장자의 파일을 받아서 그대로 설치하면 되는데, 기본 포트는 6379이다. 설치가 완료되면 서비스에 자동으로 등록되어 실행되며, 작업관리자에서 확인할 수 있다. 윈도우 서비스를 사용하지 않는다면, redis-server.exe를 실행해서 수동으로 레디스 서버를 실행할 수 있다. 기본 설치경로는 C:/Program Files/Redis에 들어있다.
레디스 서버를 실행시킨 후, 레디스 명령어를 사용할 수 있는 redis.cli.exe를 실행시킨다. 터미널이 뜨면 ping 명령어로 레디스가 잘 작동되는지 확인한다. 성공했다면 pong이 답으로 올 것이다. 기본적으로 set-get명령어를 통해 key-value 형태의 데이터를 입력하고 조회할 수 있다.
다양한 설정이 있는데, redis.windows-service.conf 파일에서 수정할 수 있는데, 처음에 이것을 어떻게 실행시키는 지 몰라서 한참을 해맸다. 구글링을 해서 아래의 방법을 찾아냈다.
.conf 파일 여는 방법
- 메모장을 관리자 권한으로 실행 - 메모장 - 열기
- .conf 파일 선택 후 열기
1) 포트번호 변경
저 파일에서 port로 검색하여 6379로 설정되어 있는것을 확인할 수 있는데, 원하는 번호로 바꿀 수 있다.
2) 비밀번호 변경
역시 저 파일에서 requirepass로 검색하면 foobared로 설정되어 있는 것을 확인할 수 있는데, 역시 원하는 내용으로 바꾸면 된다. 그리고 기본적으로 주석처리가 되어 있는데, 이를 해제해야 똑바로 적용된다.
3) 외부 접근 허용 IP 설정
bind 부분의 주석을 해제하고 허용 아이피를 정해주면 된다.
4) 메모리 최대크기 설정
maxmemory를 검색하여 주석을 해제하고 설정할 수 있다.
5) log 파일 설정
기본으로 log파일이 생기지 않도록 logfile 값이 ""으로 빈문자열로 설정되어 있따. 이것을 찾아서 어떤 파일로 로그를 기록할 것인지 작성하고 실행하면 로그파일이 생성된다.
설정을 마친 후 작업관리자 -> 서비스에서 Redis를 재시작하면 자동으로 설정이 적용된다. 만일 윈도우로 Redis를 사용하지 않고 수동으로 관리하고 싶다면 서비스탭에서 Redis를 종료하고 redis.window.conf 파일을 수정한 수 터미널에서 경로를 찾아들어가서 redis-server.exe redis.window.conf를 입력하면 된다.
- 참고자료
[REDIS] 📚 Window10 환경에 Redis 설치 & 설정
Redis 윈도우 설치 Redis 다운로드 페이지로 이동하여 설치 프로그램을 다운로드하고 설치를 진행한다. Releases · microsoftarchive/redis Redis is an in-memory database that persists on disk. The data model is key-value, but
inpa.tistory.com
https://jsgrow-dev.tistory.com/manage
Tistory
좀 아는 블로거들의 유용한 이야기
www.tistory.com