/Installation의 내용처럼, ext1 버전이 아래와 같이 위키 설치, 페이지 데이타, 업로드 디렉토리를 구성한 상태라고 가정하자.
/home/gildong/public_html/cgi-bin/wiki/ - UseModWiki 를 설치할 디렉토리
/home/gildong/wikidata - UseModWiki 데이타가 들어갈 디렉토리 (public_html 밖으로 빼내는 것을 권장)
/home/gildong/public_html/upload - 업로드한 화일이 들어갈 디렉토리
(public_html 아래에 있어야 함. 위의 데이타 디렉토리와는 따로 둘 것)
우리가 앞으로 해야 할 일은,
ext2.* 버전의 위키를 다른 이름으로 설치하고
기존 데이타를 복사,변환하여 ext2 버전 용으로 옮기고
ext1.* 버전이 있는 wiki 디렉토리를 다른 이름으로 바꾸고, ext2.* 버전의 위키를 wiki 디렉토리로 옮겨서 바꿔치기하는 것이다.
편의상, 다음과 같이 임시로 구성한 디렉토리에 ext2.* 버전을 설치하기로 하자.
/home/gildong/public_html/cgi-bin/ext2/ - UseModWiki 를 설치할 디렉토리
/home/gildong/ext2data - UseModWiki 데이타가 들어갈 디렉토리
/home/gildong/public_html/upload - 업로드한 화일이 들어갈 디렉토리 <-- 이건 바뀌지 않는다
또한, ext2.* 버전에서는 "UTF-8" 인코딩을 사용하는 걸로 하자. (EUC-KR을 유지하는 경우의 내용도 언급할 것임)
/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
이 상태에서 데이타 디렉토리와 업로드 디렉토리를 새로 만들어준다면, 새로운 위키를 하나 더 설치한 셈이 될 것이다.
### 보안을 위해서 데이타 저장 공간을 다른 곳으로 지정### 적절히 바꾸어서 사용할 것$DataDir = "/home/gildong/ext2data"; # Main wiki directory$ConfigFile = "config.pl"; # path of config file
/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
일단... 기존 데이타 디렉토리에, 제목이 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"는 지운 상태에서) 이걸 다시 가져가서 복사해 보겠습니다.
근데 사실 걱정인게... 원래 서로 다른 인코딩 간의 컨버트를 할 때, Encode 모듈이 있으면 그걸 쓰고, 없으면 Text::Iconv 모듈을 쓰도록 되어 있습니다. 제 서버에는 Encode 만 있고, 바벨이 있는 서버에는 Text::Iconv 만 있더군요. 그래서 저걸 설치해보십사...하는 건데, 딱히 Encode 와 Text::Iconv 가 동작에 차이가 날 것 같지 않거든요.. Encode가 설치되어도 여전할 수도 있답니다.
그리고 그와 관련(제 짐작이지만)한 문제 때문에, 저 wikiutf 에 가셔서 페이지들을 보다보면 뜨다가 에러 나는 페이지들도 있습니다. 아마 존재하지 않는 한글페이지 링크가 있을때 첫 글자만 뽑아내려다가 그러는 듯 해요.
안녕하세요. MYCGI입니다.
사용하시는 서버의 Perl 버젼이 낮아 요청하신 모듈이 설치되지 않습니다.
원하시면 계정을 신규 서버로 이전해 드리겠습니다.
신규 서버로 이전시 기존 사용하시던 프로그램이 오작동할 수 있으며, 일시적으로 홈페이지 접속이 되지 않을 수 있습니다.
감사합니다.
이야, 새 서버 좋네요. vi 에디터 쓰기도 훨씬 쾌적하고요 ^^ 잘 변환된 것 같으니,
* config.pl을 기존의 것 보면서 고쳐주시고 (옵션들 순서와 이름이 바뀌어서 좀 헷갈리겠습니다만)
* wiki.css는... euc-kr버전과 비교해서 끝에 항목 두 개 늘어났으니, 옮기기 어렵지 않을 것 같습니다.
근데 앞으로도 wiki.pl 소스 자체가 자주 바뀔 것 같은데다가 매번 수정내용을 제가 올리기가 벅차서, config나 css를 백업해놓고 새 버전 다운받아서 덮어쓰는 일이 잦을 것 같으니 좀 귀찮으실 것 같네요 ;-) 하긴 euc 버전에서도 꼬박꼬박 그렇게 고치셨으니 =.=;;; 이 기회에 CVS를~~
각주: 1. 여담으로... 데이타 디렉토리는 복사를 하면서 변환하는데, 업로드 디렉토리는 복사하지 않는 이유는? 첫째, 데이타 디렉토리를 변환하다가 도중에 잘못된 경우 되돌리기 힘들 수도 있기 때문에, 원본을 안전하게 놔두기 위해서 복사를 한다. 둘째, 업로드 디렉토리의 경우는 파일의 내용은 변환할 필요 없이 이름만 바꾸면 되는데다가, 복사를 하기에는 바이너리 파일들이 많으면 용량이 너무 커진다.