CentOS 9 기반 Redis 소스 빌드 및 시스템 통합 설정

1. 컴파일 환경 구성 및 바이너리 생성

공식 저장소에서 제공하는 아카이브를 활용하여 안정판을 직접 컴파일하는 절차를 수행합니다. CentOS 9(Stream) 환경에서는 dnf 패키지 관리자를 사용하며, C 언어 기반의 빌드 체인 구축을 위해 필수 개발 도구를 미리 준비해야 합니다.

# 작업 디렉토리 생성 및 소스 아카이브 전개
$ sudo mkdir -p /opt/build-redis && cd /opt/build-redis
$ sudo tar -xzf redis-6.2.14.tar.gz
$ cd redis-6.2.14

# 빌드 의존성 패키지 설치
$ sudo dnf groupinstall -y "Development Tools"
$ sudo dnf install -y tcl

# 병렬 컴파일 실행 및 시스템 경로에 바이너리 배치
$ make -j$(nproc) BUILD_TLS=no
$ sudo make install PREFIX=/usr/local/redis

컴파일이 완료되면 지정된 PREFIX 디렉토리 내에 실행 파일들이 배치됩니다. 이를 전역 명령어로 사용하려면 /usr/local/redis/bin 경로를 시스템 PATH에 추가하거나 심볼릭 링크를 생성하면 임의의 위치에서 호출할 수 있습니다.

2. 주요 구성 매개변수 튜닝

기본 설정 파일은 네트워크 보안 및 리소스 할당 측면에서 제한적입니다. 운영 환경에 적합하도록 redis.conf를 수정합니다. 변경 전 원본을 반드시 백업합니다.

$ cp redis.conf redis.conf.original
$ vim redis.conf

환경 변수 및 보안 정책을 반영하여 다음 항목들을 재정의합니다:

  • 네트워크 바인딩: bind 127.0.0.1 ::1 (로컬 루프백 주소로 제한, 외부 접근이 필요할 경우 공인 IP 명시)
  • 포트 설정: port 6379
  • 백그라운드 실행: daemonize yes (터미널 세션 이탈 시 지속 실행 허용)
  • 접근 제어: requirepass StrongP@ssw0rd2024!
  • 메모리 한계: maxmemory 2gb 및 maxmemory-policy allkeys-lru
  • 데이터 저장소: dir /var/lib/redis-data (RDB/AOF 파일 저장 경로 분리)
  • 로그 기록: logfile /var/log/redis/redis-server.log

구성 파일에서 지정한 디렉토리는 반드시 물리적으로 존재해야 하므로 사전 생성 및 권한 할당이 필요합니다.

$ sudo mkdir -p /var/lib/redis-data /var/log/redis
$ sudo chown -R root:root /var/lib/redis-data /var/log/redis
$ sudo chmod 750 /var/lib/redis-data /var/log/redis

3. 서비스 구동 및 클라이언트 연결 검증

수정된 구성 파일을 명시적으로 지정하여 인스턴스를 초기화합니다.

$ /usr/local/redis/bin/redis-server /opt/build-redis/redis-6.2.14/redis.conf

프로세스 실행 여부를 확인하고, 명령줄 인터페이스를 통해 연결 테스트를 진행합니다. 보안 강화를 위해 초기 접속 후 인증 명령을 별도로 실행하는 방식을 권장합니다.

# 백그라운드 프로세스 확인
$ pgrep -a redis-server

# 클라이언트 접속 및 단계별 인증 절차
$ redis-cli -p 6379
127.0.0.1:6379> AUTH default StrongP@ssw0rd2024!
OK
127.0.0.1:6379> PING
PONG

# 안전한 인스턴스 종료
127.0.0.1:6379> SHUTDOWN NOSAVE
OK

4. 방화벽 규칙 구성

외부 애플리케이션 또는 클라이언트와의 통신이 필요하다면 firewalld에서 대상 포트를 명시적으로 허용해야 합니다.

# 영구적 포트 개방 및 런타임 적용
$ sudo firewall-cmd --permanent --zone=public --add-port=6379/tcp
$ sudo firewall-cmd --reload

# 적용 상태 검증
$ sudo firewall-cmd --list-ports

5. systemd 통합 및 자동 시작 활성화

운영 체계에 맞춰 systemd 유닛 파일을 생성하면 서비스 생명주기 관리가 표준화됩니다. /etc/systemd/system/redis-cache.service 파일에 다음 정의를 작성합니다.

[Unit]
Description=Advanced Key-Value Store (Redis)
Documentation=https://redis.io/documentation
After=network.target

[Service]
Type=forking
ExecStart=/usr/local/redis/bin/redis-server /opt/build-redis/redis-6.2.14/redis.conf
ExecStop=/usr/local/redis/bin/redis-cli -p 6379 -a StrongP@ssw0rd2024! shutdown
Restart=always
LimitNOFILE=65535

[Install]
WantedBy=multi-user.target

유닛 정의가 완료되면 매니저 데몬을 갱신하고 서비스를 제어합니다.

$ sudo systemctl daemon-reload
$ sudo systemctl enable --now redis-cache
$ sudo systemctl status redis-cache

이제 systemctl start|stop|restart redis-cache 명령어로 인스턴스를 관리할 수 있으며, 시스템 재부팅 시 자동으로 백그라운드에서 구동됩니다.

태그: redis-6.2 centos-stream-9 systemd-integration c-compilation firewalld-configuration

10월 1일 07:01에 게시됨