그누보드5가 나온지도 어느덧 수년이 흘렀다.


그러나 그보다 이전에 그누보드로 만들어진 사이트들은 그누보드4가 대부분이며


그중에는 utf-8도 있겠지만 euc-kr로 만들어진 사이트도 많이 있다.


이러한 사이트들이 사이트 리뉴얼을 하는 등의 이유로 그누보드5로 넘어와야 할 수 있는데 그동안 쌓인 게시판 글 등 DB문제로 골머리를 앓는 사람도 있을 것이다. 이번 포스팅에서는 그누보드4에서 그누보드5로 이전하는 방법에 대해 알아보겠다.


다행히 그누보드5에서는 그누보드4에서 쉽게 이전할 수 있도록 방법을 제공하고 있어서 크게 어려운 점은 없을 것이다.


이 글에서 사용하는 버전

그누보드4 : 4.37.38 (euc-kr)

그누보드5 : 5.2.9.8 (utf-8) // 그누보드5는 euc-kr을 지원하지 않으므로 무조건 'utf-8' 이다.


버전은 어느 것을 사용하던 자유이다.


이 글을 보고 실전에 바로 사용하는 것은 권하지 않으며, 연습용 사이트에서 충분히 연습해보고 사용하길 권장한다.


우선, 옮겨야할 사이트를 보겠다. 총 3개의 게시판으로 이루어져 있으며 게시글은 그림과 글로 작성되있다.





이제 하나씩 해보도록 하자.


먼저 그누보드4의 DB를 백업한다.


필자는 phpmyadmin에서 백업을 했다. 


혹시 phpmyadmin에 접근하는 방법을 모르겠다면, 호스팅한 사이트에서 찾아보도록 한다. ex) 닷홈일경우 : 마이닷홈 -> 상세보기 -> 제공내역


phpMyAdmin에 접속하면 아래와 같은 화면이 보일텐데 빨간색 네모를 클릭해준다.



여기서 g4_로 보이는 것들이 그누보드4의 데이터베이스들이다. 


 xe로 시작하는 것들은 XE(前, 제로보드)의 DB이다. 필자가 XE도 같이 사용해서 보이는 것이며 그누보드만 쓰는 이들에게는 없을 것이다.


아무튼 이 화면에서는 내보내기(export)를 눌러준다.





내보내기 방법으로는 '퀵, 커스텀' 2가지가 있는데 대부분의 경우 퀵을 사용해도 상관없으나 


필자와 같이 제외하고 싶은 DB 테이블이 있다면 커스텀을 사용해서 체크를 해제해줘야한다.


그누보드5는 utf-8을 쓰기 때문에 파일 문자셋은 utf-8로 설정한다. (아마 자동으로 설정되었을 것이다.)


이외의 것들은 특별한 경우가 아니면 건드리지 않아도 되며 실행버튼을 눌러준다.




'실행' 버튼을 누르면 sql 확장자의 파일이 다운받아진다.




이제 그누보드5를 설치한다.


(그누보드5의 설치순서는 크게 상관이 없으나 그누보드4의 DB를 옮기기 전에는 어떠한 DB관련 작업도 해서는 안된다.)


설치를 할때는 MySQL 정보를 정확히 입력해준다.




그누보드5 설치를 완료했다. 그러나 빈 껍데기만 있을 뿐 게시글이 존재하지 않는다.



이제 본격적으로 그누보드4에서 작성되었던 DB들을 옮기기 시작한다.


phpMyAdmin 에서 가져오기(import)를 눌러주고 파일 선택을 클릭하여 이전에 다운받은 DB 파일을 선택한 후 실행을 눌러준다.

 


만약 이런 오류가 발생한다면 당황하지 않고, g4_로 시작하는 테이블들을 지워준 후 다시 실행한다.




그러면 이렇게 2가지 버전의 DB가 동시에 존재하게 된다.



다음으로는 그누보드4의 config.php 파일을 그누보드5로 복사한다. 위치는 자유이며 필자는 g4conf 라는 디렉터리(폴더)를 만들어서 그 안에 넣었다.


넣기 전에 반드시 config.php 를 utf-8로 인코딩해주고 코드도 수정해준다.





이제 그누보드5 안에 포함되있는 DB 이전 프로그램을 사용할 차례이다.


접근 방법은 그누보드5에 접속한 주소 뒤에 /g4_import.php를 추가하여 접속한다.


 관리자 아이디로 로그인 되있어야한다.


ex) http://도메인/g5/g4_import.php


아래와 같은 화면이 보인다면 성공이다.


이제 config.php 파일 경로를 상대경로로 지정해주고 확인 버튼을 누른다.






아래와 같은 화면이 보여야한다.




그리고 그누보드5 로 가보니 글은 있는데 그림이 없다.




왜냐하면 DB만 옮겼고 이외의 것들이 오지 않았기 때문이다.


그누보드4 에서 /data/file 안에 것들을 모두 그누보드5 의 /data/file 안으로 복사한 후 다시 접속해보면


아래처럼 그림까지 모두 출력되는 것을 볼 수 있다. 


 게시판들의 table 명이 같아야하며 table명이 다르다면 file 안의 디렉터리 이름을 변경해주면 된다.





그누보드를 설치 할 때 아래의 과정을 거쳐야한다.




그리고 가끔 이런 문구를 만날 수 있다.



Warning: mysqli_connect(): (HY000/1045): Access denied for user '(아이디)'@'localhost' (using password: YES) in (경로)/lib/common.lib.php on line 1435

Connect Error: Access denied for user '(아이디)'@'localhost' (using password: YES) 


mysqli_connect(): (28000/1045) 이든 mysqli_connect(): (HY000/1045) 이든 대부분의 경우 DB의 아이디와 비밀번호가 틀렸을 때 이 페이지를 볼 수 있다.


직접 서버를 만들었다면 DB 아이디를 다시 한번 확인해줘야 하며 웹호스팅의 경우에는 호스팅한 업체(사이트)에서 다시 한번 확인해야한다.


(닷홈)


이처럼 호스팅 업체에서 사이트의 DB정보를 볼 수 있다.


간혹 웹호스팅을 신청하고 생성할 때 DB 설치를 하지 않는 곳도 있는데 이런 경우에는 DB를 새로 만들어 줘야한다.


(호스팅어)


+ 가비아(Gabia)를 사용할 경우 조금 다르다.



이처럼 host 와 DB 앞에 db를 추가해줘야 한다. 


ex)

Host : db.abc.com

User : aaa

Password : pass123

DB : dbaaa


그누보드를 사용하면서 alert 경고창으로 이런 문구를 본 적이 있을 것이다.



'정상적으로 로그인하여 접근하시기 바랍니다.'


이것은 그누보드의 관리자 화면에 접속할 때 몇몇 사람들에게 생기는 현상인데 처음 접한 사람이라면 당황할 수 밖에 없을 것이다.


뿐만 아니라 관리자 화면에 접속하고서도 메뉴 등 버튼을 눌렀을 때 로그아웃 되는 현상이 발생할 수 있다.


이것에는 여러가지 이유가 있을 수 있으나 필자가 해결한 방법은 아래와 같다.


우선 필자는 처음에 데스크톱으로 ftp를 활용하여 서버에 그누보드를 설치했는데 다른 PC와 노트북으로 사이트에 접속하여 adm페이지, 관리자화면에 접속했을 때 오류가 발생하였다.


'정상적으로 로그인하여 접근하시기 바랍니다' 라는 경고창의 소스는 admin.lib.php 파일에서 찾을 수 있는데 이를 통하여 오류의 발생 원인 또한 이 파일에 있다는 것을 알 수 있다. 참고로 admin.lib.php 파일은 gnuboard/adm 폴더에 있다.


문제가 발생하는 원인을 추측해보자면 누군가가 해킹 등 나쁜 목적으로 관리자 페이지에 접근하는 것을 막기 위해 관리자 pc와 정보가 다를 때 접근을 막는 것이 이러한 문제를 일으키는 것 같다.


해결 방법

: 오류의 원인이 되는 소스를 삭제, 변경하거나 주석처리한다.



그누보드4

admin.lib.php (변경 전)

 // 관리자의 아이피, 브라우저와 다르다면 세션을 끊고 관리자에게 메일을 보낸다.

$admin_key = md5($member[mb_datetime] . $_SERVER['REMOTE_ADDR'] . $_SERVER['HTTP_USER_AGENT']);

admin.lib.php  (변경 후)

 // 관리자의 아이피, 브라우저와 다르다면 세션을 끊고 관리자에게 메일을 보낸다.

// $admin_key = md5($member['mb_datetime'] . $_SERVER['REMOTE_ADDR'] . $_SERVER['HTTP_USER_AGENT']); 

$admin_key = md5($member['mb_datetime'] . $_SERVER['REMOTE_ADDR'] . preg_replace('/; ; NCLIENT50\S*\)/',')',$_SERVER['HTTP_USER_AGENT']));

//출처 5.0.30 버전 보안툴로 인한 문제 해결 (정상적으로 로그인하여 접근하시기 바랍니다.)|작성자 질풍이


 그누보드5

 admin.lib.php (변경 전)

 // 관리자의 아이피, 브라우저와 다르다면 세션을 끊고 관리자에게 메일을 보낸다.

$admin_key = md5($member['mb_datetime'] . $_SERVER['REMOTE_ADDR'] . $_SERVER['HTTP_USER_AGENT']);

if (get_session('ss_mb_key') !== $admin_key) {


    session_destroy();


    include_once(G5_LIB_PATH.'/mailer.lib.php');

    // 메일 알림

    mailer($member['mb_nick'], $member['mb_email'], $member['mb_email'], 'XSS 공격 알림', $_SERVER['REMOTE_ADDR'].' 아이피로 XSS 공격이 있었습니다.\n\n관리자 권한을 탈취하려는 접근이므로 주의하시기 바랍니다.\n\n해당 아이피는 차단하시고 의심되는 게시물이 있는지 확인하시기 바랍니다.\n\n'.G5_URL, 0);


    alert_close('정상적으로 로그인하여 접근하시기 바랍니다.');

}

 admin.lib.php  (변경 후)

 // 관리자의 아이피, 브라우저와 다르다면 세션을 끊고 관리자에게 메일을 보낸다.

/*$admin_key = md5($member['mb_datetime'] . $_SERVER['REMOTE_ADDR'] . $_SERVER['HTTP_USER_AGENT']);

if (get_session('ss_mb_key') !== $admin_key) {


    session_destroy();


    include_once(G5_LIB_PATH.'/mailer.lib.php');

    // 메일 알림

    mailer($member['mb_nick'], $member['mb_email'], $member['mb_email'], 'XSS 공격 알림', $_SERVER['REMOTE_ADDR'].' 아이피로 XSS 공격이 있었습니다.\n\n관리자 권한을 탈취하려는 접근이므로 주의하시기 바랍니다.\n\n해당 아이피는 차단하시고 의심되는 게시물이 있는지 확인하시기 바랍니다.\n\n'.G5_URL, 0);


    alert_close('정상적으로 로그인하여 접근하시기 바랍니다.');

}*/


+ Recent posts