SIR

AWS DynamoDB 를 사용한 DB session 적용하기 > 그누보드5 플러그인

그누보드5 플러그인

그누보드는 여러가지 기능을 추가하기 쉽도록 제작 되었습니다.
플러그인 다운로드시 좋아요와 감사의 코멘트를 남기시면 제작자에게 큰 힘이됩니다. ^^y

AWS DynamoDB 를 사용한 DB session 적용하기 정보

AWS DynamoDB 를 사용한 DB session 적용하기

첨부파일

첨부파일 aws_session_db.tar.gz (2.3M) 4회 다운로드 2021-02-16 18:43:31
테스트한 버전5.4.0.4
호환 가능 버전5.4.0.4 이상

본문

그누보드에서 session 을 파일로 사용하지 않는

 

AWS DynamoDB 을 사용한 DB session 적용방법입니다.

 

아래 링크와 유사한 방법이라고 보시면 됩니다.

https://www.slideshare.net/awskr/dynamodb-php-django

 

사용환경은 아래 기준에서 설명하겠습니다.

 

1. 윈도우 서버에서 NO SQL 을 설치하여 로컬로 사용하는 방법

2. 서버에서 AWS DynamoDB 를 원격접속하여 사용하는 방법

 

(공통)

aws-sdk-php 라이브러리를 사용하므로 PHP 버전은 5.5 이상을 요구합니다. (  PHP 5.5버전 미만에서는 사용할수 없습니다.  )

 

먼저 이 게시물의 자료를 적용합니다.

 

세션을 저장하는 방식이 달라지므로

config.php 파일과

common.php 파일을 필수로 수정해야 합니다.

 

config.php 파일은

대략 230번째 줄에

아래 코드를 넣습니다.

 


if( version_compare( PHP_VERSION, '5.5' , '>=' ) ){     // PHP 버전이 5.5 이상이어야 가능
    require_once(G5_PLUGIN_PATH.'/aws_sdk_php/aws_db_session.php');
}

 

common.php 파일은

대략 209번째 줄의 코드를 아래와 같이 수정합니다.

 


if(! (defined('G5_USE_DB_SESSION') && G5_USE_DB_SESSION)){
    session_save_path(G5_SESSION_PATH);
    if (isset($SESSION_CACHE_LIMITER))
        @session_cache_limiter($SESSION_CACHE_LIMITER);
    else
        @session_cache_limiter("no-cache, must-revalidate");
    ini_set("session.cache_expire", 180); // 세션 캐쉬 보관시간 (분)
    ini_set("session.gc_maxlifetime", 10800); // session data의 garbage collection 존재 기간을 지정 (초)
    ini_set("session.gc_probability", 1); // session.gc_probability는 session.gc_divisor와 연계하여 gc(쓰레기 수거) 루틴의 시작 확률을 관리합니다. 기본값은 1입니다. 자세한 내용은 session.gc_divisor를 참고하십시오.
    ini_set("session.gc_divisor", 100); // session.gc_divisor는 session.gc_probability와 결합하여 각 세션 초기화 시에 gc(쓰레기 수거) 프로세스를 시작할 확률을 정의합니다. 확률은 gc_probability/gc_divisor를 사용하여 계산합니다. 즉, 1/100은 각 요청시에 GC 프로세스를 시작할 확률이 1%입니다. session.gc_divisor의 기본값은 100입니다.
}

 

나머지 폴더와 파일은 그대로 복사 붙여넣기 하면 됩니다.

 

 

 

1. 윈도우 서버에서 NO SQL 을 설치하여 로컬로 사용하는 방법

 

아래 AWS 사이트 링크에서 로컬 DynamoDB 를 다운로드 받고 해당 내용대로 그대로 따라합니다. ( JRE 설치 필수 )

 

https://docs.aws.amazon.com/ko_kr/amazondynamodb/latest/developerguide/DynamoDBLocal.DownloadingAndRunning.html

 

아래 스크린샷은 윈도우 명령프롬프트 창에서 DynamoDB 를 실행한 스크린샷입니다.

 

3717582117_1613467152.0795.png

 

윈도우에 XAMPP 또는 오토셋 같은 환경으로 접속하면, 설치한 DynamoDB 로 DB session 을 사용하는 것을 확인할수 있습니다.

 

확인하는 방법은 AWS 에서 제공하는 NoSQL WorkBench 를 사용하여 확인할수 있습니다.

 

https://docs.aws.amazon.com/ko_kr/amazondynamodb/latest/developerguide/workbench.settingup.html

 

NoSQL WorkBench를 설치했다면 실행아이콘을 눌러서 아래 스크린샷 처럼 데이터를 확인할수 있습니다.

 

3717582117_1613467168.5451.png

 

 

3717582117_1613467184.1535.png

 

 

3717582117_1613467195.0997.png

 

 

2. 서버에서 AWS DynamoDB 를 원격접속하여 사용하는 방법

 

AWS IAM ( Identity and Access Management ) 에서 사용자를 추가합니다.

https://console.aws.amazon.com/iam/home

 

3717582117_1613467214.7724.png

 

사용자이름을 마음대로 입력하고 엑세스 유형은 프로그래밍 방식 엑세스에 체크합니다.

 

3717582117_1613467243.3245.png

 

2번 과정에서 기존 정책 직접 연결 탭을 누른후 정책필터에서 dynamo 을 검색 -> 정책을

AmazonDynamoDBFullAccess 를 선택합니다.

 

3717582117_1613467249.9976.png

 

 

3번과 4번 과정은 생략하고 다음으로 넘어갑니다.

 

3717582117_1613467263.5727.png

 

사용자 .csv 다운로드를 클릭하면 엑세스 키와 비밀 엑세스 키를 확인할수 있습니다.

해당 엑세스 키와 비밀 엑세스 키는 절대로 외부에 노출되면 안됩니다. 외부에 노출시 악용되면, AWS 에서 엄청난 요금 통지서가 날아올수 있습니다. 외부에 노출되었다면 그 즉시 해당 사용자계정을 삭제해야 합니다.

 

위의 사용자 엑세스 키와 비밀 엑세스 키를

 

/plugin/aws_sdk_php/aws_db_session.php 파일에서 12번째 줄

 

G5_USE_AWS_DynamoDb 상수 값을 TRUE 로 수정 후에

G5_AWS_CREDENTIALS_KEY 상수 값은 위의 엑세스 키 ID

G5_AWS_CREDENTIALS_SECRET 상수 값은 위의 비밀 엑세스 키로 수정합니다. ( 아래 스크린샷 참고 )

 

3717582117_1613468585.8024.png

 

위의 과정을 다 한 후에 해당 그누보드5 사이트에 접속하면 AWS DynamoDB 로 db session 을 사용할수 있습니다. 

 

위의 과정을 다 실행했으면

AWS DynamoDB 사이트에서 DynamoDb_sessions 테이블이 생성된 것을 확인할수 있습니다.

 

https://ap-northeast-2.console.aws.amazon.com/dynamodb/home?region=ap-northeast-2

 

3717582117_1613468590.5375.png

 

AWS DynamoDB 서비스는 유료이니, 사용하지 않으려면 반드시 테이블을 다 삭제하세요.

삭제하지 않고 놔두면 사용하지도 않는 요금이 계속 나올수 있습니다.

( 사용하지 않으려면 사용자도 삭제 하는게 낫습니다. )

 

AWS DynamoDB 도 NoSQL WorkBench로 원격 접속하여 데이터를 확인할수 있습니다.

추천8

댓글 전체

좋은 자료 감사합니다.

전에 웹서버 6대 정도에서 session 공유를 위해 redis 를 사용했던 적이 있는데..
aws 라면 이런 식으로도 가능하군요.
전체 367
그누보드5 플러그인 내용 검색

회원로그인

진행중 포인트경매

  1. 참여10 회 시작21.03.02 12:00 종료21.03.07 12:00
  2. 참여44 회 시작21.02.26 11:03 종료21.03.03 11:03

(주)에스아이알소프트 (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 대표메일:admin@sir.kr
사업자등록번호:217-81-36347 대표:홍석명 통신판매업신고번호:2014-서울강남-02098호 개인정보보호책임자:이총

© SIRSOFT