Ubuntu 16.04에서 Redis를 설치하고 구성하는 방법
소개
Redis는 유연성, 성능 및 광범위한 언어 지원으로 잘 알려진 메모리 내 키-값 저장소입니다. 이 가이드에서는 Ubuntu 16.04 서버에서 Redis를 설치하고 구성하는 방법을 보여줍니다.
전제 조건
이 가이드를 완료하려면 Ubuntu 16.04 서버에 액세스해야 합니다. 이 프로세스에 필요한 관리 기능을 수행하려면 sudo
권한이 있는 루트가 아닌 사용자가 필요합니다. Ubuntu 16.04 초기 서버 설정 가이드에 따라 이러한 권한으로 계정을 설정하는 방법을 배울 수 있습니다.
시작할 준비가 되면 sudo
사용자로 Ubuntu 16.04 서버에 로그인하고 아래에서 계속하십시오.
빌드 및 테스트 종속성 설치
Redis의 최신 버전을 얻기 위해 소스에서 소프트웨어를 컴파일하고 설치합니다. 코드를 다운로드하기 전에 소프트웨어를 컴파일할 수 있도록 빌드 종속성을 충족해야 합니다.
이를 위해 Ubuntu 리포지토리에서 build-essential
메타 패키지를 설치할 수 있습니다. 바이너리를 테스트하는 데 사용할 수 있는 tcl
패키지도 다운로드할 것입니다.
로컬 apt
패키지 캐시를 업데이트하고 다음을 입력하여 종속성을 설치할 수 있습니다.
- sudo apt-get update
- sudo apt-get install build-essential tcl
Redis 다운로드, 컴파일 및 설치
다음으로 Redis 구축을 시작할 수 있습니다.
소스 코드 다운로드 및 추출
오랫동안 컴파일할 소스 코드를 보관할 필요가 없으므로(항상 다시 다운로드할 수 있음) /tmp
디렉토리에 빌드합니다. 이제 그곳으로 이동해 보겠습니다.
- cd /tmp
이제 최신 안정 버전의 Redis를 다운로드하십시오. 안정적인 다운로드 URL에서 항상 사용할 수 있습니다.
- curl -O http://download.redis.io/redis-stable.tar.gz
다음을 입력하여 tarball의 압축을 풉니다.
- tar xzvf redis-stable.tar.gz
방금 추출한 Redis 소스 디렉터리 구조로 이동합니다.
- cd redis-stable
Redis 빌드 및 설치
이제 다음을 입력하여 Redis 바이너리를 컴파일할 수 있습니다.
- make
바이너리가 컴파일된 후 테스트 스위트를 실행하여 모든 것이 올바르게 빌드되었는지 확인하십시오. 다음을 입력하면 됩니다.
- make test
일반적으로 실행하는 데 몇 분 정도 걸립니다. 완료되면 다음을 입력하여 바이너리를 시스템에 설치할 수 있습니다.
- sudo make install
Redis 구성
이제 Redis가 설치되었으므로 구성을 시작할 수 있습니다.
시작하려면 구성 디렉토리를 만들어야 합니다. 다음을 입력하여 만들 수 있는 일반적인 /etc/redis
디렉토리를 사용합니다.
- sudo mkdir /etc/redis
이제 Redis 소스 아카이브에 포함된 샘플 Redis 구성 파일을 복사합니다.
- sudo cp /tmp/redis-stable/redis.conf /etc/redis
다음으로 파일을 열어 구성에서 몇 가지 항목을 조정할 수 있습니다.
- sudo nano /etc/redis/redis.conf
파일에서 supervised
지시문을 찾습니다. 현재 no
로 설정되어 있습니다. systemd init 시스템을 사용하는 운영 체제를 실행 중이므로 systemd
로 변경할 수 있습니다.
. . .
# If you run Redis from upstart or systemd, Redis can interact with your
# supervision tree. Options:
# supervised no - no supervision interaction
# supervised upstart - signal upstart by putting Redis into SIGSTOP mode
# supervised systemd - signal systemd by writing READY=1 to $NOTIFY_SOCKET
# supervised auto - detect upstart or systemd method based on
# UPSTART_JOB or NOTIFY_SOCKET environment variables
# Note: these supervision methods only signal "process is ready."
# They do not enable continuous liveness pings back to your supervisor.
supervised systemd
. . .
다음으로 dir
디렉토리를 찾습니다. 이 옵션은 Redis가 영구 데이터를 덤프하는 데 사용할 디렉터리를 지정합니다. Redis가 쓰기 권한을 갖고 일반 사용자가 볼 수 없는 위치를 선택해야 합니다.
이를 위해 /var/lib/redis
디렉토리를 사용할 것이며 잠시 후에 생성할 것입니다.
. . .
# The working directory.
#
# The DB will be written inside this directory, with the filename specified
# above using the 'dbfilename' configuration directive.
#
# The Append Only File will also be created inside this directory.
#
# Note that you must specify a directory here, not a file name.
dir /var/lib/redis
. . .
완료되면 파일을 저장하고 닫습니다.
Redis 시스템 단위 파일 생성
다음으로 init 시스템이 Redis 프로세스를 관리할 수 있도록 시스템 단위 파일을 만들 수 있습니다.
시작하려면 /etc/systemd/system/redis.service
파일을 만들고 엽니다.
- sudo nano /etc/systemd/system/redis.service
내부에서 설명을 추가하고 이 서비스를 시작하기 전에 네트워킹을 사용할 수 있어야 한다는 요구 사항을 정의하여 [Unit]
섹션을 시작할 수 있습니다.
[Unit]
Description=Redis In-Memory Data Store
After=network.target
[Service]
섹션에서 서비스 동작을 지정해야 합니다. 보안을 위해 서비스를 루트
로 실행하면 안 됩니다. 단순화를 위해 redis
라고 부르는 전용 사용자 및 그룹을 사용해야 합니다. 우리는 이것들을 잠시 만들 것입니다.
서비스를 시작하려면 구성을 가리키는 redis-server
바이너리를 호출하기만 하면 됩니다. 이를 중지하려면 redis-cli
바이너리로 실행할 수 있는 Redis shutdown
명령을 사용할 수 있습니다. 또한 가능한 경우 Redis가 장애로부터 복구하기를 원하므로 Restart
지시어를 "always\로 설정합니다.
[Unit]
Description=Redis In-Memory Data Store
After=network.target
[Service]
User=redis
Group=redis
ExecStart=/usr/local/bin/redis-server /etc/redis/redis.conf
ExecStop=/usr/local/bin/redis-cli shutdown
Restart=always
마지막으로 [Install]
섹션에서 서비스가 활성화된 경우(부팅 시 시작하도록 구성됨) 연결해야 하는 systemd 대상을 정의할 수 있습니다.
[Unit]
Description=Redis In-Memory Data Store
After=network.target
[Service]
User=redis
Group=redis
ExecStart=/usr/local/bin/redis-server /etc/redis/redis.conf
ExecStop=/usr/local/bin/redis-cli shutdown
Restart=always
[Install]
WantedBy=multi-user.target
완료되면 파일을 저장하고 닫습니다.
Redis 사용자, 그룹 및 디렉터리 생성
이제 이전 두 파일에서 참조한 사용자, 그룹 및 디렉터리를 생성하기만 하면 됩니다.
redis
사용자 및 그룹을 생성하여 시작합니다. 이것은 다음을 입력하여 단일 명령으로 수행할 수 있습니다.
- sudo adduser --system --group --no-create-home redis
이제 다음을 입력하여 /var/lib/redis
디렉토리를 만들 수 있습니다.
- sudo mkdir /var/lib/redis
이 디렉터리에 대한 redis
사용자 및 그룹 소유권을 부여해야 합니다.
- sudo chown redis:redis /var/lib/redis
일반 사용자가 이 위치에 액세스할 수 없도록 권한을 조정하십시오.
- sudo chmod 770 /var/lib/redis
Redis 시작 및 테스트
이제 Redis 서버를 시작할 준비가 되었습니다.
Redis 서비스 시작
다음을 입력하여 systemd 서비스를 시작합니다.
- sudo systemctl start redis
다음을 실행하여 서비스에 오류가 없는지 확인하십시오.
- sudo systemctl status redis
다음과 같은 내용이 표시됩니다.
Output● redis.service - Redis Server
Loaded: loaded (/etc/systemd/system/redis.service; enabled; vendor preset: enabled)
Active: active (running) since Wed 2016-05-11 14:38:08 EDT; 1min 43s ago
Process: 3115 ExecStop=/usr/local/bin/redis-cli shutdown (code=exited, status=0/SUCCESS)
Main PID: 3124 (redis-server)
Tasks: 3 (limit: 512)
Memory: 864.0K
CPU: 179ms
CGroup: /system.slice/redis.service
└─3124 /usr/local/bin/redis-server 127.0.0.1:6379
. . .
Redis 인스턴스 기능 테스트
서비스가 올바르게 작동하는지 테스트하려면 명령줄 클라이언트를 사용하여 Redis 서버에 연결합니다.
- redis-cli
다음 프롬프트에서 다음을 입력하여 연결을 테스트합니다.
- ping
넌 봐야 해:
OutputPONG
다음을 입력하여 키를 설정할 수 있는지 확인합니다.
- set test "It's working!"
OutputOK
이제 다음을 입력하여 값을 검색합니다.
- get test
저장한 값을 검색할 수 있어야 합니다.
Output"It's working!"
Redis 프롬프트를 종료하여 셸로 돌아갑니다.
- exit
마지막 테스트로 Redis 인스턴스를 다시 시작하겠습니다.
- sudo systemctl restart redis
이제 클라이언트에 다시 연결하고 테스트 값을 계속 사용할 수 있는지 확인합니다.
- redis-cli
- get test
키 값은 계속 액세스할 수 있어야 합니다.
Output"It's working!"
완료되면 다시 셸로 돌아갑니다.
- exit
Redis가 부팅 시 시작되도록 활성화
모든 테스트가 작동하고 서버 부팅 시 Redis를 자동으로 시작하려는 경우 systemd 서비스를 활성화할 수 있습니다.
이렇게 하려면 다음을 입력합니다.
- sudo systemctl enable redis
OutputCreated symlink from /etc/systemd/system/multi-user.target.wants/redis.service to /etc/systemd/system/redis.service.
결론
이제 Ubuntu 16.04 서버에 Redis 인스턴스가 설치 및 구성되어 있어야 합니다. Redis 설치를 보호하는 방법에 대해 자세히 알아보려면 Ubuntu 14.04에서 Redis 설치를 보호하는 방법(3단계 이후)을 살펴보십시오. Ubuntu 14.04를 염두에 두고 작성되었지만 대부분 16.04에서도 작동합니다.