Cafe24 UTF-8 서버 이전기

Zeroboard 5와 Mediawiki 를 위해서 UTF-8 서버로 이전한지도 꽤 시간이 흘렀습니다. 정작 ZB5는 IE7 과 문제 때문에 못 쓰고, Mediawiki 는 다른 서버에 설치해버렸군요.

덕분에 기존에 제가 쓰던 서비스들을 UTF-8에서 동작하도록 모조리 수정해야했습니다. 이 장대한(?) 삽질기를 간략한 기록으로 정리하려고 합니다. 혹시 UTF-8로 이전하신 분들께 도움이 됐으면 합니다.

주의 : 본 내용은 리눅스 시스템에 친숙한 분들께 참고용으로 쓴 것입니다. 본 내용에는 오류가 있을 수 있으며, 이에 관련한 피해에 대해서는 각자 본인 책임하에 진행해야 합니다. 또한, UTF-8 이전 작업은 까다로우므로 자신이 없는 분은 가급적 주위 분들의 도움을 구하시는 것을 추천합니다.

  1. MySQL을 백업합니다. $ mysqldump -c -ufoobar -p foobar > foobar.sql

  2. ~/www 디렉토리를 백업합니다. $ cd ~<br /> $ tar -cvzf foobar.tar.gz ~/www

  3. 모두 PC로 다운로드 받아둡니다.

  4. http://hosting.cafe24.com 에 가서 이전을 신청합니다.

  5. 이전 완료 메일이 도착하면 새 UTF-8 서버로 접속해서 코드를 확인합니다. $ set | grep LANG

  6. 문서 편집기를 이용해서 foobar.sql 파일내에 있는 테이블의 인코딩을 EUC-KR 에서 UTF-8 로 바꿉니다.

  7. MySQL 덤프를 업로드 합니다.

  8. foobar.sql 파일의 인코딩을 변환합니다. /usr/bin/iconv -c -f euc-kr -t utf-8 foobar.sql > foobar_utf8.sql

  9. MySQL 덤프를 넣습니다. $ mysql -ufoobar -p foobar < foobar.sql

  10. PC에 있는 foobar.tar.gz 을 풉니다.

  11. FileZilla 와 같이 강제로 UTF-8 을 사용할 수 있는 FTP 프로그램을 사용해서 푼 파일들을 서버로 업로드 합니다. convmv 를 사용하면 서버에서 할 수도 있을 것 같지만 cafe24 에는 해당 프로그램 안 보입니다.

  12. 우선 웹에 접속해서 페이지가 열리는지 확인합니다.

  13. 이제 각 서비스를 수정합니다. 제가 사용하는 phpBB2와 JSBoard만 설명드리는 것을 양해 부탁드립니다. 아래와 같은 내용으로 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`

  1. 각각 실행 권한을 주세요. $ chmod 755 utf8*.sh

  2. phpBB2 디렉토리로 이동한 후에 utf8php.sh 와 utf8tpl.sh 스크립트를 실행합니다.

  3. JSBoard 디렉토리로 이동한 후에 utf8php.sh 와 utf8template.sh 스크립트를 실행합니다.

  4. phpBB2의 ./language/lang_korean/lang_main.php 파일의 41 번째줄을 아래와 같이 편집합니다. 편집 위치는 버전에 따라 약간 변합니다. $lang['ENCODING'] = 'utf-8';

  5. Attachment Mod 를 사용하신다면 ./download.php 파일의 187 번째줄을 아래와 같이 편집합니다. header('Content-Disposition: inline; filename="' . urlencode($real_filename) . '"');

  6. phpBB2가 정상적으로 보이는지 확인합니다.

  7. JSBoard의 ./act.php 파일의 568, 573 번째줄을 아래와 같이 편집합니다. 편집 위치는 버전에 따라 약간 변합니다. header("Content-Disposition: attachment; filename=".urlencode($dn['name']));

  8. JSBoard의 ./include/LANG/ko.php 파일의 4 번째줄을 아래와 같이 편집합니다. $langs['charset'] = "UTF-8";

  9. JSBoard의 ./include/check.php 파일의 264~269 줄을 주석처리합니다. `/*

file 이름에서 특수문자가 있으면 에러 출력

한글 영역과 한자 영역은 허락 함

if ( preg_replace ("/[\w\d._-]|[\xB0-\xC8\xCA-\xFD][\xA1-\xFE]/",'', urldecode ($f)) ) {
print_error($langs[‘act_de’],250,150,1);
exit;
}
*/`

  1. JSBoard의 ./include/check.php 파일의 242 줄에 아래 코드를 추가합니다. $list['bofile'] = urlencode($list['bofile']);

  2. JSBoard의 ./include/parse.php 파일의 327~328 번째줄을 아래와 같이 편집합니다. $s = mb_substr($s,0,$l, "UTF-8");<br /> // $s = preg_replace("/(([\x80-\xFE].)*)[\x80-\xFE]?$/","\\1",$s);

updatedupdated2021-01-142021-01-14