본문 바로가기
CICD

리눅스 Ec2에 Redis6 설치

by 순원이 2024. 1. 27.

※ 결과만 보고 싶으신 분은 앞 과정은 생략해주시고 맨 마지막에 있는 설치과정을 따라해주세요

 

설치

sudo yum update
sudo yum install gcc make

mkdir Redis
cd Redis
sudo wget http://download.redis.io/redis-stable.tar.gz
sudo tar zxvf redis-stable.tar.gz
cd redis-stable
sudo make

sudo cp src/redis-server src/redis-cli /usr/local/bin/

sudo mkdir /etc/redis
sudo cp redis.conf /etc/redis
cd /etc/redis
sudo vim redis.conf
sudo mkdir /var/lib/redis

 

vim에서 단어를 검색할 때 '/' 명령어로 쉽게 찾을 수 있습니다.

ex) /bind

백그라운드 실행을 위한 설정
로그 기록할 파일
스냅샷 저장 공간 설정

 

레디스 백그라운드 실행

레디스를 백그라운드로 실행하기 위해 Service unit이 필요합니다 

sudo wget https://raw.githubusercontent.com/saxenap/install-redis-amazon-linux-centos/master/redis-server
sudo mv redis-server /etc/init.d
sudo chmod 755 /etc/init.d/redis-server

 

위에서 입력한 경로와 같아야합니다.

위에서 입력한 코드

 

백그라운드 실행 설정

sudo chkconfig --add redis-server

sudo chkconfig --level 345 redis-server on

 

레디스 실행

//실행
redis-server 

//백그라운드에서 실행
sudo service redis-server start
//or
sudo systemctl start redis-server

레디스 상태 확인

sudo service redis-server status
//or
redis-cli ping

 


 

성공

 


오류1

포트 충돌 확인: 다른 서비스나 프로세스가 Redis와 동일한 포트를 사용하고 있는지 확인하세요. Redis 기본 포트는 6379이며, 다른 프로세스가 해당 포트를 사용하고 있는 경우 Redis 서버가 시작되지 않을 수 있습니다.

sudo netstat -tulnp | grep 6379

 

앞서 말씀드린 레디스 상태 확인 명령어를 통해 확인해보니 


1. redis-server.service: Can't open PID file /run/redis.pid (yet?) after start: No such file or directory
2. redis-server.service: Failed with result 'protocol'.

위 두가지가 문제였습니다. 

/run 디렉토리를 살펴보니 redis.pid가 아닌 redis_6379.pid가 있었습니다. 그래서 redis.conf 파일내에 pidfile 설정을 redis_6379.pid -> redis.pid로 바꿔주었습니다.

 

결과

redis.pid가 생겼으나 : New main PID 42646 does not exist or is a zombie. 라는 문구가 떴습니다.

sudo nano /etc/sysctl.conf

vm.overcommit_memory = 1
sudo sysctl vm.overcommit_memory=1​
vm.overommit_memory = 1

 

 

System 파일도 설정해봤다.

[Unit]
Description=Redis In-Memory Data Store
After=network.target

[Service]
User=redis
Group=redis
ExecStart=/usr/local/bin/redis-server /etc/redis/redis.conf
ExecStop=/usr/local/bin/redis-cli shutdown
Restart=always
StartLimitIntervalSec=0
StartLimitBurst=5000

[Install]
WantedBy=multi-user.target

~

에러

# WARNING overcommit_memory is set to 0! Background save may fail under low memory condition. To fix this issue add 'vm.overcommit_memory = 1' to /etc/sysctl.conf and then reboot or run the command 'sysctl vm.overcommit_memory=1' for this to take effect.

 

 

점점 알 수 없는 에러가 늘어나고 이틀 동안의 시간이 뺐겼다. 너무 많은 시간을 보냈기엔 다 삭제해주고 다른 방법을 찾아보기로 했다. 

1. 도커로 레디스 띄위기

2. 아마존 리눅스 전용 레디스 받기

도커로 받더라도 백그라운드에서 실행하기 위해서는  또 redis.service 설정을 해줘야듯 싶다. 그래서 2번 방법을 선택했다. 

// sudo yum search redis 
sudo yum install redis6

// 시작
sudo systemctl start redis6

// 상태 조회
sudo systemctl status redis6

짜잔! 이렇게도 간단하다!

 

참고로 도커 컨테이너에 Spring 서버가 있고 Ec2 내에 있는 Redis에 접근하려면 application.yml에

host 부분은 Ec2 주소를 입력해야 합니다