채팅 기능을 구현하기 위해서 비교적 가벼운 데이터베이스가 필요한데 이때 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 파일들의 권한을 변경해주자
댓글