※ 결과만 보고 싶으신 분은 앞 과정은 생략해주시고 맨 마지막에 있는 설치과정을 따라해주세요
설치
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
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 주소를 입력해야 합니다
'CICD' 카테고리의 다른 글
리눅스 Ec2 mysql 명령어 모음 (0) | 2024.02.06 |
---|---|
Gighub Action , Docker Compose, Nginx, code deploy 무중단 배포 (0) | 2024.01.11 |
Gighub Actions,docker 배포 (1) | 2024.01.11 |