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

g4 에서 g5로 갈아타기

· 11년 전 · 14672 · 5
안녕하세요.

말그대로 갈아타기 팁입니다. 해보니 크게 문제없이 돌아가네요.

본 내용은 그누보드4기반의 운영중인 홈페이지인 경우에 해당되는 팁으로, 테스트로 진행후 이상없을 시 이전을 하시길 권장드립니다.

그누보드4에서 dtd 버젼인 경우 크게 문제없이 이전이 됩니다만, 그누보드5경우 $g4[path] 변수가 다르게 대체됨과 여러가지 기능과 그에따른 필드가 생성이 됨으로써, 그리 간단치는 않습니다.
하지만, 다행인것은 그누보드5의 개발은 그누보드4를 기반으로 하는 것은 분명히 보이기에 이전이 가능하겠습니다.

1. 운영중 계정에 새로운 폴더(예: g5)를 생성합니다.

2. g5 전체(adm, bbs ,...., _common.php,....)를 g5로 ftp를 통해 복사를 합니다. (폴더 전체(예:g5-5.0b14)가 아닌 index.php 파일이 포함하는 폴더/파일)

3. g5/data/ 내 아래 내용을 dbconfig.php 파일로 저장하여 올립니다. 단, mysql 정보를 입력해야 합니다.


<?php
if (!defined('_GNUBOARD_')) exit;
define('G5_MYSQL_HOST', 'localhost');
define('G5_MYSQL_USER', '');//mysql id
define('G5_MYSQL_PASSWORD', '');//mysql password
define('G5_MYSQL_DB', '');//mysql dbname

define('G5_TABLE_PREFIX', 'g4_');

$g5['write_prefix'] = G5_TABLE_PREFIX.'write_'; // 게시판 테이블명 접두사

$g5['auth_table'] = G5_TABLE_PREFIX.'auth'; // 관리권한 설정 테이블
$g5['config_table'] = G5_TABLE_PREFIX.'config'; // 기본환경 설정 테이블
$g5['group_table'] = G5_TABLE_PREFIX.'group'; // 게시판 그룹 테이블
$g5['group_member_table'] = G5_TABLE_PREFIX.'group_member'; // 게시판 그룹+회원 테이블
$g5['board_table'] = G5_TABLE_PREFIX.'board'; // 게시판 설정 테이블
$g5['board_file_table'] = G5_TABLE_PREFIX.'board_file'; // 게시판 첨부파일 테이블
$g5['board_good_table'] = G5_TABLE_PREFIX.'board_good'; // 게시물 추천,비추천 테이블
$g5['board_new_table'] = G5_TABLE_PREFIX.'board_new'; // 게시판 새글 테이블
$g5['login_table'] = G5_TABLE_PREFIX.'login'; // 로그인 테이블 (접속자수)
$g5['mail_table'] = G5_TABLE_PREFIX.'mail'; // 회원메일 테이블
$g5['member_table'] = G5_TABLE_PREFIX.'member'; // 회원 테이블
$g5['memo_table'] = G5_TABLE_PREFIX.'memo'; // 메모 테이블
$g5['poll_table'] = G5_TABLE_PREFIX.'poll'; // 투표 테이블
$g5['poll_etc_table'] = G5_TABLE_PREFIX.'poll_etc'; // 투표 기타의견 테이블
$g5['point_table'] = G5_TABLE_PREFIX.'point'; // 포인트 테이블
$g5['popular_table'] = G5_TABLE_PREFIX.'popular'; // 인기검색어 테이블
$g5['scrap_table'] = G5_TABLE_PREFIX.'scrap'; // 게시글 스크랩 테이블
$g5['visit_table'] = G5_TABLE_PREFIX.'visit'; // 방문자 테이블
$g5['visit_sum_table'] = G5_TABLE_PREFIX.'visit_sum'; // 방문자 합계 테이블
$g5['uniqid_table'] = G5_TABLE_PREFIX.'uniqid'; // 유니크한 값을 만드는 테이블
$g5['syndi_log_table'] = G5_TABLE_PREFIX.'syndi_log'; // 네이버 신디케이션 컨텐츠 삭제 로그 테이블
$g5['autosave_table'] = G5_TABLE_PREFIX.'autosave'; // 게시글 작성시 일정시간마다 글을 임시 저장하는 테이블
$g5['cert_history_table'] = G5_TABLE_PREFIX.'cert_history'; // 인증내역 테이블
$g5['qa_content_table'] = G5_TABLE_PREFIX.'qa_content';//1:1 내용
$g5['qa_config_table'] = G5_TABLE_PREFIX.'qa_config';//1:1 환경
?>


4. 아래 내용을 파일(임의의 파일명.php)로 저장하여 g5/extend/내 올립니다. (예 : index.php)
페이지가 한번 로딩되면서 필요한 필드를 생성하기 위함입니다.


sql_query("alter table $g5[group_table] add `gr_show_menu` tinyint(4) NOT NULL default '0' ", false);
sql_query("alter table $g5[group_table] add `gr_device` ENUM('both','pc','mobile') NOT NULL DEFAULT 'both' ", false);
sql_query("alter table $g5[group_table] add `gr_order` int(11) NOT NULL default '0'", false);

sql_query("alter table $g5[board_table] add `bo_mobile_subject` varchar(255) NOT NULL DEFAULT ''", false);
sql_query("alter table $g5[board_table] add `bo_device` enum('both','pc','mobile') NOT NULL DEFAULT 'both'", false);


sql_query("alter table $g5[board_table] add `bo_order` int(11) NOT NULL DEFAULT '0'", false);
sql_query("alter table $g5[board_table] add `bo_show_menu` tinyint(4) NOT NULL DEFAULT '0'", false);

sql_query("alter table $g5[point_table] add `po_use_point` int(11) NOT NULL default '0'", false);
sql_query("alter table $g5[point_table] add `po_mb_point` int(11) NOT NULL default '0'", false);
sql_query("alter table $g5[point_table] add `po_expired` tinyint(4) NOT NULL default '0'", false);
sql_query("alter table $g5[point_table] add `po_expire_date` date NOT NULL default '0000-00-00'", false);
sql_query("alter table $g5[point_table] add KEY `index2` (`po_expire_date`)", false);

sql_query("
CREATE TABLE IF NOT EXISTS $g5[qa_config_table] (
`qa_title` varchar(255) NOT NULL DEFAULT'',
`qa_category` varchar(255) NOT NULL DEFAULT'',
`qa_skin` varchar(255) NOT NULL DEFAULT '',
`qa_mobile_skin` varchar(255) NOT NULL DEFAULT '',
`qa_use_email` tinyint(4) NOT NULL DEFAULT '0',
`qa_req_email` tinyint(4) NOT NULL DEFAULT '0',
`qa_use_hp` tinyint(4) NOT NULL DEFAULT '0',
`qa_req_hp` tinyint(4) NOT NULL DEFAULT '0',
`qa_use_sms` tinyint(4) NOT NULL DEFAULT '0',
`qa_send_number` varchar(255) NOT NULL DEFAULT '0',
`qa_admin_hp` varchar(255) NOT NULL DEFAULT '',
`qa_use_editor` tinyint(4) NOT NULL DEFAULT '0',
`qa_subject_len` int(11) NOT NULL DEFAULT '0',
`qa_mobile_subject_len` int(11) NOT NULL DEFAULT '0',
`qa_page_rows` int(11) NOT NULL DEFAULT '0',
`qa_mobile_page_rows` int(11) NOT NULL DEFAULT '0',
`qa_image_width` int(11) NOT NULL DEFAULT '0',
`qa_upload_size` int(11) NOT NULL DEFAULT '0',
`qa_insert_content` text NOT NULL,
`qa_1_subj` varchar(255) NOT NULL DEFAULT '',
`qa_2_subj` varchar(255) NOT NULL DEFAULT '',
`qa_3_subj` varchar(255) NOT NULL DEFAULT '',
`qa_4_subj` varchar(255) NOT NULL DEFAULT '',
`qa_5_subj` varchar(255) NOT NULL DEFAULT '',
`qa_1` varchar(255) NOT NULL DEFAULT '',
`qa_2` varchar(255) NOT NULL DEFAULT '',
`qa_3` varchar(255) NOT NULL DEFAULT '',
`qa_4` varchar(255) NOT NULL DEFAULT '',
`qa_5` varchar(255) NOT NULL DEFAULT ''
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
", false);


sql_query("
CREATE TABLE IF NOT EXISTS $g5[qa_content_table] (
`qa_id` int(11) NOT NULL AUTO_INCREMENT,
`qa_num` int(11) NOT NULL DEFAULT '0',
`qa_parent` int(11) NOT NULL DEFAULT '0',
`qa_related` int(11) NOT NULL DEFAULT '0',
`mb_id` varchar(20) NOT NULL DEFAULT '',
`qa_name` varchar(255) NOT NULL DEFAULT '',
`qa_email` varchar(255) NOT NULL DEFAULT '',
`qa_hp` varchar(255) NOT NULL DEFAULT '',
`qa_type` tinyint(4) NOT NULL DEFAULT '0',
`qa_category` varchar(255) NOT NULL DEFAULT '',
`qa_email_recv` tinyint(4) NOT NULL DEFAULT '0',
`qa_sms_recv` tinyint(4) NOT NULL DEFAULT '0',
`qa_html` tinyint(4) NOT NULL DEFAULT '0',
`qa_subject` varchar(255) NOT NULL DEFAULT '',
`qa_content` text NOT NULL,
`qa_status` tinyint(4) NOT NULL DEFAULT '0',
`qa_file1` varchar(255) NOT NULL DEFAULT '',
`qa_source1` varchar(255) NOT NULL DEFAULT '',
`qa_file2` varchar(255) NOT NULL DEFAULT '',
`qa_source2` varchar(255) NOT NULL DEFAULT '',
`qa_ip` varchar(255) NOT NULL DEFAULT '',
`qa_datetime` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
`qa_1` varchar(255) NOT NULL DEFAULT '',
`qa_2` varchar(255) NOT NULL DEFAULT '',
`qa_3` varchar(255) NOT NULL DEFAULT '',
`qa_4` varchar(255) NOT NULL DEFAULT '',
`qa_5` varchar(255) NOT NULL DEFAULT '',
PRIMARY KEY (`qa_id`),
KEY `qa_num_parent` (`qa_num`,`qa_parent`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
", false);

sql_query("
CREATE TABLE IF NOT EXISTS ".$g5['uniqid_table']." (
`uq_id` bigint(20) unsigned NOT NULL,
`uq_ip` varchar(255) NOT NULL,
PRIMARY KEY (`uq_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
", false);


sql_query("
CREATE TABLE IF NOT EXISTS ".$g5['syndi_log_table']." (
`content_id` int(11) NOT NULL,
`bbs_id` varchar(50) NOT NULL,
`title` text NOT NULL,
`link_alternative` varchar(250) NOT NULL,
`delete_date` varchar(14) NOT NULL,
PRIMARY KEY (`content_id`,`bbs_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
", false);


sql_query("
CREATE TABLE IF NOT EXISTS ".$g5['autosave_table']." (
`as_id` int(11) NOT NULL AUTO_INCREMENT,
`mb_id` varchar(20) NOT NULL,
`as_uid` bigint(20) unsigned NOT NULL,
`as_subject` varchar(255) NOT NULL,
`as_content` text NOT NULL,
`as_datetime` datetime NOT NULL,
PRIMARY KEY (`as_id`),
UNIQUE KEY `as_uid` (`as_uid`),
KEY `mb_id` (`mb_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
", false);



5. 도메인/g5/ 로 접속합니다.

이렇게 함으로써 기본적으로 이전은 일단, 완료가 됩니다만, 외 필요한 테이빌 및 필드가 충분이 있을 수 있습니다.
그런 경우 테이블이나 필드가 없다는 오류를 띄우게 되며, 당황할 필요없이 이때는 간단히 해당 필드를 위 index.php 파일에 계속 추가하며 생성해 주면 거의 완벽한 이전이 가능할 것입니다. 만약, index.php 파일에 넣어도 안될 경우 common.php 파일 중상쯤에 넣어서 아무페이지나 로딩시켜주면 됩니다.

부가적으로, 기존의 $g4[path]변수가 포함된 페이지를 사용할 경우 아래와 같이 일반적으로 G5_URL상수값을 $g4[path]로 대체하면 가능하겠지만 그누보드5에는 G5_PATH , G5_URL로 분리사용되므로 가급적 수정을 하는 것을 권장드립니다.

config.php 하단부에 추가합니다.

$g4[path]=G5_URL;//$g4[path]가 html내 사용된 경우 적용이 가능하며, include 등이 사용될 경우 에러가 발생합니다.

결론은, 그누보드4는 table prefix 기본 g4_ 입니다. 그누보드5는 g5_ 이지만, g5의 table prefix를 g4로 바꾸고, 기존에 없던 테이블, 필드만 생성하면 이전이 간단히 해결되겠습니다.

도움되시길 바랍니다.

아울러, 그누보드5, 영카트5의 건승을 기원합니다.

아! 질문은 받지 않습니다^^

댓글 작성

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

로그인하기

댓글 5개

그누보드4를 그누보드5로 이전하기,
좋은 팁 감사합니다.
큰 도움이 되겠습니다.
g4 를 g5로 이전하기 #5 ( 추가하기 )



4. 아래 내용을 파일(임의의 파일명.php)로 저장하여 g5/extend/내 올립니다. (예 : index.php)
페이지가 한번 로딩되면서 필요한 필드를 생성하기 위함입니다.
..... 최신버전의 경우에은 위에 언급된 것 이외에 필드가 여러개 더 추가되었습니다.
아래 내용으로 저장하면 누락된 필드를 추가할수 있습니다.

추가 수정된 코드는 http://www.happyjung.com/bbs/board.php?bo_table=lecture&wr_id=1639 에서 확인할수 있습니다.
코멘트 글자수 제한으로 인하여 내용을 다 적을수가 없군요....

<?php
if (!defined('_GNUBOARD_')) exit;

sql_query("alter table $g5[board_table] add `bo_mobile_subject` varchar(255) NOT NULL DEFAULT ''", false);
sql_query("alter table $g5[board_table] add `bo_device` enum('both','pc','mobile') NOT NULL DEFAULT 'both'", false);
sql_query("alter table $g5[board_table] add `bo_use_list_file` tinyint(4) NOT NULL default '0' ", false);
sql_query("alter table $g5[board_table] add `bo_mobile_subject_len` int(11) NOT NULL default '0' ", false);
sql_query("alter table $g5[board_table] add `bo_mobile_page_rows` int(11) NOT NULL default '0' ", false);
sql_query("alter table $g5[board_table] add `bo_mobile_skin` varchar(255) NOT NULL default '' ", false);
sql_query("alter table $g5[board_table] add `bo_mobile_content_head` text NOT NULL ", false);
sql_query("alter table $g5[board_table] add `bo_mobile_content_tail` text NOT NULL ", false);
sql_query("alter table $g5[board_table] add `bo_gallery_width` int(11) NOT NULL default '0' ", false);
sql_query("alter table $g5[board_table] add `bo_gallery_height` int(11) NOT NULL default '0' ", false);
sql_query("alter table $g5[board_table] add `bo_mobile_gallery_width` int(11) NOT NULL default '0' ", false);
sql_query("alter table $g5[board_table] add `bo_mobile_gallery_height` int(11) NOT NULL default '0' ", false);
sql_query("alter table $g5[board_table] add `bo_show_menu` tinyint(4) NOT NULL DEFAULT '0'", false);
sql_query("alter table $g5[board_table] add `bo_order` int(11) NOT NULL DEFAULT '0'", false);
sql_query("alter table $g5[board_table] add `bo_use_cert` enum('','cert','adult','hp-cert','hp-adult') NOT NULL DEFAULT ''", false);
sql_query("alter table $g5[board_table] add `bo_use_sns` tinyint(4) NOT NULL default '0' ", false);

...
좋은팁 감사합니다.
g4->g5
g4에서 g5

게시글 목록

번호 제목
24318
24317
24315
24309
24294
24293
24277
24262
24260
24253
24251
24236
24233
24228
24226
24221
24214
24203
24201
24199
24196
24195
24194
24192
24191
24187
24185
24183
24172
24168