이전에 로컬에 redis를 깔아서 실행했었다. 로컬에 깔아서 사용하는 것이다 보니 로컬에서 redis 서버를 꺼버리면 redis 또한 사용할 수 없다는 단점이 있다.
이를 해결하려고 방법을 찾아보니 대표적으로 AWS를 사용하는 방법이 있었다. 그 중에서도 두 가지 방법이 있었는데
1. AWS에 ElastiCache를 사용해서 redis 캐시 서버 만들기
2. AWS의 EC2에 직접 redis 설치하기
처음에 1번 방식을 이용해서 서버를 만들었는데 vscode로 연결하려고 하니 연결이 되지 않았다. 이유를 알아보니 보안상 ElastiCache는 AWS의 내부에서만 사용이 가능하다는 것이었다.
난 어떻게든 될 것이라며... 삽질을 몇 시간동안 했고 프로젝트 마감기한이 있어 포기할 수 밖에 없었다.
그러고 선택한 방법이 2번이다.
ssh로 EC2에 접속한 뒤 직접 redis를 설치하여 백그라운드로 돌려놓는 방식이었는데 그 과정에서 엄청난 실패와 삽질이 있었다....
잊지 않고 다음엔 바로 성공하기 위해 기록한다!
우선 AWS의 EC2 인스턴스를 생성해준다. 생성하는 방법은 간단하니 생략한다.
이후 보안그룹을 설정해주어야 하는데 인스턴스를 생성할 때 ssh, https, http 를 체크해주면 기본적으로 이 세 포트는 접근이 가능하도록 보안그룹이 열려있다.
하지만 우리는 redis로도 접속을 해야하기 때문에 보안그룹에 들어가서 TCP에 6379번 포트를 열어준다.
캡쳐 사진 아래에 SSH 포트도 있다!
그리고 탄력적 IP에 들어가서 IP를 하나 생성해주고 위에서 만든 EC2 인스턴스를 연결해준다.
이제 EC2 서버에 접속해보자.
인스턴스를 선택하고 오른쪽 위에 연결을 누르면 SSH로 연결할 수 있는 명령어가 뜬다.
이제 EC2에 접속이 완료되었다!!
redis 설치시 안되서 인스턴스를 삭제하고 새로 생성한 뒤 원래 있던 보안키에 연결하니까 오류가 떴었다.
찾아보니 보안키 연결하는 과정에서 문제가 있었다. 그럴 때는 아래와 같은 명령어를 쳐주면 다시 접속이 가능하다.
ssh-keygen -R [EC2 ip]
그리고 또 다른 오류가 생겼었는데 자꾸 ssh 명령어가 실행되지 않고 Connection timeout이 떴었다. 그럴때는 여러 이유를 찾아보아야 하는데
등의 방법이 있다. 나는 22번 포트의 접근 ip를 내 ip로 바꾸고 인스턴스를 중지한 뒤 재부팅하니까 접속이 가능했다.
제일 많은 시간 소모가 있었던 구간이다. 여러 블로그들을 확인하고 찾아봤었는데 다양한 오류가 있었다...
처음 들어간 블로그에서는
sudo apt-get install redis-server
명령어를 이용하길래 그대로 따라 치니 apt-get
이 없다는 오류가 떴었다. 알고보니 yum
사용으로 바꼈다고 하여
sudo yum install redis-server
로 바꿨더니 계속 그런 패키지는 없다고 뜨는 것이다. 여기서 시간을 한참 잡아먹고 다른 포스팅을 보니 redis 파일을 직접 다운받아서 실행하는 방법이 있었다.
그 방법을 참고하여 그대로 따라했더니 성공했다!내가 접속할 때도 되고, 다른 팀원이 접속해도 연결이 됐다. 그런데 갑자기 연결이 끊기더니 이후로 계속 연결이 되지 않았다.
결국 인스턴스를 삭제하고 새로 생성해서 접속했다. << 이 과정을 여러 번 반복하다가 겨우 성공했다.!!!! 그때 내 기쁨이란...
https://mygumi.tistory.com/133
위의 블로그를 참고해서 설치했다!
EC2 서버에 접속한 상황에서
sudo yum update
sudo yum install gcc make
해준다. 본인은 yum update
시에 이미 설치가 되어 있어서 더 이상 설치하지 않는다는 문구가 떠서 그냥 다음으로 넘어갔다.
sudo wget http://download.redis.io/redis-stable.tar.gz
sudo tar xvzf redis-stable.tar.gz
cd redis-stable
make
위의 명령어가 잘 실행된다면 설치가 끝난것이다!
혹시 make 시에 오류가 뜨거나 안된다면
sudo yum install tcl
make distclean
make
를 해주자.
src 폴더에서
./redis-server
redis-cli
를 한 뒤 ping을 치면 pong이 나오면 잘 된 것이다.
자세한 건 위의 사이트에 들어가면 설명이 잘 나와있으니 참고하자.
sudo nano /etc/redis/6379.conf
에서 설정을 바꿔주면 된다.
bind 0.0.0.0
daemonize yes
logfile /var/log/redis_6379.log
dir /var/redis/6379
bind 0.0.0.0을 해줘야 나 이외에도 redis에 접속이 가능하다.
daemonize yes를 해주면 백그라운드에서도 돌아간다.
위 사이트대로 설정을 마치고 나면 redis-server가 실행되고 있다.
sudo service redis-server start
를 했을 때 Starting redis-server 가 뜨고 별 다른 움직임이 없길래 또 잘못되었나 했는데 제대로 실행된것이니 안심하고 [ctrl]+C
누르자.
이렇게 하고나면 redis 설정이 모두 끝났다.
혹시나 vscode와 연결했을 때
이러한 오류가 생긴다면 이번 업데이트로 바뀐 보안 정책 때문이니 아래와 같이 따라해주면 된다.
1. 위에서 설정한 conf 파일에 들어가서 `protected-mode no`로 바꿔주거나
2. redis-cli에 접속하여 `config set protected-mode no` 해준다.
나는 1번 방법도 잘 안되서 2번 방식으로 성공했다.
이젠 정말 잘 실행될것이다!!!!
기억하기
참고
https://handr95.tistory.com/30
https://mygumi.tistory.com/133
https://bluexmas.tistory.com/1103
https://realmojo.tistory.com/183
https://velog.io/@ssoop/AWS-EC2에-Redis-설치
많은 도움 받고 갑니다~~
당신 👍