J-한솔넷

기록 보관 : NextCloud에 Redis를 이용하여 캐싱하기 본문

웹 개발관련/서버

기록 보관 : NextCloud에 Redis를 이용하여 캐싱하기

jhansol 2024. 1. 22. 22:36

저의 개인 홈페이지에 있던 내용을 옮겨 기록하고자 합니다. 제가 게으른 탓에 활용하기 힘들고 유지를 하기에 금전적으로도 낭비다 생각되어 님길 것은 남기고, 버릴 것은 버리고 사이트를 없에기 위함입니다. 기존 내용 그대로 아래와 같이 옮겼습니다.


나는 이재까지 캐싱의 중요성을 알면서도 내가 개발하는 각종 프로그램 캐시를 적용하지 않았다. 정적인 데이터보다 실시간 업데이트와 출력이 많은 것들이다보니 적용을 해볼 기회가 없었다고 보는 것이 좋겠다.

하지만 NextCloud를 사내 인프라로 사용하면서 설정이나, 앱 목록에 들어갈 때면 속도가 불안할 정도로 느려 신경이 쓰였다.
그래! 한번 적용해보자 싶어 적용을 해보니 ㅎㅎㅎ.... 눈에 띄게 빨라졌다.

아래의 설치 과정은 최대한 넥스트 클라우드 설정을 위주로 적어 놓은 것이다. Redis에 대한 보다 많은 설정은 다른 문서를 참고하길 바란다. 그리고 설치 환경은 Ubuntu 22.04를 기반으로 하고 있다.

Redis 설치 및 설정

설치는 매우 간단한다.

apt update
apt upgrade -y
apt install redis-server -y

설치되어 서비스가 잘 실행되고 있는지 아래와 같이 확인한다. "/usr/bin/redis-server 127.0.0.1:6379" 항목이 보인다면 127.0.0.1(locahost) 6379 포트로 실행된 것이다.

ps -ax | grep redis
 240526 ?        Ssl    0:02 /usr/bin/redis-server 127.0.0.1:6379
 240733 pts/0    R+     0:00 grep --color=auto redis

이와 같이 실행되었다면 기본으로 사용해도 된다. 하지만 나는 캐싱 최대 메모리 용량을 1GB로 제한하고 메모리 용량을 초과하는 경우 가장 오래 참조되지 않은 내용을 삭제하도록 지정했다. 설정을 위해 '/etc/redis/redis.conf' 파일을 아래와 같이 내용을 추가하거나 수정한다.

vi /etc/redis/redis.conf
maxmemory 1g
maxmemory-policy allkeys-lru

마지막으로 서비스를 재실행한다.

service redis restart

NextCloud에 캐싱 적용

넥스트클라우드가 케싱을 Redis로 하기 위해서는 아래와 같이 클라우드 폴더 아래에 ' config/config.php' 를 열어 아래의 내용을 추가한다.

sudo -u www-data vi 클라우드 폴더/config/config.php

아래 내용 중 'memcache.local' 항목을 설정해주지 않으면 관리자 설정 화면에 여전이 경고가 뜬다. 꼭 넣어주길 바란다.

 // 상단 생력
  'memcache.local' => '\OC\Memcache\Redis',
  'memcache.locking' => '\OC\Memcache\Redis',
  'memcache.distributed' => '\OC\Memcache\Redis',
  'redis' => [
     'host' => '127.0.0.1',
     'port' => 6379,
  ],
  // 하단 생략

이 내용을 추가했다면 관리자 화면의 '기본 설정' 탭을 클릭하여 경고 내용을 확인한다. 아마 메모리 캐시 경고 메시지가 사라졌을 것이다. 그리고 속도 또한 눈에 띄게 빨라졌을 것이다.