작업실

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

컨텐츠 정보

  • 7,827 조회
  • 19 댓글
  • 1 추천
  • 목록

본문

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




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

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

관련자료

댓글 19 / 2 페이지

우성군님의 댓글의 댓글

그러게요 ㅜ ㅜ 디스커스가 좀 문제가 있네요.

전 로딩타임 때문에 그냥 자체 댓글로 가려구요 ㅜ ㅜ

popori님의 댓글

혹시나 그누 2개 설치시 로그인 세션공유가 될 거 같아 적용해서 ping 명령어를 넣으면 PONG이라고 답변까지는 받았습니다.
그런데, 그누의 comon.php에 적용을 하니 HTTP ERROR 500 에러가 뜨고 홈페이지가 먹통이 됩니다.
우분투20.04에 php8.2 환경입니다.
그누보드 버전은 5.5.10 입니다.

혹 링크의 첨부파일을 수정해야 하나요?
6379 포트를 사용하는거 같아서 해당 포트를 열어줘도 홈페이지가 먹통이 됩니다.

popori님의 댓글의 댓글

php.ini 파일이 fpm폴더외에 apache2 폴더에도 있어 apache2 폴더에 있는 php.ini 파일에서도 session.save_handler = redis와 session.save_path = "tcp://127.0.0.1:6379?weight=1"를 적용하고 아파치를 다시 시작하니 홈페이지 접속이 됩니다.
그리고 관리자로 로그인 후에 redis_test.php에 접속을 하니 우성군님하고는 다르게 아래와 같은 화면이 보입니다.
Array
(
    [0] => Array
        (
            [bo_table] => free
            [gr_id] => community
            [bo_subject] => 자유게시판
            [bo_mobile_subject] =>
... ...

popori님의 댓글의 댓글

어찌된 일인지 지금은 우성군님처럼 redis_test.php 파일 출력 내용이 같네요.

이제 그누2개 설치하고 로그인 세션공유하는 부분 공부를 해야겠네요. 우성군님 많은 노하우가 있으니 혹 로그인 세션공유하는 팁이 있다면 부탁드립니다.
전체 157 / 4 페이지
RSS
알림 0