웹사이트 검색

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 패키지 캐시를 업데이트하고 다음을 입력하여 종속성을 설치할 수 있습니다.

  1. sudo apt-get update
  2. sudo apt-get install build-essential tcl

Redis 다운로드, 컴파일 및 설치

다음으로 Redis 구축을 시작할 수 있습니다.

소스 코드 다운로드 및 추출

오랫동안 컴파일할 소스 코드를 보관할 필요가 없으므로(항상 다시 다운로드할 수 있음) /tmp 디렉토리에 빌드합니다. 이제 그곳으로 이동해 보겠습니다.

  1. cd /tmp

이제 최신 안정 버전의 Redis를 다운로드하십시오. 안정적인 다운로드 URL에서 항상 사용할 수 있습니다.

  1. curl -O http://download.redis.io/redis-stable.tar.gz

다음을 입력하여 tarball의 압축을 풉니다.

  1. tar xzvf redis-stable.tar.gz

방금 추출한 Redis 소스 디렉터리 구조로 이동합니다.

  1. cd redis-stable

Redis 빌드 및 설치

이제 다음을 입력하여 Redis 바이너리를 컴파일할 수 있습니다.

  1. make

바이너리가 컴파일된 후 테스트 스위트를 실행하여 모든 것이 올바르게 빌드되었는지 확인하십시오. 다음을 입력하면 됩니다.

  1. make test

일반적으로 실행하는 데 몇 분 정도 걸립니다. 완료되면 다음을 입력하여 바이너리를 시스템에 설치할 수 있습니다.

  1. sudo make install

Redis 구성

이제 Redis가 설치되었으므로 구성을 시작할 수 있습니다.

시작하려면 구성 디렉토리를 만들어야 합니다. 다음을 입력하여 만들 수 있는 일반적인 /etc/redis 디렉토리를 사용합니다.

  1. sudo mkdir /etc/redis

이제 Redis 소스 아카이브에 포함된 샘플 Redis 구성 파일을 복사합니다.

  1. sudo cp /tmp/redis-stable/redis.conf /etc/redis

다음으로 파일을 열어 구성에서 몇 가지 항목을 조정할 수 있습니다.

  1. 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 파일을 만들고 엽니다.

  1. 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 사용자 및 그룹을 생성하여 시작합니다. 이것은 다음을 입력하여 단일 명령으로 수행할 수 있습니다.

  1. sudo adduser --system --group --no-create-home redis

이제 다음을 입력하여 /var/lib/redis 디렉토리를 만들 수 있습니다.

  1. sudo mkdir /var/lib/redis

이 디렉터리에 대한 redis 사용자 및 그룹 소유권을 부여해야 합니다.

  1. sudo chown redis:redis /var/lib/redis

일반 사용자가 이 위치에 액세스할 수 없도록 권한을 조정하십시오.

  1. sudo chmod 770 /var/lib/redis

Redis 시작 및 테스트

이제 Redis 서버를 시작할 준비가 되었습니다.

Redis 서비스 시작

다음을 입력하여 systemd 서비스를 시작합니다.

  1. sudo systemctl start redis

다음을 실행하여 서비스에 오류가 없는지 확인하십시오.

  1. 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 서버에 연결합니다.

  1. redis-cli

다음 프롬프트에서 다음을 입력하여 연결을 테스트합니다.

  1. ping

넌 봐야 해:

Output
PONG

다음을 입력하여 키를 설정할 수 있는지 확인합니다.

  1. set test "It's working!"
Output
OK

이제 다음을 입력하여 값을 검색합니다.

  1. get test

저장한 값을 검색할 수 있어야 합니다.

Output
"It's working!"

Redis 프롬프트를 종료하여 셸로 돌아갑니다.

  1. exit

마지막 테스트로 Redis 인스턴스를 다시 시작하겠습니다.

  1. sudo systemctl restart redis

이제 클라이언트에 다시 연결하고 테스트 값을 계속 사용할 수 있는지 확인합니다.

  1. redis-cli
  1. get test

키 값은 계속 액세스할 수 있어야 합니다.

Output
"It's working!"

완료되면 다시 셸로 돌아갑니다.

  1. exit

Redis가 부팅 시 시작되도록 활성화

모든 테스트가 작동하고 서버 부팅 시 Redis를 자동으로 시작하려는 경우 systemd 서비스를 활성화할 수 있습니다.

이렇게 하려면 다음을 입력합니다.

  1. sudo systemctl enable redis
Output
Created 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에서도 작동합니다.