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 명령어로 인스턴스를 관리할 수 있으며, 시스템 재부팅 시 자동으로 백그라운드에서 구동됩니다.