Cafe24 UTF-8 서버 이전기
Zeroboard 5와 Mediawiki 를 위해서 UTF-8 서버로 이전한지도 꽤 시간이 흘렀습니다. 정작 ZB5는 IE7 과 문제 때문에 못 쓰고, Mediawiki 는 다른 서버에 설치해버렸군요.
덕분에 기존에 제가 쓰던 서비스들을 UTF-8에서 동작하도록 모조리 수정해야했습니다. 이 장대한(?) 삽질기를 간략한 기록으로 정리하려고 합니다. 혹시 UTF-8로 이전하신 분들께 도움이 됐으면 합니다.
주의 : 본 내용은 리눅스 시스템에 친숙한 분들께 참고용으로 쓴 것입니다. 본 내용에는 오류가 있을 수 있으며, 이에 관련한 피해에 대해서는 각자 본인 책임하에 진행해야 합니다. 또한, UTF-8 이전 작업은 까다로우므로 자신이 없는 분은 가급적 주위 분들의 도움을 구하시는 것을 추천합니다.
- MySQL을 백업합니다.
- ~/www 디렉토리를 백업합니다.
- 모두 PC로 다운로드 받아둡니다.
- http://hosting.cafe24.com 에 가서 이전을 신청합니다.
- 이전 완료 메일이 도착하면 새 UTF-8 서버로 접속해서 코드를 확인합니다.
- 문서 편집기를 이용해서 foobar.sql 파일내에 있는 테이블의 인코딩을 EUC-KR 에서 UTF-8 로 바꿉니다.
- MySQL 덤프를 업로드 합니다.
- foobar.sql 파일의 인코딩을 변환합니다.
- MySQL 덤프를 넣습니다.
- PC에 있는 foobar.tar.gz 을 풉니다.
- FileZilla 와 같이 강제로 UTF-8 을 사용할 수 있는 FTP 프로그램을 사용해서 푼 파일들을 서버로 업로드 합니다. convmv 를 사용하면 서버에서 할 수도 있을 것 같지만 cafe24 에는 해당 프로그램 안 보입니다.
- 우선 웹에 접속해서 페이지가 열리는지 확인합니다.
- 이제 각 서비스를 수정합니다. 제가 사용하는 phpBB2와 JSBoard만 설명드리는 것을 양해 부탁드립니다.
- 각각 실행 권한을 주세요.
- phpBB2 디렉토리로 이동한 후에 utf8php.sh 와 utf8tpl.sh 스크립트를 실행합니다.
- JSBoard 디렉토리로 이동한 후에 utf8php.sh 와 utf8template.sh 스크립트를 실행합니다.
- phpBB2의 ./language/lang_korean/lang_main.php 파일의 41 번째줄을 아래와 같이 편집합니다. 편집 위치는 버전에 따라 약간 변합니다.
- Attachment Mod 를 사용하신다면 ./download.php 파일의 187 번째줄을 아래와 같이 편집합니다.
- phpBB2가 정상적으로 보이는지 확인합니다.
- JSBoard의 ./act.php 파일의 568, 573 번째줄을 아래와 같이 편집합니다. 편집 위치는 버전에 따라 약간 변합니다.
- JSBoard의 ./include/LANG/ko.php 파일의 4 번째줄을 아래와 같이 편집합니다.
- JSBoard의 ./include/check.php 파일의 264~269 줄을 주석처리합니다.
- JSBoard의 ./include/check.php 파일의 242 줄에 아래 코드를 추가합니다.
- JSBoard의 ./include/parse.php 파일의 327~328 번째줄을 아래와 같이 편집합니다.
$ mysqldump -c -ufoobar -p foobar > foobar.sql
$ cd ~
$ tar -cvzf foobar.tar.gz ~/www
$ set | grep LANG
/usr/bin/iconv -c -f euc-kr -t utf-8 foobar.sql > foobar_utf8.sql
$ mysql -ufoobar -p foobar < foobar.sql
아래와 같은 내용으로 utf8php.sh 라는 스크립트를 하나 만듭니다. "*.php" 부분을 "*.tpl" 과 "*.template" 로 변경해서 각각 utf8tpl.sh, utf8template.sh 로 스크립트를 만릅니다.
#!/bin/sh
for i in $( find . -name "*.php" ); do
if [ -f $i ]
then
/usr/bin/iconv -f UHC -t utf-8 -o $i.tmp $i
mv -f $i $i.bak
mv -f $i.tmp $i
fi
done
$ chmod 755 utf8*.sh
$lang['ENCODING'] = 'utf-8';
header('Content-Disposition: inline; filename="' . urlencode($real_filename) . '"');
header("Content-Disposition: attachment; filename=".urlencode($dn['name']));
$langs['charset'] = "UTF-8";
/*
# file 이름에서 특수문자가 있으면 에러 출력
# 한글 영역과 한자 영역은 허락 함
if ( preg_replace ("/[\w\d._\-]|[\xB0-\xC8\xCA-\xFD][\xA1-\xFE]/",'', urldecode ($f)) ) {
print_error($langs['act_de'],250,150,1);
exit;
}
*/
$list['bofile'] = urlencode($list['bofile']);
$s = mb_substr($s,0,$l, "UTF-8");
// $s = preg_replace("/(([\x80-\xFE].)*)[\x80-\xFE]?$/","\\1",$s);
UTF-8 로 바꾸었습니다.
Cafe24 웹호스팅을 쓰면서 EUC-KR 기반이었습니다. 불안하게도 이 블로그는 EUC-KR 기반에서 돌아가는 UTF-8 이었지요.
ZB5와 mediawiki를 써볼 요량으로 UTF-8 계정을 신청해서 어제 이전했습니다. 모두 백업을 받고 새 계정이 만들어지고, 다시 업로드와 복구 하는데 꽤 시간이 걸렸습니다. 특히 인코딩 관련해서 걸림돌이 많았습니다.
현재 블로그, phpBB, JSBoard는 이전을 마친 상태입니다. 다만 EUC-KR로 인코딩한 파일명을 사용하는 JSBoard가 문제군요. 업로드 파일쪽의 문제는 앞으로 방법을 찾을 생각입니다.
이전이 마무리되면 이전에 방법에 대한 내용을 정리할 생각입니다. (이렇게 공개적으로 약속하지 않으면 특유의 게으름으로 안 할 것이 분명해서 적습니다.)
OS, DB, Web이 UTF-8 로 통일되니 딱 정리된 것이 보기가 좋습니다.