UseModWiki소스수정/Upgrade 페이지의 소스 보기
마지막으로 [b]
-- Loading page list... --
내용출력
로그인[l]
Diary
[f]
최근변경내역
[r]
페이지목록[i]
횡설수설[2]
게시판[3]
링크
수정할 수 없습니다: UseModWiki소스수정/Upgrade 는 읽기 전용 페이지입니다.
= ext1.* 버전을 사용하던 상태에서 ext2.* 버전으로 옮기기 =
== # 개요 == 다음 두 가지 이유 때문에, ext1.* 버전에서 ext2.* 버전으로 넘어갈 때는 데이타 디렉토리를 그대로 사용할 수 없다. * 페이지를 디스크에 저장할 때 페이지의 내용과 각종 메타 정보를 구분하는 구분자 캐릭터가 "\x7f"에서 "\x1e"로 바뀌었다. 따라서 기존 디렉토리의 파일을 읽으면 제대로 항목들을 분리해 내지 못한다. (페이지가 손상되었거나 잘못된 버전이라는 에러가 뜰 것이다) * UTF-8 인코딩을 사용하고 싶다면, 기존의 EUC-KR로 인코딩된 텍스트들을 변환해 주어야 한다. (ext2.*에서도 EUC-KR을 사용하겠다면 이 변환은 필요없다) 이 페이지에서는 ext1.* -> ext2.* 업그레이드시 데이타를 어떻게 이전할 수 있는지를 설명한다. === # 주의 === ext2 에서는 Encode, Encode::Guess 등의 Perl 5.8 이상 버전에서 제공하는 코어 모듈을 사용한다. 자신의 홈페이지가 있는 서버의 펄 버전을 확인할 것. == # 계획 == [[/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을 유지하는 경우의 내용도 언급할 것임) == # 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 }}} 이 상태에서 데이타 디렉토리와 업로드 디렉토리를 새로 만들어준다면, 새로운 위키를 하나 더 설치한 셈이 될 것이다. == # 기존 데이타 디렉토리 복사&변환 == 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 }}} 아래 스크린샷과 같은 화면이 나오면, 각 필드의 값을 적절하게 넣어준다.
Upload:wikiupgrade_1.png
* (1) - 기존 데이타가 들어 있는 /home/gildong/wikidata * (2) - 변환된 데이타가 들어갈 /home/gildong/ext2data * (3) - 기존 데이타는 EUC-KR이고, ext2에서 UTF-8를 쓰기로 했으니 "EUC-KR -> UTF-8로 변환"을 선택 ** 만일 ext2 에서도 EUC-KR로 운영할 생각이라면 이 항목은 "변환하지 않음" 선택 * (4) - ext1의 데이타를 ext2로 옮길 것이므로 "ext1.* -> ext2.* 형식으로 변환" 선택 * (5) - 입력이 다 되었으면 "복사" 버튼을 누른다. 정상적으로 처리되었다면 /home/gildong/ext2data 안에 데이타 파일들이 복사되어 있는 것을 확인할 수 있다. == # 기존에 업로드된 파일명 인코딩 변환 == (ext2에서도 EUC-KR 인코딩으로 운영할 경우는 이 섹션은 통과) restore.pl을 다시 브라우저로 불러온 후, 다음 스크린샷과 같이 필드를 채워준다.
Upload:wikiupgrade_2.png
* (1) - 업로드 디렉토리인 "/home/gildong/public_html/upload" * (2) - "EUC-KR -> UTF-8로 변환" * (3) - "변환" 버튼을 누르면 변환이 시작됨 정상적으로 수행되면, upload 디렉토리 안에 들어있는 파일들 중 파일명이 한글이 들어간 경우는 UTF-8 인코딩으로 변환된 이름으로 바뀐다.
== # 환경 설정 == === # wiki.pl 수정 === /ext2/wiki.pl 파일에서, 데이타 디렉토리의 경로를 수정해준다. {{{#!vim perl ### 보안을 위해서 데이타 저장 공간을 다른 곳으로 지정 ### 적절히 바꾸어서 사용할 것 $DataDir = "/home/gildong/ext2data"; # Main wiki directory $ConfigFile = "config.pl"; # path of config file }}} === # config.pl 수정 === /ext2/config.pl 파일을 기존의 config.pl 파일과 비교하며 고쳐준다. (ext1 버전과 비교해서 추가된 변수, 삭제된 변수, 이름이 바뀐 변수 등이 섞여 있어서 사실 좀 복잡하다 =.=;) 일단 필수적인 것 몇 개를 언급하면: {{{#!vim perl # 새로 설치한 위키 디렉토리의 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 }}} == # 확인 == 이제 브라우저로 새로 설치된 ext2 버전의 위키를 들어가 본다. {{{ http://서버.주소/~gildong/cgi-bin/ext2/wiki.pl }}} 환경설정의 나머지 변수들도 기존과 같이 설정해주고, 스타일쉬트도 옮겨줬다면 ext1.*을 쓸때와 거의 완전히 동일한 화면이 나오는 걸 확인할 수 있다. 제대로 돌아가는 걸 확인했으면 * 기존의 wiki 디렉토리를 다른 이름으로 바꾸고 (뭐 지워버려도 되겠지만, 아무래도 불안하니 백업 차원에서 남겨두자) * ext2 디렉토리의 이름을 wiki 로 바꾼 후 * config.pl 파일에 $UrlPrefix 의 값을 "http:/cgi-bin/wiki"로 바꿔주면 끝. == # 사용자 의견이나 질문 == ext2 버전 설치에서 부터 좌절. 왜 에러가 날까요. \\ http://nyxity.com/wikiutf/
http://nyxity.com/wikiutf/wiki.pl - 잘 되는데요? ^^
: 아 되는군요. :)
우 변환과정에서 멈춰버리는군요.
: 음 제가 좀 들어가서 살펴보겠습니다.
::어흑.. 이거 매번 죄송해서.
일단... 기존 데이타 디렉토리에, 제목이 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"는 지운 상태에서) 이걸 다시 가져가서 복사해 보겠습니다.
:으아... 이거이거 일이 커진것 같아서 너무 죄송하군요.
데이타 변환은 제대로 된 것 같은데, 페이지 인덱스 화면 보면 TOC에 한글 부분이 안나오고, 한글 페이지들이 제대로 분류가 안 되는군요. "UNICODE" 인코딩된 스트링 처리가 잘 안 되는 것 같습니다. \\ \\ 업체에, 다음 펄 모듈을 설치해달라고 부탁해보세요. 효과가 있을지는 모르겠습니다만.. \\ * Encode \\ * Encode::Guess
그리고 죄송해하실 필요 없습니다. 바벨에서 새 소스를 써주면야 버그 발견할 기회도 늘어날테고 해서 좋은 걸요 :-)
:신청 메일 보냈습니다. 그리고 감사합니다. 어흑 감격중.
근데 사실 걱정인게... 원래 서로 다른 인코딩 간의 컨버트를 할 때, Encode 모듈이 있으면 그걸 쓰고, 없으면 Text::Iconv 모듈을 쓰도록 되어 있습니다. 제 서버에는 Encode 만 있고, 바벨이 있는 서버에는 Text::Iconv 만 있더군요. 그래서 저걸 설치해보십사...하는 건데, 딱히 Encode 와 Text::Iconv 가 동작에 차이가 날 것 같지 않거든요.. Encode가 설치되어도 여전할 수도 있답니다. \\ \\ 그리고 그와 관련(제 짐작이지만)한 문제 때문에, 저 wikiutf 에 가셔서 페이지들을 보다보면 뜨다가 에러 나는 페이지들도 있습니다. 아마 존재하지 않는 한글페이지 링크가 있을때 첫 글자만 뽑아내려다가 그러는 듯 해요.
안녕하세요. MYCGI입니다. \\ 사용하시는 서버의 Perl 버젼이 낮아 요청하신 모듈이 설치되지 않습니다. \\ 원하시면 계정을 신규 서버로 이전해 드리겠습니다. \\ 신규 서버로 이전시 기존 사용하시던 프로그램이 오작동할 수 있으며, 일시적으로 홈페이지 접속이 되지 않을 수 있습니다. \\ 감사합니다. \\ \\ 라는군요. 이전해달라고 할까요?
: 음, 확실한 건... Encode 모듈이 없으면 현재의 ext2 버전은 제대로 돌리기 힘들다는 겁니다. ^^; Text::Iconv 모듈은 Encode와는 좀 다르긴 하더군요.
: 아무리 봐도 Encode 모듈은 필수일 듯 하네요 =.=;
이전 완료했습니다. 확인부탁드려요~
: 이야, 새 서버 좋네요. vi 에디터 쓰기도 훨씬 쾌적하고요 ^^ 잘 변환된 것 같으니, \\ * config.pl을 기존의 것 보면서 고쳐주시고 (옵션들 순서와 이름이 바뀌어서 좀 헷갈리겠습니다만) \\ * wiki.css는... euc-kr버전과 비교해서 끝에 항목 두 개 늘어났으니, 옮기기 어렵지 않을 것 같습니다. \\ \\ 근데 앞으로도 wiki.pl 소스 자체가 자주 바뀔 것 같은데다가 매번 수정내용을 제가 올리기가 벅차서, config나 css를 백업해놓고 새 버전 다운받아서 덮어쓰는 일이 잦을 것 같으니 좀 귀찮으실 것 같네요 ;-) 하긴 euc 버전에서도 꼬박꼬박 그렇게 고치셨으니 =.=;;; 이 기회에 [[CVS]]를~~
:::감사합니다.
트랙백 스펨때문에 업그래이드를 하러 들어왔더니... tar.gz 파일 푸는 것부터 걸리는군요. 혹시 예전같이 zip파일로 올려주실 수는 없으실까요??? 파일이 계속 발전되어 어떻게 따라가야할지 난감난감합니다..
: zip으로 올린 적이 있었나요? 기억이 잘... 암튼 Upload:ext2.5c.zip 입니다. 근데 등록 금지 단어 설정 기능이 있는 상태라면 그것 열심히 갱신해 주는 게 제일 나은 것 같기도... tcode 패치는 기대만큼의 효과는 없는듯 하더군요.
Raymundo님 저 해냈어요! 하하. \\ 지난 번 삽질을 교훈 삼아 이번엔 *.tar로 잘 묶었고 utf-8로 데이터도 변환했어요. \\ 아직 테스트를 더 해봐야겠지만요.
---- [[위키위키분류]]
UseModWiki소스수정/Upgrade
페이지로 돌아가기 |
다른 수정본 보기