본문 바로가기
Redis

Redis daemonize 및 부팅시에 자동실행 설정하기

by reo.l 2021. 6. 2.

 

채팅 기능을 구현하기 위해서 비교적 가벼운 데이터베이스가 필요한데 이때 redis가 많이 사용된다.

redis서버를 실행할 때 데몬화를 하면 채팅 서버에 트래픽이 발생할 시에 종료되는 현상을 해결할 수 있다.

redis 서버 데몬화 방법은 간단하다.

 

/redis/redis.conf

################################# GENERAL #####################################

# By default Redis does not run as a daemon. Use 'yes' if you need it.
# Note that Redis will write a pid file in /var/run/redis.pid when daemonized.
daemonize yes # no -> yes

 

redis 설정파일로 들어가 daemonize no ->  yes로 바꾸어 주기만 하면 된다.

이제 redis-server로 서버를 켜고 ctrl + c로 종료 시 종료할 수 없다는 로그가 나온다.

하지만 이는 서버 리부트 시에 redis-server로 일일이 열어주어야 하기에 불편하다.

이를 해결하기 위해서 서비스로 등록하여 systemd에서 실행하도록 설정하여 보자.

먼저 service 등록을 위해 실행 시, 종료 시에 실행될 파일을 만들어준다.

 

#실행시에 실행될 redis-start.sh
/redis/redis-start.sh

#!/bin/sh -
/usr/local/bin/redis-server /home/ubuntu/staging/boltnnut_platform/redis-5.0.0/redis.conf
종료시에 실행될 redis-stop.sh
/redis/redis-stop.sh

#!/bin/sh -
/usr/local/bin/redis-cli -p 6379 shutdown

 

#!/bin/sh -  는 단순 주석처리가 아닌 어떠한 쉘 스크립트로 실행할지에 대한 선언문이다.

이제 이를 바탕으로 서비스 등록을 해보겠다.

 

/etc/systemd/system/redis.service

# Systemd unit file for Redis-Server

[Unit]
Description=Redis-Server
After=syslog.target network.target

[Service]
Type=forking
ExecStart=/home/ubuntu/staging/boltnnut_platform/redis-5.0.0/redis-start.sh
ExecStop=/home/ubuntu/staging/boltnnut_platform/redis-5.0.0/redis-stop.sh

[Install]
WantedBy=multi-user.target

 

이렇게 서비스 파일을 만들고 

 

 systemctl enable redis.service

 

서비스를 등록하면 리부팅 시에 redis서버가 데몬 상태로 실행이 된다. 잘 실행이 안된다면 chmod로 .sh 파일들의 권한을 변경해주자

 

 

 

'Redis' 카테고리의 다른 글

Redis 란?  (0) 2021.06.10

댓글