그누보드5, 영카트5, 아미나, 나리야에서 redis 쿼리 캐시 플러그인 설치하기

작업실

그누보드5, 영카트5, 아미나, 나리야에서 redis 쿼리 캐시 플러그인 설치하기

위 링크에 있는 파일을 다운 받아야 쓸 수 있습니다.




1. redis 관련 패키지 설치하기


apt install redis-server


위 명령어로 레디스 서버를 설치합니다.


systemctl enable redis-server.service


위 명령어로 레디스 서버를 재부팅시에도 실행되게 합니다.


nano /etc/redis/redis.conf


위와 같이 레디스 설정에 들어갑니다.


maxmemory 256mb

maxmemory-policy allkeys-lru


위 2부분을 주석을 해제하고 수정을 해줍니다.



systemctl restart redis-server.service


위 명령어로 재실행 해줍니다.



apt install php-redis


위 명령어로 php와 연결해주는 패키지를 설치합니다.


php-7.4에서는 자동으로 붙네요.





2. php.ini 수정하기


/etc/php/7.4/fpm/php.ini


위 파일에서 1313번째 줄에 있는


session.save_handler = files



session.save_handler = redis


로 바꾸고




1342번째 줄에 있는


;session.save_path = "/var/lib/php/sessions"



session.save_path = "tcp://127.0.0.1:6379?weight=1"

로 바꾸면 됩니다.


그 후에 


service php7.4-fpm restart

재시작 해주면 적용 끝입니다.


https://blog.lael.be/post/1494 


라엘님 글을 참조하였습니다!





3. 테스트 해보기


redis-cli


위 명령어로 테스트해볼 수 있습니다.


127.0.0.1:6379> ping

PONG

127.0.0.1:6379>


위와 같이 ping 명령어를 넣으면 PONG이라고 답변이 오면 정상설치된 것입니다.




4. 적용하기


링크에서 받은 파일을 압축 해제 후 그누보드 루트에 덮어 씁니다.


그리고 그누 루트에 있는 redis_test.php 을 열어서


//이미 redis 객체를 만든경우에는 기존 객체를 사용합니다. 아래 주석을 해제후 디버깅 정보를 확인해보세요.

$redis = new Redis();

$redis->connect("127.0.0.1", 6379, 1000);


위와 같이 주석을 해제 후 저장합니다.



그누 루트의 common.php


대략 206번째 줄에 있는 그누보드 세션 저장 경로 부분을 수정


//session_save_path(G5_SESSION_PATH);


위와 같이 그누보드 세션 경로를 주석처리해주고


그 밑에


try {

    $redis = new Redis();

    $redis->connect("127.0.0.1", 6379, 5);

} catch( Exception $e) {

    echo $e->getMessage();

}


위와 같이 추가 해줍니다.



홈페이지에 관리자로 로그인 한 뒤에


웹브라우저에서 홈페이지/redis_test.php  열어보면


Array

(

    [0] => DEBUG 2020-05-17 19:00:18 [RedisCache::__construct()] 기존 redis 객체를 사용합니다.

    [1] => DEBUG 2020-05-17 19:00:18 [RedisCache::get_query_cache()] cache_exist = 1, ttl=4

    [2] => DEBUG 2020-05-17 19:00:18 [RedisCache::get_query_cache()] cache_key = sql_cache:dcedd8971ac62ffc806dc24c8c9c6985 HIT!!!

    [3] => DEBUG 2020-05-17 19:00:18 [RedisCache::get_query_cache()] exec_time =  0.001s

)


위와 같이 디버깅이 되는 것을 확인할 수 있습니다.


그리고 redis_test.php를 삭제합니다.




이제 세션을 redis 캐시를 사용함을 알 수 있습니다.




5. 옵션 : TCP port에서 Unix socket으로 변경


아미나의 Harry님 팁을 적용합니다. (유닉스 소켓이 더 낫다고 합니다.)


/lib/RedisCache.class.php


위 파일의 27번째 줄을 보면


$redis->connect($this->default_host, $this->default_port, 5);

위와 같은 내용이 있는데요.


$redis_socket = "/var/run/redis/redis.sock";

//$redis->connect($this->default_host, $this->default_port, 5);

$redis->connect($redis_socket); // Use Unix socket instead of TCP port

위와 같이 해당부분을 주석처리하고 위 아래에 유닉스 소켓으로 변경하시면 됩니다.

15 Comments
우성군 05.20 11:01  
[@Computist] 와 진짜 깔끔한데요? 완전 좋습니다.
Computist 05.20 11:10  
[@우성군] 감사합니다~

근데 저 디스쿠션 정비를 해야 할것 같아요 ㅠ
우성군 05.20 12:04  
[@Computist] 그러게요 ㅜ ㅜ 디스커스가 좀 문제가 있네요.

전 로딩타임 때문에 그냥 자체 댓글로 가려구요 ㅜ ㅜ
Computist 05.20 13:57  
[@우성군] 넵 ㅠㅠ
멋진 오후 되셔요~~
우성군 05.20 14:10  
[@Computist] 넵 오후도 화이팅하세요!