[첫화면으로]UseModWiki소스수정/Upgrade

마지막으로 [b]

ext1.* 버전을 사용하던 상태에서 ext2.* 버전으로 옮기기

1. 개요
1.1. 주의
2. 계획
3. ext2 버전 설치
4. 기존 데이타 디렉토리 복사&변환
5. 기존에 업로드된 파일명 인코딩 변환
6. 환경 설정
6.1. wiki.pl 수정
6.2. config.pl 수정
7. 확인
8. 사용자 의견이나 질문

1. 개요

다음 두 가지 이유 때문에, ext1.* 버전에서 ext2.* 버전으로 넘어갈 때는 데이타 디렉토리를 그대로 사용할 수 없다.

이 페이지에서는 ext1.* -> ext2.* 업그레이드시 데이타를 어떻게 이전할 수 있는지를 설명한다.

1.1. 주의

ext2 에서는 Encode, Encode::Guess 등의 Perl 5.8 이상 버전에서 제공하는 코어 모듈을 사용한다. 자신의 홈페이지가 있는 서버의 펄 버전을 확인할 것.

2. 계획

/Installation의 내용처럼, ext1 버전이 아래와 같이 위키 설치, 페이지 데이타, 업로드 디렉토리를 구성한 상태라고 가정하자.
/home/gildong/public_html/cgi-bin/wiki/  - UseModWiki 를 설치할 디렉토리
/home/gildong/wikidata                   - UseModWiki 데이타가 들어갈 디렉토리 (public_html 밖으로 빼내는 것을 권장)
/home/gildong/public_html/upload         - 업로드한 화일이 들어갈 디렉토리 
                                           (public_html 아래에 있어야 함. 위의 데이타 디렉토리와는 따로 둘 것)

우리가 앞으로 해야 할 일은,

편의상, 다음과 같이 임시로 구성한 디렉토리에 ext2.* 버전을 설치하기로 하자.
/home/gildong/public_html/cgi-bin/ext2/  - UseModWiki 를 설치할 디렉토리
/home/gildong/ext2data                   - UseModWiki 데이타가 들어갈 디렉토리
/home/gildong/public_html/upload         - 업로드한 화일이 들어갈 디렉토리      <-- 이건 바뀌지 않는다

또한, ext2.* 버전에서는 "UTF-8" 인코딩을 사용하는 걸로 하자. (EUC-KR을 유지하는 경우의 내용도 언급할 것임)

3. ext2 버전 설치

/Installation을 참조하여, /Download에서 받은 ext2.* 버전의 압축을 푼다.

단, tar.gz 파일을 압축을 풀면 자동으로 wiki 라는 디렉토리가 생기면서 그 안에 파일들이 생성되므로, cgi-bin/ 아래에서 바로 풀면 기존의 wiki/ 디렉토리에 덮어쓰게 된다. 그러니 다른 곳에서 압축을 푼 후, 생성된 wiki 디렉토리의 이름을 ext2 로 바꾸어서 cgi-bin/ 아래로 이동시킨다.

텔넷 등으로 접속해서 다음과 같이 하던지, 자신의 PC에서 다운받아서 압축을 푼 후 FTP 등으로 업로드할 수 있겠다.
$ cd                                                           (/home/gildong 디렉토리로 이동)
$ wget http://gypark.pe.kr/pub/gyparkwiki/wiki/current.tar.gz  (tar.gz 파일 다운로드)
$ gzip -dc ~/current.tar.gz | tar xvf -                        (압축을 풀면, /home/gildong/wiki 디렉토리가 생겨난다)
$ mv ./wiki ~/public_html/cgi-bin/ext2                         (wiki 디렉토리를 /home/gildong/public_html/cgi-bin/ext2 로 이동)
$ cd ~/public_html/cgi-bin/ext2

이 상태에서 데이타 디렉토리와 업로드 디렉토리를 새로 만들어준다면, 새로운 위키를 하나 더 설치한 셈이 될 것이다.

4. 기존 데이타 디렉토리 복사&변환

ext2 버전 형식의 데이타가 들어갈 디렉토리를 생성한다.
$ mkdir /home/gildong/ext2data         # 디렉토리를 만들고
$ chmod 2777 /home/gildong/ext2data    # 퍼미션을 2777 로 줄 것

ext2.* 버전에 들어있는 restore.pl 파일에 실행 퍼미션을 준다. (평소에는 쓸 일이 없기 때문에 일부러 실행 퍼미션을 주지 않은 상태로 압축했음)
$ chmod +x ./restore.pl

이제 웹 브라우저로, 다음 URL을 들어간다.
http://서버.주소/~gildong/cgi-bin/ext2/restore.pl

아래 스크린샷과 같은 화면이 나오면, 각 필드의 값을 적절하게 넣어준다.

정상적으로 처리되었다면 /home/gildong/ext2data 안에 데이타 파일들이 복사되어 있는 것을 확인할 수 있다.

5. 기존에 업로드된 파일명 인코딩 변환

(ext2에서도 EUC-KR 인코딩으로 운영할 경우는 이 섹션은 통과)

restore.pl을 다시 브라우저로 불러온 후, 다음 스크린샷과 같이 필드를 채워준다.

정상적으로 수행되면, upload 디렉토리 안에 들어있는 파일들 중 파일명이 한글이 들어간 경우는 UTF-8 인코딩으로 변환된 이름으로 바뀐다.1

6. 환경 설정

6.1. wiki.pl 수정

/ext2/wiki.pl 파일에서, 데이타 디렉토리의 경로를 수정해준다.

### 보안을 위해서 데이타 저장 공간을 다른 곳으로 지정
### 적절히 바꾸어서 사용할 것
$DataDir     = "/home/gildong/ext2data";    # Main wiki directory
$ConfigFile  = "config.pl"; # path of config file

6.2. config.pl 수정

/ext2/config.pl 파일을 기존의 config.pl 파일과 비교하며 고쳐준다.

(ext1 버전과 비교해서 추가된 변수, 삭제된 변수, 이름이 바뀐 변수 등이 섞여 있어서 사실 좀 복잡하다 =.=;)

일단 필수적인 것 몇 개를 언급하면:
# 새로 설치한 위키 디렉토리의 URL
## 슬래쉬 링크를 쓰기 위해서는 각종 URL들이 절대경로로 적혀야 하기 때문에, 거기에 공통적으로
## 들어갈 부분을 이 변수에 적어준다.

# 아래처럼 자기 계정의 DocumentRoot 인 public_html의 아래부터 적어주던가 (/cgi-bin/ext2)
# 아예 도메인 이름까지 다 넣어서 "http://서버.주소/~gildong/cgi-bin/ext2" 와 같이 적어준다.
$UrlPrefix = "http:/cgi-bin/ext2";  # URL prefix for other variables ($...Url)
                                   # like "http:/wiki","http://mydomain.com/wiki",etc.


# 홈페이지의 인코딩 지정
# 만일 EUC-KR로 운영하고 싶다면 UTF-8 대신에 EUC-KR을 적어준다.
$HttpCharset  = "UTF-8";         # Charset for pages, like "iso-8859-2"


### Translation
# 사용할 번역 파일을 고른다.
# 만일 EUC-KR로 운영하고 싶다면 첫 줄을 주석처리하고 두번째 줄의 주석 표시를 없애준다.
do "./translations/ko_KR.UTF-8.pl";     # korean, UTF-8 encoding
# do "./translations/ko_KR.EUC-KR.pl";    # korean, EUC-kR encoding

7. 확인

이제 브라우저로 새로 설치된 ext2 버전의 위키를 들어가 본다.
http://서버.주소/~gildong/cgi-bin/ext2/wiki.pl

환경설정의 나머지 변수들도 기존과 같이 설정해주고, 스타일쉬트도 옮겨줬다면 ext1.*을 쓸때와 거의 완전히 동일한 화면이 나오는 걸 확인할 수 있다.

제대로 돌아가는 걸 확인했으면

8. 사용자 의견이나 질문

ext2 버전 설치에서 부터 좌절. 왜 에러가 날까요.
http://nyxity.com/wikiutf/
-- Nyxity 2007-2-26 9:23 am

http://nyxity.com/wikiutf/wiki.pl - 잘 되는데요? ^^
-- Raymundo 2007-2-26 9:58 am

아 되는군요. :)
-- Nyxity 2007-2-26 10:04 am

우 변환과정에서 멈춰버리는군요.
-- Nyxity 2007-2-26 10:28 am

음 제가 좀 들어가서 살펴보겠습니다.
-- Raymundo 2007-2-26 12:28 pm

어흑.. 이거 매번 죄송해서.
-- Nyxity 2007-2-26 1:25 pm

일단... 기존 데이타 디렉토리에, 제목이 UTF-8로 인코딩된 "게시판"이라는 페이지가 존재했습니다. EUC-KR로 된 게시판은 따로 있고요, 이 UTF-8 "게시판"은 이유는 모르지만 잘못 생성된 것 같더군요. 이미 utf8인데 이걸 euc-kr이라고 가정해서 변환을 시도하려니 제대로 안 되었고, 그래서 저장이 안 되면서 스크립트가 죽었던 것 같습니다.

그래서 nyxity님 계정에서, 기존 데이타 디렉토리를 통채로 복사를 한 다음에, 거기서 그 잘못된 게시판.db .cnt .kp .link 파일을 삭제한후 변환을 시도했습니다만, 여전히 도중에 멈추는데, 이번에는 이유조차 알수가 없습니다.

추측일 뿐이지만 아래와 갈은 원인들이 있을 법 합니다.
1) 변환하기 위해 복사하는 과정에서 nyxity님 계정에 할당된 디스크 쿼터가 풀 되었다. <= 제로 기존 데이타 디렉토리의 카피를 세개째 만들려고 하면 풀 나더군요. 근데 restore.pl이 변환하는 동안에는 그만큼은 용량이 늘어나지 않으니 괜찮았을 것 같은데..

2) 서버 차원에서, 보안 등의 이유로, CGI스크립트가 한 타임에 일정 시간 이상 수행되거나 일정 횟수나 일정 용량 이상 디스크 액세스 또는 브라우저 출력 등을 하는 걸 막고 있다. <= 이런 게 가능한지는 모르겠습니다만, 스크립트가 멈추는 시점이 항상 동일하지는 않으면서 대충 비슷한 곳이다...라는 점에서 그럴 법 하기도...

뭐 어느쪽이든 더 이상 babel 계정에서 변환은 무리일 것 같아서, 아예 기존 데이타를 tar 로 압축하서 제 계정에 가져온 다음에 변환을 시도하고 있는데 한번에 잘 되더군요. (물론 저 UTF-8 "게시판.db"는 지운 상태에서) 이걸 다시 가져가서 복사해 보겠습니다.
-- Raymundo 2007-2-26 3:00 pm

으아... 이거이거 일이 커진것 같아서 너무 죄송하군요.
-- Nyxity 2007-2-26 3:46 pm

데이타 변환은 제대로 된 것 같은데, 페이지 인덱스 화면 보면 TOC에 한글 부분이 안나오고, 한글 페이지들이 제대로 분류가 안 되는군요. "UNICODE" 인코딩된 스트링 처리가 잘 안 되는 것 같습니다.

업체에, 다음 펄 모듈을 설치해달라고 부탁해보세요. 효과가 있을지는 모르겠습니다만..
* Encode
* Encode::Guess
-- Raymundo 2007-2-26 3:48 pm

그리고 죄송해하실 필요 없습니다. 바벨에서 새 소스를 써주면야 버그 발견할 기회도 늘어날테고 해서 좋은 걸요 :-)
-- Raymundo 2007-2-26 3:50 pm

신청 메일 보냈습니다. 그리고 감사합니다. 어흑 감격중.
-- Nyxity 2007-2-26 4:32 pm

근데 사실 걱정인게... 원래 서로 다른 인코딩 간의 컨버트를 할 때, Encode 모듈이 있으면 그걸 쓰고, 없으면 Text::Iconv 모듈을 쓰도록 되어 있습니다. 제 서버에는 Encode 만 있고, 바벨이 있는 서버에는 Text::Iconv 만 있더군요. 그래서 저걸 설치해보십사...하는 건데, 딱히 Encode 와 Text::Iconv 가 동작에 차이가 날 것 같지 않거든요.. Encode가 설치되어도 여전할 수도 있답니다.

그리고 그와 관련(제 짐작이지만)한 문제 때문에, 저 wikiutf 에 가셔서 페이지들을 보다보면 뜨다가 에러 나는 페이지들도 있습니다. 아마 존재하지 않는 한글페이지 링크가 있을때 첫 글자만 뽑아내려다가 그러는 듯 해요.
-- Raymundo 2007-2-26 5:03 pm

안녕하세요. MYCGI입니다.
사용하시는 서버의 Perl 버젼이 낮아 요청하신 모듈이 설치되지 않습니다.
원하시면 계정을 신규 서버로 이전해 드리겠습니다.
신규 서버로 이전시 기존 사용하시던 프로그램이 오작동할 수 있으며, 일시적으로 홈페이지 접속이 되지 않을 수 있습니다.
감사합니다.

라는군요. 이전해달라고 할까요?
-- Nyxity 2007-2-27 9:20 am

음, 확실한 건... Encode 모듈이 없으면 현재의 ext2 버전은 제대로 돌리기 힘들다는 겁니다. ^^; Text::Iconv 모듈은 Encode와는 좀 다르긴 하더군요.
-- Raymundo 2007-2-27 11:10 am

아무리 봐도 Encode 모듈은 필수일 듯 하네요 =.=;
-- Raymundo 2007-2-27 9:41 pm

이전 완료했습니다. 확인부탁드려요~
-- Nyxity 2007-2-27 9:57 pm

이야, 새 서버 좋네요. vi 에디터 쓰기도 훨씬 쾌적하고요 ^^ 잘 변환된 것 같으니,
* config.pl을 기존의 것 보면서 고쳐주시고 (옵션들 순서와 이름이 바뀌어서 좀 헷갈리겠습니다만)
* wiki.css는... euc-kr버전과 비교해서 끝에 항목 두 개 늘어났으니, 옮기기 어렵지 않을 것 같습니다.

근데 앞으로도 wiki.pl 소스 자체가 자주 바뀔 것 같은데다가 매번 수정내용을 제가 올리기가 벅차서, config나 css를 백업해놓고 새 버전 다운받아서 덮어쓰는 일이 잦을 것 같으니 좀 귀찮으실 것 같네요 ;-) 하긴 euc 버전에서도 꼬박꼬박 그렇게 고치셨으니 =.=;;; 이 기회에 CVS를~~
-- Raymundo 2007-2-27 11:11 pm

감사합니다.
-- Nyxity 2007-2-28 9:06 am

트랙백 스펨때문에 업그래이드를 하러 들어왔더니... tar.gz 파일 푸는 것부터 걸리는군요. 혹시 예전같이 zip파일로 올려주실 수는 없으실까요??? 파일이 계속 발전되어 어떻게 따라가야할지 난감난감합니다..
-- Redica 2007-4-1 11:08 pm

zip으로 올린 적이 있었나요? 기억이 잘... 암튼 Upload:ext2.5c.zip 입니다. 근데 등록 금지 단어 설정 기능이 있는 상태라면 그것 열심히 갱신해 주는 게 제일 나은 것 같기도... tcode 패치는 기대만큼의 효과는 없는듯 하더군요.
-- Raymundo 2007-4-2 12:05 am

Raymundo님 저 해냈어요! 하하.
지난 번 삽질을 교훈 삼아 이번엔 *.tar로 잘 묶었고 utf-8로 데이터도 변환했어요.
아직 테스트를 더 해봐야겠지만요.
-- Canday 2007-6-8 12:26 am
이름:  
Homepage:
내용:
 

위키위키분류
각주:
1. 여담으로... 데이타 디렉토리는 복사를 하면서 변환하는데, 업로드 디렉토리는 복사하지 않는 이유는? 첫째, 데이타 디렉토리를 변환하다가 도중에 잘못된 경우 되돌리기 힘들 수도 있기 때문에, 원본을 안전하게 놔두기 위해서 복사를 한다. 둘째, 업로드 디렉토리의 경우는 파일의 내용은 변환할 필요 없이 이름만 바꾸면 되는데다가, 복사를 하기에는 바이너리 파일들이 많으면 용량이 너무 커진다.

마지막 편집일: 2007-6-8 12:26 am (변경사항 [d])
1225 hits | Permalink | 변경내역 보기 [h] | 페이지 소스 보기