Redis를 도입후 운영의 편의성과 안정성을 위하여 계정생성 및 systemd을 추가로 진행 하였습니다.

 

1. 계정생성 및 패스워드 세팅

Redis 전용 계정을 생성하는 이유는 시스템 보안과 안정성을 확보하고, 운영 편의성을 높이기 위함입니다. 루트 권한 실행은 지양하고, 전용 사용자로 격리하여 Redis가 시스템에 미치는 영향을 최소화하는 것이 보안 상 권장되는 방식입니다.

[root@localhost /]# adduser redis
[root@localhost /]# passwd redis
[root@localhost ~]# lslogins
  UID USER                PROC PWD-LOCK PWD-DENY  LAST-LOGIN GECOS
    0 root                 130        0        0 May10/20:36 root
    1 bin                    0        0        0             bin
    2 daemon                 0        0        0             daemon
                             ...................
 1001 redis                  1        0        0 May12/22:18
65534 nobody                 0        0        0             Kernel Overflow User

 

- adduser : 계정 추가

- passwd : 패스워드 설정

- lslogins : 시스템에서 사용자 계정 정보들을 요약해서 보여주는 명령어

## 계정 생성
# adduser [아이디]

## 패스워드 세팅
# passwd [아이디]

 

2. redis 디렉토리 소유자와 그룹 변경

[root@localhost /]# chown -R redis:redis redis
[root@localhost /]# ls -alh
total 24K
dr-xr-xr-x.  19 root  root   248 May 11 11:35 .
dr-xr-xr-x.  19 root  root   248 May 11 11:35 ..
dr-xr-xr-x.   2 root  root     6 Nov  3  2024 afs
lrwxrwxrwx.   1 root  root     7 Nov  3  2024 bin -> usr/bin
dr-xr-xr-x.   5 root  root  4.0K May 11 11:00 boot
drwxr-xr-x.  20 root  root  3.3K May 11 11:00 dev
drwxr-xr-x. 138 root  root  8.0K May 11 11:33 etc
drwxr-xr-x.   4 root  root    32 May 11 11:31 home
lrwxrwxrwx.   1 root  root     7 Nov  3  2024 lib -> usr/lib
lrwxrwxrwx.   1 root  root     9 Nov  3  2024 lib64 -> usr/lib64
drwxr-xr-x.   2 root  root     6 Nov  3  2024 media
drwxr-xr-x.   2 root  root     6 Nov  3  2024 mnt
drwxr-xr-x.   2 root  root     6 Nov  3  2024 opt
dr-xr-xr-x. 192 root  root     0 May 11 11:00 proc
drwxr-xr-x.   3 redis redis   26 May 11 11:36 redis
dr-xr-x---.   4 root  root   188 May 11 11:36 root
drwxr-xr-x.  45 root  root  1.2K May 11 11:06 run
lrwxrwxrwx.   1 root  root     8 Nov  3  2024 sbin -> usr/sbin
drwxr-xr-x.   2 root  root     6 Nov  3  2024 srv
dr-xr-xr-x.  13 root  root     0 May 11 11:00 sys
drwxrwxrwt.  13 root  root  4.0K May 11 11:35 tmp
drwxr-xr-x.  12 root  root   144 May  7 22:54 usr
drwxr-xr-x.  20 root  root  4.0K May  7 23:06 var

 

권한(소유권) 변경할때 chown -R redis:redis redis 또는 chown -R redis.redis /redis 사용하여 소유자와 소유그룹을 변경

-R 옵션은 해당 디렉토리 및 하위 모든 파일/폴더의 소우자:그룹을 변경 한다.

chown -R [개인권한]:[그룹권한] [경로]

 

3. 환경변수 세팅

[redis@localhost redis-stable]$ cd ~
[redis@localhost ~]$ ls -al
total 12
drwx------. 4 redis redis  92 May 11 11:33 .
drwxr-xr-x. 4 root  root   32 May 11 11:31 ..
-rw-r--r--. 1 redis redis  18 Apr 30  2024 .bash_logout
-rw-r--r--. 1 redis redis 141 Apr 30  2024 .bash_profile
-rw-r--r--. 1 redis redis 492 Apr 30  2024 .bashrc
drwx------. 2 redis redis   6 May 11 11:33 .cache
drwxr-xr-x. 4 redis redis  39 May  7 22:54 .mozilla
[redis@localhost ~]$ vi .bash_profile

 

vi 편집기를 통해 아래와 같이 .bash_profile에 redis환경변수 "PATH=$PATH:/redis/redis-stable/src" 를 추가해 준다.

# .bash_profile

# Get the aliases and functions
if [ -f ~/.bashrc ]; then
        . ~/.bashrc
fi

# User specific environment and startup programs

PATH=$PATH:/redis/redis-stable/src

export PATH

 

cat 명령어를 통해 잘 추가되었는지 확인

[redis@localhost ~]$ cat .bash_profile
# .bash_profile

# Get the aliases and functions
if [ -f ~/.bashrc ]; then
        . ~/.bashrc
fi

# User specific environment and startup programs

PATH=$PATH:/redis/redis-stable/src

export PATH

 

환경 변수가 추가 된것을 확인 하였으면, source 명령어를 통해 환경변수 적용

[redis@localhost ~]$ source .bash_profile

 

4. systemd 등록

[root@localhost system]# cd /etc/systemd/system/
[root@localhost system]# vi redis-server.service

 

위와 같이 "/etc/systemd/system/" 경로에 이동후에 vi편집기를 통해 service를 작성해준다.

[Unit]
Description=My Redis Server
After=network.target
Wants=network.target

[Install]
WantedBy=multi-user.target

[Service]
User=redis
Group=redis
ExecStart=/redis/redis-stable/src/redis-server /redis/redis-stable/redis.conf
ExecStop=/redis/redis-stable/src/redis-cli shutdown
Type=forking
WorkingDirectory=/redis/redis-stable
[root@localhost system]# systemctl daemon-reload

 

cat 명령어로 정상 등록 확인 후, daemon-reload를 통해 service를 갱신합니다.

새로운 service 파일을 생성하거나 기본 서비스 파일을 수정했을때 systemd는 자동으로 인식하지 않기 때문에 갱신 해줘야 한다.

[root@localhost system]# cat redis-server.service
[Unit]
Description=My Redis Server
After=network.target
Wants=network.target

[Install]
WantedBy=multi-user.target

[Service]
User=redis
Group=redis
ExecStart=/redis/redis-stable/src/redis-server /redis/redis-stable/redis.conf
ExecStop=/redis/redis-stable/src/redis-cli shutdown
Type=forking
WorkingDirectory=/redis/redis-stable
[root@localhost system]# systemctl daemon-reload

 

/etc/systemd/system/ 디렉토리는 사용자 정의(system administrator level)의 systemd 서비스 유닛 파일을 저장하는 디렉토리 입니다.

[root@localhost system]# cd /etc/systemd/system/
[root@localhost system]# ls
 basic.target.wants                                         display-manager.service
 bluetooth.target.wants                                     getty.target.wants
 ctrl-alt-del.target                                        graphical.target.wants
 dbus-org.bluez.service                                     local-fs.target.wants
 dbus-org.fedoraproject.FirewallD1.service                  multi-user.target.wants
 dbus-org.freedesktop.Avahi.service                         network-online.target.wants
 dbus-org.freedesktop.ModemManager1.service                 printer.target.wants
 dbus-org.freedesktop.nm-dispatcher.service                 redis-server.service
 dbus.service                                               sockets.target.wants
 default.target                                             sysinit.target.wants
 default.target.wants                                       timers.target.wants
'dev-virtio\x2dports-org.qemu.guest_agent.0.device.wants'   vmtoolsd.service.requires
[root@localhost system]# vi redis-server.service
[root@localhost system]# cat redis-server.service
[Unit]
Description=My Redis Server
After=network.target
Wants=network.target

데모 등록 결과

5. redis-cli 실행 파일 복사

/usr/local/bin/ 디렉토리에 redis-cli 을 복사 해줍니다

/usr/local/bin/은 사용자가 직접 설치한 프로그램의 실행 파일을 저장하는 표준 위치입니다. 시스템 기본 파일과 충돌 없이 관리할 수 있어 권장됩니다.

  • /usr/bin/ : 운영체제 기본 명령어 위치
  • /bin/ : 시스템 부팅에 필수적인 최소 명령어
  • /usr/local/bin/ : 로컬에서 설치한 사용자 전용 실행파일 위치
[root@localhost src]# pwd
/redis/redis-stable/src
[root@localhost src]# cp /redis/redis-stable/src/redis-cli /usr/local/bin/

 

6. systemctl을 사용하여 redis실행

[root@localhost ~]# systemctl start redis-server
[root@localhost ~]# systemctl status redis-server
● redis-server.service - My Redis Server
     Loaded: loaded (/etc/systemd/system/redis-server.service; enabled; preset: disabled)
     Active: active (running) since Mon 2025-05-19 22:31:08 KST; 38min ago
    Process: 803 ExecStart=/redis/redis-stable/src/redis-server /redis/redis-stable/redis.conf (code=exited, status=0/SUCCESS)
   Main PID: 821 (redis-server)
      Tasks: 6 (limit: 23018)
     Memory: 11.7M
        CPU: 6.391s
     CGroup: /system.slice/redis-server.service
             └─821 "/redis/redis-stable/src/redis-server 0.0.0.0:6379"

May 19 22:31:07 localhost.localdomain systemd[1]: Starting My Redis Server...
May 19 22:31:08 localhost.localdomain redis-server[803]: 803:C 19 May 2025 22:31:08.026 # WARNING Memory overcommit must be enabled! Without it, a background save or replication may fail under low memory condition. Being disabled, it can also cause failures without low memory co>
May 19 22:31:08 localhost.localdomain systemd[1]: Started My Redis Server.
[root@localhost ~]# redis-cli
127.0.0.1:6379> ping
PONG
127.0.0.1:6379>

systemclt을 통한 redis실행 결과

'DB > Redis' 카테고리의 다른 글

[Redis] Redis 도입을 위한 설치 및 세팅  (1) 2025.05.18

 

local 환경에서는 docker를 사용하여 redis환경을 구축 하고, 실제 운영 및 테스트 서버에서는 rocky linux 환경에서 redis 환경을 구축 했습니다.

1. Docker를 이용한 Redis설치

1) docker run 명령어로 설치 및 실행

docker run -d --name redis-server -p 6379:6379 redis

 

2) Reids CLI로 접속

docker exec -it redis-server redis-cli

 

2. Rocky Linux에서 Reids를 설치(소스 설치)

Oracle VirtualBox을 이용하여 Rocky Linux를 설치하고, Linux 환경에서 Redis 소스 설치

1)  redis 설치 전 기본 패키지 설치

redis 설치를 위한 기본 패키지 설치

[root@localhost ~]# dnf update -y
[root@localhost ~]# dnf groupinstall "Development Tools" -y
[root@localhost ~]# dnf install gcc make jemalloc jemalloc-devel tcl -y

 

- 첫번째 명령어 : 시스템에 설치된 모든 패키지를 최신 버전으로 업데이트

- 두번째 명령어 : 소스 코드를 빌드하거나 C/C++로 된 소프트웨어를 컴파일하기 위한 툴 모음을 한 번에 설치

  • gcc, g++: C/C++ 컴파일러
  • make, cmake: 빌드 도구
  • gdb: 디버거
  • autoconf, automake, libtool, binutils: 자동화 빌드 및 링커 도구 등

 

- 세번째 명령어 : Redis나 기타 C 기반 프로그램을 빌드하고 테스트하기 위한 필수 구성 요소

  • gcc: C 언어 컴파일러
  • make: Makefile 기반 빌드 도구
  • jemalloc: 고성능 메모리 할당기 (redis는 jemalloc을 기본 사용함)
  • jemalloc-devel: jemalloc을 사용하는 프로그램을 컴파일할 수 있게 해주는 헤더 및 개발 라이브러리
  • tcl: Redis의 테스트 스크립트가 사용하는 스크립트 언어 (Redis make test 명령 시 사용됨)

2) redis 다운로드 및 설치

[root@localhost ~]# wget https://download.redis.io/redis-stable.tar.gz
--2025-05-10 20:48:36--  https://download.redis.io/redis-stable.tar.gz
Resolving download.redis.io (download.redis.io)... 104.18.26.34, 104.18.27.34, 2606:4700::6812:1a22, ...
Connecting to download.redis.io (download.redis.io)|104.18.26.34|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 3932342 (3.8M) [application/octet-stream]
Saving to: ‘redis-stable.tar.gz’
redis-stable.tar.gz           100%[=================================================>]   3.75M  10.9MB/s    in 0.3s
2025-05-10 20:48:38 (10.9 MB/s) - ‘redis-stable.tar.gz’ saved [3932342/3932342]

[root@localhost ~]# ls
anaconda-ks.cfg  redis-stable.tar.gz
[root@localhost ~]# tar -xzvf redis-stable.tar.gz
[root@localhost ~]# ls
anaconda-ks.cfg  redis-stable  redis-stable.tar.gz
[root@localhost ~]# cd redis-stable/
[root@localhost redis-stable]# ls src

레디스 다운로드 및 압축풀기

 

wget 을 통해 redis를 다운로드 후 tar로 다운로드 받은 redis파일의 압축을 풀어 줍니다.

 

3) redis source 컴파일

[root@localhost src]# make distclean
[root@localhost src]# make

 

소스코드 디렉토리를 완전히 초기화(make distclean) 후에 make를 이용하여 소스를 컴파일 해줍니다.

컴파일 완료 화면

컴파일이 정상 성공 하면 위와 같은 화면이 나타 납니다.

 

4) 레디스 서버 실행 및 ssh를 통해 접속하기

[root@localhost redis-stable]# ./src/redis-server ./redis.conf
[root@localhost redis-stable]# ./src/redis-cli

 

redis 소스의 컴파일이 정상적으로 되었으면, 서버를 실행 후에 redis에 접속이 정상적을 되는지 확인.

 

redis 접속

 

5) windows에서 ssh로 redis 서버 접속

C:\Users\maest>ssh 일반User계정@192.168.0.33
일반User계정@192.168.0.33's password:
Activate the web console with: systemctl enable --now cockpit.socket

Last login: Sat May 10 20:28:49 2025
[일반User계정@localhost ~]$

 

윈도우 명령프롬프트(cmd)에서 ssh [계정명]@[host IP주소] 를 통해 redis server에 원격 접속 할 수 있다.

 

6) 기타 Linux 세팅 및 명령어

redis 설치 및 설정을 하면서 진행 했던 세팅 및 명령어 정리

## GUI 환경 기본 세팅
[root@localhost /]# systemctl get-default
graphical.target

## CUI 환경 기본 세팅
[root@localhost /]# systemctl set-default multi-user.target

## 로그인 목록
[root@localhost /]# lslogins

## 아이피 주소 확인
[root@localhost /]# ip a
[root@localhost /]# ifconfig

## 설치 확인
#rpm -q jemalloc jemalloc-devel

'DB > Redis' 카테고리의 다른 글

[Redis] Redis 계정 생성 및 systemd 등록  (0) 2025.05.19

+ Recent posts