그누보드 버전 업데이트 관리기능 정보
그누보드 버전 업데이트 관리기능
첨부파일
본문
2022년 8월 16일
기능 추가 및 개선사항이 적용된 버전 공유합니다
파일명 : gnuboard5_update_220816.zip
1. DB 업데이트 기능 추가
■ 버전 업데이트 진행 시, DB업데이트도 같이 진행할 수 있도록 선택항목이 추가됩니다.
- 업데이트 버전에 맞는 DB변경사항이 적용됩니다.
- 다운그레이드 시, 해당 기능을 이용할 수 없으며 DB변경사항이 원복되지 않습니다. (구현은 되어있지만, 데이터 망실의 가능성이 있으므로 주석처리)
■ 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를 이용해 가져온 후 비교&업데이트 해주는 기능입니다.
1번 : 현재 버전 / 최신 버전 / 업데이트 가능 버전을 확인 할 수 있습니다.
2번 : 파일 업로드 정보를 설정하는 곳입니다. (FTP, SFTP)
3번 : 업데이트 버전 선택 시 commit 정보를 확인 할 수 있는 영역입니다.
FTP 또는 SFTP 연결에 성공하면 아래 내역을 확인하고 계속 진행 할 수 있습니다.
- 업데이트 버전
- 현재 디스크 용량
- 업데이트를 진행 파일 (임의로 커스텀한 파일이 있다면 빨간글씨로 표시됩니다.)
업데이트 진행 결과를 확인할 수 있습니다.
- 복원 : 업데이트를 진행할 때 생성되는 원본 압축파일으로 그누보드를 다시 원상복구시키는 기능입니다. 업데이트와 폼이 거의 동일합니다.
1번 : 버전 업데이트시 생성된 복원파일 목록입니다.
복원 일시 및 복원 버전을 확인할 수 있습니다.
- 로그 : 업데이트/복원을 진행한 내역을 확인할 수 있는 기능입니다.
적용 방법
- 압축 해제 이후, 그누보드 경로에 덮어씌우면 됩니다. (기존 그누보드 파일에 영향이 없습니다.)
참고사항
- 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을 적용하지 않아도 사용할 수는 있지만, 요청제한 초과 시 정상적으로 업데이트 진행이 되지 않을 수 있으므로 추가하는 것을 권장합니다.
- github.com 로그인
- 우측상단 Profile 클릭 > Settings
- 좌측 Developer settings > Personal access tokens 메뉴에서 토큰 생성 (자세한 내용은 링크 참조) https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/creating-a-personal-access-token
- $token 값 추가
/adm/update/update.lib.php
- SFTP
SFTP 옵션을 활성화하려면, ssh2 module을 설치해서 ssh관련 함수를 사용할 수 있어야합니다.
오류발생
1. '정보조회에 실패했습니다. 1시간 후 다시 시도해주세요.' 또는 '비교리스트확인 통신에 실패했습니다.'
=> PAT 값이 유효하지 않아서 생기는 오류입니다. $token 변수를 확인하거나 Token을 재발급받으시길 바랍니다.
2. 디스크 용량이 실제와 다르게 표시되는 문제
=> 웹 호스팅의 경우, 공용으로 사용하기 때문에 큰 용량이 잡힘. 사용가능한 용량이 넘지 않는다면 업데이트 기능에 문제가 없습니다.
테스트를 진행한다고 했는데 부족한 점이 많이 있을 것 같습니다. 좋은 아이디어나 조언이 있다면 겸허히 받아들이고 더 발전시키도록 하겠습니다. 감사합니다.
64
댓글 전체


드디어 업데이트 공포에서 헤어나게 해주셔서 감사드려요~~^^




감사합니다

속은 쓰리지만 칭찬드림 ㅎㅎㅎ
맘만 먹고 만들지 못하고 있었는데
대단 하십니다


설치후 업데이트가 많이 밀려있는데 그냥 최신버전으로 바로 업데이트 해되 되나요?
아니면 차근차근 하나씩 하나씩 최신버전까지 업데이트 해야하나요?

이것은 하나의 도구일 뿐 본질의 업데이트 파일은 SIR 에서 제공하는데...
질문의 대상이 잘 못 된 듯 보입니다 ^^;;;

답변 감사합니다
혹시 몰라 차근차근 업데이트 중입니다.
이넘의 게으름이 일을 엄청 많이 만드네요 ㅠㅠ;;
ps 녹두탐님 덕분에 업데이트 편하게 해서 좋네요

추천을 한 번밖에 누르지 못하는게 아쉽네요~ ㅠㅠ
그럼 비 조심하시고 좋은 저녁 되세요 :)

멋진 도전, 시도, 작업... 귀합미당...

많은이들에게 어느정도는 업데이트 고통에서 해방 시켜 주신듯…

놀라운 플러그인 감사드립니다.



저도 추앙~ 합니다. 삭제하지 말아주세요. 기능을 익힌 후 적용해 보겠습니다.


sftp가 안보이시는 분(ssh2 모듈이 설치안되신 분)들은 참고하세용.
redhat7(centos7)은 yum install libssh2 php-pecl-ssh2; systemctl restart httpd
redhat8(rockyLinux8)은 dnf install php-ssh2; systemctl restart httpd
ssh port가 기본 22번이 아니신분들은
update폴더내의 update.lib.php 104라인 포트를 사용중인 ssh port로 변경하시면 됩니다.

또한 존경합니다...^;^




내가 방금 뭐 했는지도 모르는 초단기 기억상실증을 치료해주는...
엄지 손가락이 자동으로 올라갈 수 밖에 없네요.
"따봉~~"
감사합니다.
업데이트 성공
업데이트 실패
: 백업파일 생성이 실패했습니다.
이렇게 나오는데 어떻게 해야 하나요? 설정이 뭐가 잘못되어서 그런걸까요?
어떤부분을 봐야될까요
토큰 넣고 sftp 포트 까지 변경하였습니다.

만약 권한도 정상이라면 경로오류일 가능성이 높으므로 테스트하고 수정하도록 하겠습니다 :)
질문이 있는데 커스텀 된 부분은 순정으로 덮어씌워 지나요?


.php 파일들의 권한이 777은되어야 업데이트가 되는것 같습니다.
모든 파일들의 권한을 777로 변경하면 되긴할듯한데, 약간 조심스러운 부분도 있네요.
아무튼 이런 좋은 플러그인 공유해주셔. 매우 감사합니다.^^




https://github.com/gnuboard/gnuboard5/releases/tag/5.4.6


그누보드 Core 부분을 커스텀하신 것이라면 수동으로 체크하셔야 합니다.

우선 간단하게 필요한 부분이 있을것 같습니다.
1. 백업 디렉터리 파일을 수동 삭제할 수 있도록. (체크박스 삭제 - 용량이 많이 쌓이네요.)
2. 로그 디렉터리 파일을 삭제할 수 있도록. (체크박스 삭제)
3. 버전 디렉터리 파일을 삭제할 수 있도록. (체크박스 삭제 - 용량이 많이 쌓이네요.)
4. 업데이트시 커스텀된 파일?이 있다면, 빨강색으로 나타나는데, 업데이트 할 파일을 차라리 체크박스로 체크한 파일들만 덮어씌우는 형태는 어떨지? 입니다. (전체선택 또는 부분 체크 선택)
5. 업데이트 하는 부분에, 라디오버튼으로 DB업데이트 사용함, 하지않음 2개의 타입을 추가하여, 버전 업데이트시 DB업데이트를 수동으로 해야하는 부분을 줄여줄 수도 있을듯합니다. /adm/dbupgrade.php 파일 참고.

지속적으로 관심을 가져주셔서 감사하다는 말씀 전하며,
제안해주신 의견들은 긍정적으로 검토한 후 반영하도록 하겠습니다.
(특히 파일 삭제기능)
좋은 의견 주셔서 감사합니다 :)
저는 아래와 같은 문제가 발생했습니다.
data 폴더 권한 777 인데 패스워드 입력하고 업데이트 하면 "디렉토리를 생성하는데 실패했습니다. " 라는 안내 멘트 뜨네요.
한가지만 바라는 점 있다면 "지금업데이트" 클릭했을때 팝업창에서 패스워드 입력부분에 **** 처리 되었으면 좋겟습니다. 관리자 비밀번호 입력은 민감한 부분이라서 .

말씀해주신 권한 문제에 대해서 꼼꼼하게 테스트&체크해서 작업하고, 패스워드 부분도 반영하도로 하겠습니다. 감사합니다 :)
현재 그누보드 버전은 5.5.7.5 를 사용하고 있습니다.
(이미지를 하나밖에 올리지 못해 나머지 하나는 링크로 올립니다.)
https://drive.google.com/file/d/1WPNX9oChQ2IS75TmqrTBfXrtcLnPclhM/view?usp=sharing


500 error의 경우 다양한 원인이 있어서 해당 이미지로는 정확하게 파악이 힘듭니다.. ㅠㅠ
아파치 에러로그를 확인하는 것이 정확하게 파악할 수 있습니다.
(그리고 예상되는 부분은 curl모듈이 정상적으로 사용되고 있는지 확인하는 것입니다.)

녹두탐님 같은 인류애가 넘치는 분이 계시기에 그누보드가 계속 발전하는 가 봅니다.^^