redis는 정식으로 rpm을 제공하지 않고 있어 make해야 함.
(일부 rpm 제공 사이트에서 redis의 rpm을 제공하고 있음.)
# 빌드를 위한 make 설치
dnf -y install make
# c 컴파일러 설치
dnf -y install gcc
# test를 위한 파일
dnf -y install tcl tcl-devel which
tcl, tcl-devel은 make test시에 사용됨.
which는 install에서 사용함. ( docker로 설치시 이게 없어서 install이 안되는 경우가 있음.)
redis.io에서 경로 확인
# redis 6.2.6 download
wget https://download.redis.io/releases/redis-6.2.6.tar.gz
# 압축 풀기
tar zxvf redis-6.2.6.tar.gz
# 압축 경로 이동
cd redis-6.2.6
# 컴파일로 남아 있는 파일이 있는 경우 에러가 발생하므로 clean으로 처리
make distclean
# redis 컴파일
make
# redis 설치
make install
redis는 install로 설치시 기본 경로로 /usr/local/bin을 사용.
만약 경로를 변경하고자 하면 src/Makefile 파일의 아래 부분을 수정.
PREFIX, INSTALL_BIN 의 경로를 수정
redis를 특정 계정으로 실행하기 위해서 redis의 계정을 생성
useradd --system --no-create-home redis
# config file 생성
mkdir -p /etc/redis/
# 압축 푼 redis 폴더에 redis.conf가 존재함.
cp redis.conf /etc/redis/redis.conf
# redis 계정이 접근 가능하도록 권한 설정
chown -R redis:redis /etc/redis/
# dump 파일 경로
mkdir -p /var/lib/redis
chown -R redis:redis /var/lib/redis/
# log 파일 경로
mkdir -p /var/log/redis/
chown -R redis:redis /var/log/redis/
# 시작시 필요 없는 로그 등을 안보이게 함.
always-show-logo no
# daemon 형태로 프로그램 실행, pid 파일 생성 됨,
daemonize yes
# dump 파일 저장 경로, 'dbfilename dump.rdb'에서 사용 됨.
dir "/var/lib/redis/"
# log 출력 경로 설정, 설정하지 않으면 기본 출력으로 출력 됨.
logfile "/var/log/redis/redis.log"
/usr/local/bin/redis-server /etc/redis/redis.conf
/usr/lib/systemd/system/redis.service 파일에 아래 내용 생성
(vi /usr/lib/systemd/system/redis.service)
[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 --daemonize no --supervised systemd
ExecStop=/usr/local/bin/redis-cli shutdown
WorkingDirectory=/usr/local/bin/
[Install]
WantedBy=multi-user.target
서비스 데몬 로드
systemctl daemon-reload
# 서비스 활성화(재부팅시에 자동 시작)
systemctl enable redis
#서비스 시작
systemctl start redis
#서비스 중지
systemctl stop redis