테스트 사이트 - 개발 중인 베타 버전입니다

그누보드 버전 업데이트 관리기능

· 3년 전 · 10719 · 94
1.1 업데이트 설정_1_0.png

2022년 8월 16일 

기능 추가 및 개선사항이 적용된 버전 공유합니다

파일명 : gnuboard5_update_220816.zip

 

1. DB 업데이트 기능 추가

■ 버전 업데이트 진행 시, DB업데이트도 같이 진행할 수 있도록 선택항목이 추가됩니다.

  • 업데이트 버전에 맞는 DB변경사항이 적용됩니다.
  • 다운그레이드 시, 해당 기능을 이용할 수 없으며 DB변경사항이 원복되지 않습니다. (구현은 되어있지만, 데이터 망실의 가능성이 있으므로 주석처리)

3717582117_1660618892.5035.png

 

■ migration Table이 추가됩니다.

  • DB 업데이트 시, 업데이트 이력을 기록할 수 있는 테이블입니다.

CREATE TABLE `g5_migrations` (

  `mi_id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,

  `mi_version` varchar(30) NOT NULL COMMENT '업데이트 버전',

  `mi_sort` int(11) DEFAULT 0 COMMENT '순번',

  `mi_script` varchar(255) NOT NULL COMMENT 'migration 파일이름',

  `mi_execution_date` datetime DEFAULT NULL COMMENT '실행시각',

  `mi_execution_time` int(11) DEFAULT NULL COMMENT '실행시간',

  `mi_result` varchar(100) DEFAULT NULL COMMENT '성공여부 (success or fail)',

  `mi_reason` varchar(255) DEFAULT NULL COMMENT '실패 메시지',

  PRIMARY KEY (`mi_id`)

) ENGINE=InnoDB AUTO_INCREMENT=68 DEFAULT CHARSET=utf8;

 

2. 복원(백업)파일

  • 삭제기능이 추가되었습니다.

3. 로그파일 

  • 삭제기능이 추가되었습니다.
  • 버전 변경 내역기록이 추가되었습니다.

4. 코드개선

  • Class 파일이 기능 별로 분리되었습니다.

5. 기타

  • LSB(Late Static Binding) 적용으로 인해, PHP 5.2에서 PHP 5.3 버전부터 지원으로 변경됩니다.
  • FTP/SFTP 계정정보 입력 시, 비밀번호 입력 폼이 적용됩니다.
  • 버전 목록에서 beta버전, 버전 형식에 맞지않은 이전버전으로 업데이트가 불가능합니다.
  • Class 관련 PHP파일의 경로가 Plugin 폴더 하위로 이동했습니다. (/plugin/version_update/..)
  • Github API 요청횟수를 줄이기 위해 version.json 파일이 추가됩니다. (/data/version.json)

===================================================================

 

Github API를 이용한 그누보드 버전 관리 기능입니다.

 

기능

  • 업데이트 : 원하는 버전의 압축파일을 Github API를 이용해 가져온 후 비교&업데이트 해주는 기능입니다.

3717582117_1656479376.1376.png

1번 : 현재 버전 / 최신 버전 / 업데이트 가능 버전을 확인 할 수 있습니다.

2번 : 파일 업로드 정보를 설정하는 곳입니다. (FTP, SFTP)

3번 : 업데이트 버전 선택 시 commit 정보를 확인 할 수 있는 영역입니다.

 

FTP 또는 SFTP 연결에 성공하면 아래 내역을 확인하고 계속 진행 할 수 있습니다.

3717582117_1656480860.8552.png

  • 업데이트 버전
  • 현재 디스크 용량
  • 업데이트를 진행 파일 (임의로 커스텀한 파일이 있다면 빨간글씨로 표시됩니다.)

 

업데이트 진행 결과를 확인할 수 있습니다.

3717582117_1656481406.387.png

 

  • 복원 : 업데이트를 진행할 때 생성되는 원본 압축파일으로 그누보드를 다시 원상복구시키는 기능입니다. 업데이트와 폼이 거의 동일합니다.

3717582117_1656479695.3881.png

1번 : 버전 업데이트시 생성된 복원파일 목록입니다. 

 

3717582117_1656479795.9826.png

복원 일시 및 복원 버전을 확인할 수 있습니다.

 

  • 로그 : 업데이트/복원을 진행한 내역을 확인할 수 있는 기능입니다.

3717582117_1656479850.5445.png

 

적용 방법

  • 압축 해제 이후, 그누보드 경로에 덮어씌우면 됩니다. (기존 그누보드 파일에 영향이 없습니다.)

 

참고사항

  • PHP Version 5.2.17 ~ 8.1.7에서 동작합니다.
  • 리눅스 & 윈도우 환경에서 동작합니다.
  • 그누보드 업데이트 지원 버전은 최신 30개의 버전이 지원됩니다. (https://github.com/gnuboard/gnuboard5/releases 기준)
  • Github API를 이용하기 때문에 PAT(Personal Access Token)을 생성 및 적용을 권장합니다.
  • 지원 프로토콜은 FTP, SFTP를 지원하며 프로토콜의 PHP 모듈을 필요로 합니다.

 

사전준비 

  • PAT(Personal Access Token)

Github API는 시간당 60회의 제한이 있지만, 요청제한을 없애려면 개인 토큰을 생성해서 적용해야합니다. Token을 적용하지 않아도 사용할 수는 있지만, 요청제한 초과 시 정상적으로 업데이트 진행이 되지 않을 수 있으므로 추가하는 것을 권장합니다.

  1. github.com 로그인
  2. 우측상단 Profile 클릭 > Settings
  3. 좌측 Developer settings > Personal access tokens 메뉴에서 토큰 생성 (자세한 내용은 링크 참조) https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/creating-a-personal-access-token
  4. $token 값 추가

/adm/update/update.lib.php

3717582117_1656479203.3184.png

  • SFTP 

SFTP 옵션을 활성화하려면, ssh2 module을 설치해서 ssh관련 함수를 사용할 수 있어야합니다.

 

 

오류발생

1. '정보조회에 실패했습니다. 1시간 후 다시 시도해주세요.' 또는 '비교리스트확인 통신에 실패했습니다.'

=> PAT 값이 유효하지 않아서 생기는 오류입니다. $token 변수를 확인하거나 Token을 재발급받으시길 바랍니다. 

 

2. 디스크 용량이 실제와 다르게 표시되는 문제

=> 웹 호스팅의 경우, 공용으로 사용하기 때문에 큰 용량이 잡힘. 사용가능한 용량이 넘지 않는다면 업데이트 기능에 문제가 없습니다.

 

 

 

테스트를 진행한다고 했는데 부족한 점이 많이 있을 것 같습니다. 좋은 아이디어나 조언이 있다면 겸허히 받아들이고 더 발전시키도록 하겠습니다. 감사합니다.

댓글 작성

댓글을 작성하시려면 로그인이 필요합니다.

로그인하기

댓글 94개

적용시 "/update 디렉토리를 생성하는데 실패했습니다." 나와서 수동으로 폴더 만들어주고 권한까지 줬지만 해당 에러는 지속적으로 발생하고 있습니다
2년 전
data/update 디렉토리에 있는 backup과 version 디렉토리를 삭제하고 시도해 보세요. 저는 이렇게 해결했습니다.
저 같은 경우는 update 폴더를 삭제하든 새로이 생성하든 똑같이 해결이 안 됩니다
2년 전
아...... 도움이 못돼 죄송합니다.
챙겨봐 주셔서 감사합니다 ^^
와.. 멋집니다.
2년 전
저번에는 잘 됐는데 이번에는 에러를 보여줍니다.

Warning: ftp_mkdir(): Create directory operation failed. in /home1/*******/public_html/plugin/version_update/G5Update.lib.php on line 230
Error : /update/version 디렉토리를 생성하는데 실패했습니다. 경로 : /public_html/data/update/version
2년 전
해결했습니다.

data/update 디렉토리에 있는 backup과 version 디렉토리를 삭제하니 됐습니다.
2년 전
Code : 200
Error : FTP 연결에 실패했습니다.

ftp 는 문제없이 잘 돌아가고 있습니다. 다른 설정을 봐야할게 있을까요?
2년 전
감사드립니다.