노스모크모인모인/질문답변

FrontPage|FindPage|TitleIndex|RecentChanges| UserPreferences U P RSS
노스모크모인모인에 대한 질문/답변. 말미추가방식으로 질문을 남겨주세요.

정리된 질문은 노스모크모인모인/FAQ에 문서화한다.

Q : InterMap을 사용할 경우 한글과 같은 ExtendedWikiName은 안됩니다. 어떻게 해야 하나요?

A : IE 브라우저의 UTF-8 번역을 꺼주시면 됩니다.


Q : 그림파일도 제대로 뜨지 않고, CSS도 적용되지 않습니다.

A : 설정 파일인 moin_config.py 에서 url_prefix 를 제대로 설정해주셔야 합니다. 특히 '/wiki' 과 '/~id/wiki' 의 차이를 주의하세요.

A1 : 만약 그래도 안된다면 url_prefix 에 풀URL을 적어보세요. http://yourdomainname/~id/wiki처럼.



Q: css 문제

위키를 여러개로 나눠서 쓰고 있습니다. default.css를 수정하려고 하는데 각각의 위키에서는 수정하더라도 적용이 되지 않고 메인 위키에서 수정했을 때만 하부 위키에까지 적용이 됩니다. 이걸 각각의 위키가 다른 default.css를 갖게 만들 수 없나요?

moin_config.py 에서 css_url 의 값을 변경. 이런 식으로 바꿔보세요. css_url = '/wiki/default.css' 그리고 다른쪽에선 css_url = '/moin/deafult.css' 디렉토리는 자기 상황에 맞게.


Q : http://www.iriom.net/wiki/moin.cgi/FindPage?=&goto=UploadFile 같은 경우에 화면의 바닥 부분이 깨져서 나올때의 해결책은?

A : /MoinMoin/macro/UploadedFiles.py 에서 locale을 POSIX로 바꾸어 줍니다.


Q: cvs개발 버전을 받았는데요. AttentionPages 페이지가 에러가 나네요. http://ius.incheon.ac.kr/~dinga/nsmk/moin.cgi/AttentionPages


A: AttentionPages.py 에서 import 할때 from MoinMoin import user, config, wikiutil, pagedb 처럼 pagedb 추가.그리고 29번째 줄의 l.append((os.path.getmtime(page.pagedb._text_filename()), page))l.append( ( os.path.getmtime(pagedb.getPageDbConnection()._text_filename(page)), page) ) 으로 바꾼다.


Q : 베타버젼 다운받는 방법으로 나와있는 cvs... 하는 부분 무슨 뜻일까요? 전 그게 경로수정하는 과정이고 아래 안정버젼...하는 부분이 베타버젼 다운받는 건 줄 알았습니다.

A : CVS 를 이용해 개발자 버전(베타버전)을 다운 받는 방법에 대한 얘기입니다. 경로 수정에 대한 얘기는 노스모크모인모인/설치 페이지를 참고하시구요. CVS를 모르신다면 안정 버전을 쓰는 것으로도 충분하실 것입니다.



Q :계정이 /home/leedw 이고 노스모크모인모인은 /home/leedw/public_html/wikiwiki에 설치하였습니다. MoinMoin 은 /home/leedw/public_html/MoinMoin에 있지요. moin.cgi를 sys.path.append('/home/leedw/public_html') 로 수정했고 moin_config.py에서 url_prefix를 고쳤는데도 서버의 홈페이지가 있는 /usr/local/apache/htdocs 다음에 엉뚱하게 저의 계정 디렉토리가 뒤에 붙여져서 이미지 파일을 찾고 있습니다. 이걸 어떻게 해결해야 할지...

A : url_prefix 는 URL입니다. wiki 디렉토리이죠. 웹에서 보이는. http://test.com/wikiwiki 이런식이 되야만 하죠.


Q : 노스모크모인모인을 서버의 계정에 설치하는 것을 결국 실패했습니다. 기존에 설치한 MoinMoin버전 1.6과 자꾸 충돌이 나는군요. MoinMoin을 노스모크용 MoinMoin을 찾아가야하는데 1.6으로 설치한 MoinMoin으로 찾아가는군요. 그래서 어쩔 수 없이 기존에 사용하는 MoinMoin을 사용하는데 노스모크모인모인에만 있는 '자동개행'기능이 너무나 탐이나네요. 혹시 오리지널 모인모인에서 어떻게 고쳐야 자동개행기능을 넣을 수 있는지 알 수 있나요.

A #1 : [http]여기 참고하세요.
A #2 : moin.cgi에 패스를 다음과 같이 합니다. sys.path.insert(0, '/home/ 어쩌고 자신이 설치한 MoinMoin이 있는 디렉토리')


Q : 설치을 다하고 실행하니까 501 에러가 나네요.. --a 그래서 쉘에서 실행해 봤는데.. spam 이라고 뜨네요.. Oo 처음에눈 Moin 홈에서 받은 것을 설치를 완료하고 실행까지 시켰습니다.. 그런데 Moin 은 행을 나누지 않더라구요.. 쭈우욱 붙여서 나오던데.. 그래서 No-Moin은 행을 나누잖아요.. 그래서 설치하려고 했는데.. spam 이라는 글자만.. --a ㅠㅠ 왜 spam 이라는 글이 나오죠..?? 흑.. 그냥 적용할 수 있게 행절단하는 구문을 가르쳐 주실 수는 없는지요.. 능력 부족으로 소스 봐도 모르겠어요.. --Cult
A : 다른건 몰라도 spam이라는것은 성공적으로 실행되었다는 소리구요. 문제 없이 실행가능하다는 이야기 입니다. 물론 그렇다고 해서 웹브라우저로 보는건 또 다른 문제를 찾아낼수도 있습니다만. 501 Not Implemented Error (혹은 Not Supported Error)에러의 경우는 시스템에서 CGI실행을 불가능하도록 차단한경우입니다. 확장자에따른 설정을 의심해볼수도 있구요. -- ziozzang
저도 spam 이라고만 뜨네요. 브라우저에서는 500 에러가 뜨고요... 도대체 어떻게 된 걸까요? --인클루드
한참 후에 방법을 찾았습니다. data 디렉토리의 퍼미션을 바꾸지 않은게 문제였습니다. -_- --인클루드



Q : 제 위키에서는 ABookOnC와 같은 페이지 이름이 ABookOn C와 같이 됩니다. 연속되는 대문자가 있으면 페이지이름이 이상해지는데요. 어떻게 해결해야 하나요??
A : [ABookOnC]로 쓰세요 :) -- 최종욱

DeleteMe ABookOnC는 현재 노스모크에서는 그냥 링크됩니다. 노스모크모인모인에 반영이 안되어 있나 보군요.


Q : 노스모크 모인모인을 계정에 깔았는데, 없는 페이지를 검색하면 화면 아래쪽에 꼭 os에러라고 나오네요. (이것만으로 이유를 알려주시긴 힘들겠네요; )
노스모크 모인모인에 회원 권한설정이나 페이지 사용 권한 설정같은건 없나요? 노스모크모인모인 운영 가이드같은 것은 어디 없나요;? --kidfriend

A : config.py 를 잘 연구하셔서 moin_config.py 에 (read_requires_login , access_requires_login , edit_requires_login , root_name 등) 세팅하세요 B) 운영가이드는 딱히 정리되진 않았지만, 노스모크모인모인관련 페이지들(LikePage 하면 좍 나옵니다)에 많은 정보가 있습니다.

아무개도 같은 문제가 있었는데, caching.py 파일의 51번 줄을 "except IOError: 에서 except:"로 바꾸어줬더니 해결되었습니다. --아무개

감사합니다. :) 저는 cgimain.py파일의 171~175까지 전부 주석 처리해서 해결했는데, 간단한 방법이 있었군요. 근데 혹시 이유를 아시는지 ? --kidfriend


Q : 모인모인 1.0을 받아서, 한글 설정을 하고 charset을 euc-kr 로 변경하였더니, RecentChanges에서 "rss" 버튼을 누르면 "LookupError:unknown encoding"이라는 에러가 발생합니다. 저같은 질문은 아무데도 없는 것 같은데.. 저만 이런가요? --;;;

A

Q Mozilla 를 사용하는 Sequoia 는 alt-x 를 누르니까 에디트 화면으로 오는군요. alt-z 를 누르니까 역링크검색이..... 이거 뭘로 세팅되어있는거죠? -_- 상당히 유용하긴 한데..

A <a accesskey="x" ...>라고 하면 됩니다.

Q usemodwiki는 raw html을 사용하는 것이 가능하던데요, 노스모크모인모인도 사용이 가능한가요? 위의 소스 받아서 설치하니 일단은 안되던데요, 설정을 통해서 사용이 가능한것인가요? --뱅기

A.1 매크로를 사용하는 방법과, html파서를 설치하는 방법이 있을 수 있습니다.
A.2 모인모인+노스모크모인모인을 고집하신다면 인모인SisterWiki버전 혹은 모인모인문법을 지원하는 PhpLanguage기반의 MoniWiki를 쓰세요.


Q 노스모크모인모인을 받아서 제 홈페이지에 깔았는데, '아햏햏'이라고 쓰면 제대로 나오지 않고 아햏햏이라고 나오네요. 여기 노스모크에서는 '아햏햏'도 잘 나오는데요. 해결책이 없을까요? -- 아무개
A1. moin_config.py 에서 charset인 euc-kr을 빼버리십시오.
A2. 노스모크계정관리자/문제해결요청 페이지를 참고하여 소스코드를 수정하십시오.
charset='euc-kr'을 다 빼니까 이상해지네요. euc-kr만 빼서, charset=''이렇게 만드세요. 답변 감사합니다.-- 질문했던 그 아무개

Q : moinmoin 1.0을 사용하고 있는 유저입니다. 악의적인 사용자에 의해 AttachFile로 올려진 그림 및 파일들이 모두 delete되어 있습니다. 모인모인의 페이지는 보통 백업이 되어있던데 AttachFIle로 올려진 파일들도 혹시 백업이 되는지요. 저에겐 소중한 파일들이라 꼭 복구하고 싶은데 알려주시기 바랍니다.
복구 안됩니다. 노스모크모인모인도 비슷하게 마찬가지 업로드된 파일은 덮어써지면 지우는 효과와 비슷하게 됩니다. 모인모인 1.1에서는 백업을 남겨놓는다고 본 기억이 나네요.
네.. 그렇군요. 그렇다면 한가지 질문, 일반사용자가 AttachFile을 못하도록 moin_config.py 내에서 다음 문장,

if 1:
    allow_actions = ['DeletePage', 'AttachFile']
에서 if 1if 0로 바꾸었습니다. 그랬더니 기존에 AttachFile로 올려진 그림파일이나 기타 파일들이 화면에 보이지 않거나 클릭했을 때 알 수 없는 액션이라는 에러가 발생합니다. DeletePageAttachFile을 허락하지 않으면서 기존에 AttachFile에 의해 올려진 파일들을 서비스 할 수 있는 방법은 없는지요?


Q : 윈도우 2003 서버에서 IIS 6을 이용하여 노스모크모인모인 안정버전을 돌리고 있습니다. 여기에 있는 글들을 참고하여 대부분의 세팅을 끝냈는데 Diff가 작동하지 않는 문제는 잘 몰라서 이렇게 질문을 드립니다. GNU의 win32용 유틸들은 전부 설치했고 패스가 제대로 잡혀있는지도 확인했고 콘솔 상에서 실행도 잘 되었습니다. 그런데 이상하게도 Diff가 작동하지 않더군요. 에러 메세지는 WikiAction.py에서 Diff를 실행하는 부분에서 프로세스 생성 에러라는 메세지가 나옵니다. 구체적인 이름은 hex코드로 나와서 아직 확인하지 못했구요. 제 생각에는 Diff.exe의 실행 권한 때문에 발생하는 문제인데 같은데 IIS를 사용하시는 다른 분들은 이 문제를 어떻게 해결했는지 알고 싶습니다.

A : 자답입니다. 결국 실행권한 설정 하는 방법을 포기하고 Seminar:NewDiff에 있는 모듈을 이용해서 해결했습니다. 제 생각에 IIS6IIS5와 다른데다가 기본 보안 상태가 높아서 그런가 봅니다. -dark


Q : data의 경로등을 설정하는 파일이 무엇인지 모르겠습니다. cgimain.py라고 아는데 어디서 설정을 해야하는지 알 수 없습니다. wiki/data를 public_html/data로 옮기니 작동은 어느정도 제대로 되는듯 보이게 되는데 (아직 테스트중) 경로 설정하는 방법을 알고 싶습니다.

설정파일은 cgimain.py 가 아니라 moin_config.py 입니다.


답변을 기다리는 질문들


  1. 하부위키에 업로드된 파일을 UploadFile의 목록에서 바로 클릭하면 파일을 찾을 수 없다고 나옵니다. 하부위키의 [[UploadFile(업로드 하기)]]의 링크를 메인위키에서 하부위키로 변경하려고 하는데 어떻게 해야 하나요?

  2. 노스모크 모인모인의 개발 초기에 MySQL 과 같은 데이터베이스를 지원한다는 소리를 들었던거 같은데, 현재로서는 지원하지 않나요? 만약 아직 지원하지 않는다면 앞으로의 계획이 있는지 궁금합니다.
    DeleteMe 지원하지 않고, 아마 지원예정도 없을 듯.


  3. 노스모크모인모인을 설치했습니다. 페이지별 레벨별 r,w 설정이 가능하다고 보았는데요, 설정을 찾기가 쉽지 않네요. 어디에서 바꿀 수 있을까요? 개인위키에서페이지수정권한을 보면 아직 개발중인 기능에 들어가 있는 것 같기도 합니다만;
    자문자답 - 임시방편으로, 가입할 때 가입암호를 입력하도록 했습니다. (+로긴하지 않으면 기능이 막히도록) 별로 좋은 방법은 아니지만 -_-;


  4. 어디선가 모인모인 페이지 파일이름을 _b3_eb_bd_ba.... 등등의 16진수 코드가 아닌, 한글 이름으로 저장할 수 있도록 수정한 기능을 설명해준 페이지가 있었습니다. 정확히는 노스모크에 있는 페이지가 아니었는데 노스모크에서 링크를 타고가다가 발견한 내용이었지요. 그래서 제 개인 위키위키에 적용시키려고 생각하고 있었는데 다시 찾아보려고 하니 도저히 못찾겠네요. 혹시 그 수정내용을 설명하는 페이지를 알고 계신 분 있으면 알려주세요.
    페이지 이름에 들어가면 안되는 특수 문자 / .를 잘 처리하는 방법이 없는건 아닙니다만, 지협적인 패치라서 장려할만한게 아닙니다. 오히려, UTF8등등의 다른 인코딩과 공존하는 데는 모인모인의 페이지 이름 인코딩 방법(_b3_eb...)이 더 편리하더군요.
    윈도우즈에서 팔진수로 된 파일이름들을 한글로 바꾸는거 만들어서 올립니다. 필요하면 도움이 되기를. Upload:hex2string.zip

  5. 노스모크모인모인 안정버전을 다운받아서 설치했는데욤, moin_config.py에 있는 navigation bar(navi_bar)때문에 화면이 깨져버려요. 그래서 navi_bar세팅을 빼면 잘 동작하던데...왜 이렇게 될까요? 그리고 navi_bar은 어떤 역할을 하는 건가요?
    인덱스 | 도움말 | 찾기 | 대문 | 바뀐글 | __ | GO 부분을 나타냅니다.

  6. 노스모크 모인모인 안정버전을 파이썬 2.1에서 잘 돌리구 있었는데, 파이썬 2.2에서 에러가 마구마구 나네요.. 임시방편으로 Moin.cgi의 첫부분을 python2.1로 해서 돌리구 있지만, 2.2에서는 안되는건가요??
    파이썬 2.2에서 === 가 들어간 경우에 문제가 생기는 경우가 있습니다. 이 경우라면, 윗부분의 Q&A에 답이 있습니다.

  7. FastCgi를 사용해 노스모크모인모인을 돌리려합니다. 아파치에 mod_fastcgi는 설치했습니다. 그럼 이걸로 FastCgi를 이용하여 노스모크모인모인을 사용하고 있는건가요? 아니면 노스모크모인모인에서 다른 설정을 해야하나요?

  8. 노스모크 모인모인을 설치했습니다. 그런데요.. http://myhome.net(가상홈)/wiki/data/user/userlist 치면 사용자 정보가 다 나와버리는데 이거 원래 그런가요? 숨기는 방법없나요?
    노스모크모인모인/제안페이지를 참고하세요. data 디렉토리는 자신의 홈디렉토리 밑에 두도록 고칠 수 있습니다. public_html(혹은 여기에 준하는)에 있는 data디렉토리를 옮기세요
    답변감사합니다. 근데 제가 사용하는 계정은 /home/아이디/ 가 웹루트로 설정이 되어있어서 그 방법을 사용할 수 가 없을 거 같애요.. 또 다른 방법은 없을까요?
    미봉책이지만, data 디렉토리의 이름을 짐작해서 알아낼 수 없는 경로로 바꾸면 되지 않을까요? /home/아이디/myData/security/datum 같은 식으로.
    아파치를 쓸 경우라면 .htaccess를 설정해 주는 것으로 됩니다.

  9. 노스모크모인모인을 설치하고나서 잘 사용하고 있습니다. 그런데 어떤 이유에서인지 몰라도.. 그전에는 잘 작동하던 diff기능이 어느날부터 되지를 않습니다. 왜 그런걸까요?
    서버운영자가 diff의 퍼미션을 막은게 아닐까요?
    때로 서버 설정에 따라 diff 사용이 잘 안되는 경우가 있더군요. cafe24 의 여러 서버에서 관찰되곤 했는데, 쉘에서 which diff 로 diff 의 경로를 알아낸 다음, cgimain.py , wikiactions.py의 해당 부분에 직접 경로를 써넣으면 해결되곤 했습니다.


  10. 얼마전까지 잘 작동하던 노스모크모인모인BookMark 업데이트가 안됩니다. 새로 설치도 해봤는데 여전하네요.
  11. 페이지 주소의 끝에 action=print&value=notitle 를 삽입해서 대문페이지를 노스모크와 비슷한 형태로 만들려고 합니다만, value=notitle 옵션이 안먹는것 같습니다. 페이지의 제목이 상단에 나와버리네요. 해결방법이 없는지요?

  12. 노스모크모인모인을 사용하고 있습니다. 색안경을 노스모크에 나오는 것처럼 하고 싶은데, 어떻게 하면 되는지 알고 싶습니다.
    see Seminar:NewDiff
    모인모인 1.0 에서는 어떻게 하면 되는지요. --DaNew

  13. 노스모크모인모인을 사용하고 있으며, Python-2.2.1 을 사용하고 있습니다만, OrphanedPages 매크로가 제대로 작동되지 않습니다. 페이지링크가 없는 페이지만 출력되어야 함에도 불구하고, 현재 존재하는 모든 페이지 리스트들이 출력되어 버립니다. 해결책좀 부탁드립니다.
    제 기억에, 이 문제는 다른 문제로, 해결 되었던 것으로 기억합니다. 제 기억이 맞다면 지워주세요. --최종욱

  14. apache2.X에 노스모크 모인을 설치했는데, "대문', "도움말" 페이지의 하단부 에서 python 에러가 발생합니다. (python에러종류:AttributeError)
    "제목", "찾기", "바뀐글"페이지는 정상입니다.
    에러위치
  15. {{| /MSSNGR/web/apache/htdocs/MoinMoin/parser/wiki.py in replace(self=<MoinMoin.parser.wiki.Parser instance>, match=<_sre.SRE_Match object>)
    416 line return apply(getattr(self, '_' + type + '_repl'), (hit,)) |}}
    ===> 다음과 같은 문장표시가 있으니깐 그런 에러가 나는것을 확인했습니다. ""== 내용 =="
    "== 내용 ==" 을 " 내용 " 같이 다른 것으로 바꾸어주면 에러는 안나는데, 버그인가요?..

    페이지 윗 부분에 Q: '====' 를 페이지에 조금이라도 사용하면 에러가 나더군요. 저것들이 하나라도 없는 페이지는 잘 보여지는데, '='든 '==' 든 하나라도 있으면 파싱에 문제가 생기는듯합니다. 라는 제목의 질문을 참고하세요.

  16. 노스모크모인모인에는 방문자수를 셀 수 있는 카운터 기능은 없나요? --RedPain
    현재는 없습니다. --희상
    그냥 만들었습니다. ㅎㅎ 덕분에 파이썬공부을 하게 됐군요. _ --RedPain

    카운터 기능이 있다면, 페이지 뷰가 많거나 적은 페이지를 알 수 있게 되며, 페이지온도개념에도 적용시킬 수 있게 됩니다. :) --아무개

  17. === [ABookOnC] ===와 같이 쓴다음에 [[TableOfContents]]의 매크로를 쓰게 되면 가 그대로 보이게 되는데... 임시방편(?)말고 방법이 없나요?? B)
    노스모크모인모인모인모인에서 지원되지 않습니다.

  18. 노스모크모인모인에는 syntax highlighting 기능은 없나요??
    python 코드에 대해 하이라이팅이 가능합니다.


  19. FullTextSearch를 하면, IO Error가 뜹니다. 페이지이름검색은 잘되는데, 유독 이 기능만 동작하지 않네요. 에러메시지는 다음과 같습니다

   IOError
   /home/hosting_users/nmind/www/wiki/MoinMoin/cgimain.py in run(_cgiform=<class cgi.FieldStorage>) 
   /home/hosting_users/nmind/www/wiki/MoinMoin/wikiaction.py in do_fullsearch(pagename='FindPage', form=FieldStorage(None, None, [MiniFieldStorage('acti..., 'FindPage'), MiniFieldStorage('literal', '1')])) 
   /home/hosting_users/nmind/www/wiki/MoinMoin/wikiutil.py in searchPages(needle='FindPage', **kw={'context': 0, 'literal': True}) 
   /home/hosting_users/nmind/www/wiki/MoinMoin/Page.py in get_raw_body(self=<MoinMoin.Page.Page instance>)
   IOError: [Errno 21] Is a directory
      __doc__ = 'I/O operation failed.' 
      __getitem__ = <bound method IOError.__getitem__ of <exceptions.IOError instance at 0x401e2d6c>> 
      __init__ = <bound method IOError.__init__ of <exceptions.IOError instance at 0x401e2d6c>> 
      __module__ = 'exceptions' 
      __str__ = <bound method IOError.__str__ of <exceptions.IOError instance at 0x401e2d6c>> 
      args = (21, 'Is a directory') 
      errno = 21 
      filename = None 
      strerror = 'Is a directory' 
무엇이 잘못된것인지 잘 모르겠네요. 도움말씀 부탁드립니다. -- 졸린웅이
오류 메시지만 보면 data디렉토리 아래에 일반 파일이 아닌 디렉토리가 있어서 생기는 문제 같은데요? -_-a


Q 설치시 문제

알려주신 데로.. webapi/init.py 의 내용 수정했구요..
httpd.conf 파일의 'AddHandler cgi-script .cgi' 줄 주석처리 되어있는것도 풀었습니다.
그리고, 아파치 설정에서 (물리적인)path를 /var/www/html/으로 잡아놔서
가상 path는 http://localhost/moin/으로 사용하도록 했습니다.

설치 시 웹페이지에서 아래의 내용만 나오고 진전이 없습니다.
뭐가 문젤까~~요?

/home/alex/python -O

"""
    MoinMoin - CGI Driver Script

    Copyright (c) 2000 by J&uuml;rgen Hermann <jh@web.de>
    All rights reserved, see COPYING for details.

    $Id: moin.cgi,v 1.83 2000/11/07 20:43:05 jhermann Exp $
"""

import sys
sys.path.append('/var/www/html/moin/')
from MoinMoin import cgimain
cgimain.run()

/home/alex/python -O
이 부분이
{{#!/home/alex/python -O
}}}
이어야할 것 같군요.

A. 쉘에서 ./moin.cgi로 했을 때도 실행이 되어야 합니다(그러면 아마도, spam이라는 문자열만 찍힐 듯. Front Page가 출력되는 경우도 있음).

Q. 말씀해주신데로.. python의 설치된 위치와 moin.cgi 부분을 수정했습니다. 긍뎅... 계속 해봐도(?) 같은 현상입니다.
그러면, 제가 생각했을때 근본적인 문제로 제 linux의 cgi 부분이 실행이 되지않거나 python이 제대로 설치가 되지 않은건 아닐까라는 생각이 드는데
확인하는 방법이 있나요? 특히나 cgi 관련 부분에 대해서 설치하고 설치 후 구동되는지 확인하는 방법을 부탁드려봅니다. -alex

A. 다음과 같이 test.cgi를 만들고 실행 퍼미션을 준 다음에 쉘에서도 실행해보고, 웹브라우저로도 확인해보십시오. 첫 줄의 #!부분은 자신의 파이썬 경로에 맞게 수정하셔야합니다.
#!/usr/local/python-2.2.1/bin/python -O

print 'Content-Type: text/html'
print

print 'This is test'

Q. 이궁.. 첨부터 linux 쪽으로는 초보라고 말씀을 드렸으면 좀더 자세히 말씀해주셨을텐데.. 쩝. ^^
좀 더 구체적으로 cgi가 구동되도록 하기 위해선 어떻게 해야하는건지 설명 부탁드립니다.
어디에다가 test.cgi를 두고 테스트를 해야하는것인가요?
다른 곳에서 보니 cgi를 구동시키기 위해서는 httpd.conf 화일의 ScriptAlias에서 폴더 및 위치를 셋팅하고
option에서 Indexes FolloSymLinks ExecCGI로 하라고 나와있어서 바꾸었습니다.
그리하였더니 http://localhost/moin/moin.cgi를 하면.. 승인되지않았다는 메시지가 뜨네요.
이경우 cgi가 실행이 되지 않는것 같은데.. 당체.. 답답함이 이루말할수가 없네요 T.T
(OS는 Redhat 9를 사용하고있습니다만, 기존에 cgi가 설치가 되었는지 부터가 의심스러워지네요..)
아, 그리고 권한은 어떻게 주는지도 부탁드립니다.
귀찮으시겠지만 답변 부탁드리겠습니다.

A. 일단은 moin.cgi 있는 곳에 test.cgi를 두십시오. 어쩌면 test.cgi가 이미 있을 수도 있는데, 미리 확인하시고 이미 있으면 다른 위치에 두십시오. 위치는 크게 중요하지 않습니다. 웹으로 접속 가능한 주소라면 됩니다. 권한을 주는 것은 chmod +x test.cgi를 하면 됩니다. (CGI는 PHP와 달리 인터페이스를 말하는 것이기 때문에 웹서버에서 CGI 허용가능한 설정만 해주면 되는 것이기 때문에 따로 설치하는 것은 없습니다. )

그런데, /home/alex/python 에는 파이썬을 직접 설치하신 건가요? 다시 말해, 쉘에서 /home/alex/python라고 입력하면 파이썬 인터랙티브 쉘이 실행되나요?

Q.아래 부분은 제가 텔넷에 접속하여서 python -v를 치고 난 결과입니다.
아래의 결과가 제대로 python이 설치가 된건가요? 그리고 경로도 맞는건가요?
[root@devmaster moin]# python -v

# /usr/lib/python2.2/site.pyc matches /usr/lib/python2.2/site.py
import site # precompiled from /usr/lib/python2.2/site.pyc
# /usr/lib/python2.2/os.pyc matches /usr/lib/python2.2/os.py
import os # precompiled from /usr/lib/python2.2/os.pyc
import posix # builtin
# /usr/lib/python2.2/posixpath.pyc matches /usr/lib/python2.2/posixpath.py
import posixpath # precompiled from /usr/lib/python2.2/posixpath.pyc
# /usr/lib/python2.2/stat.pyc matches /usr/lib/python2.2/stat.py
import stat # precompiled from /usr/lib/python2.2/stat.pyc
# /usr/lib/python2.2/UserDict.pyc matches /usr/lib/python2.2/UserDict.py
import UserDict # precompiled from /usr/lib/python2.2/UserDict.pyc
# /usr/lib/python2.2/copy_reg.pyc matches /usr/lib/python2.2/copy_reg.py
import copy_reg # precompiled from /usr/lib/python2.2/copy_reg.pyc
# /usr/lib/python2.2/types.pyc matches /usr/lib/python2.2/types.py
import types # precompiled from /usr/lib/python2.2/types.pyc
# /usr/lib/python2.2/__future__.pyc matches /usr/lib/python2.2/__future__.py
import __future__ # precompiled from /usr/lib/python2.2/__future__.pyc
import japanese # directory /usr/lib/python2.2/lib-dynload/japanese
# /usr/lib/python2.2/lib-dynload/japanese/__init__.pyc matches /usr/lib/python2.2/lib-dynload/japanese/__init__.py
import japanese # precompiled from /usr/lib/python2.2/lib-dynload/japanese/__init__.pyc
import japanese.aliases # directory /usr/lib/python2.2/lib-dynload/japanese/aliases
# /usr/lib/python2.2/lib-dynload/japanese/aliases/__init__.pyc matches /usr/lib/python2.2/lib-dynload/japanese/aliases/__init__.py
import japanese.aliases # precompiled from /usr/lib/python2.2/lib-dynload/japanese/aliases/__init__.pyc
import encodings # directory /usr/lib/python2.2/encodings
# /usr/lib/python2.2/encodings/__init__.pyc matches /usr/lib/python2.2/encodings/__init__.py
import encodings # precompiled from /usr/lib/python2.2/encodings/__init__.pyc
# /usr/lib/python2.2/codecs.pyc matches /usr/lib/python2.2/codecs.py
import codecs # precompiled from /usr/lib/python2.2/codecs.pyc
dlopen("/usr/lib/python2.2/lib-dynload/structmodule.so", 2);
import struct # dynamically loaded from /usr/lib/python2.2/lib-dynload/structmodule.so
dlopen("/usr/lib/python2.2/lib-dynload/_codecsmodule.so", 2);
import _codecs # dynamically loaded from /usr/lib/python2.2/lib-dynload/_codecsmodule.so
# /usr/lib/python2.2/encodings/aliases.pyc matches /usr/lib/python2.2/encodings/aliases.py
import encodings.aliases # precompiled from /usr/lib/python2.2/encodings/aliases.pyc
Python 2.2.2 (#1, Feb 24 2003, 19:13:11)
[GCC 3.2.2 20030222 (Red Hat Linux 3.2.2-4)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
dlopen("/usr/lib/python2.2/lib-dynload/readline.so", 2);
import readline # dynamically loaded from /usr/lib/python2.2/lib-dynload/readline.so
>>>

그리고, test.cgi 를 만들어 셀에서 실행을 시키면 실행은 되지 않네요.
그러나, /home/alex/Python 으로 가서 python 이라고 치면 아래와 같이 실행되는데 이게 인터랙티브 쉘 맞는지요?
[root@devmaster moin]# python
Python 2.2.2 (#1, Feb 24 2003, 19:13:11)
[GCC 3.2.2 20030222 (Red Hat Linux 3.2.2-4)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>>

A. /home/alex/python 라고 입력해보라고 한 것은 파이썬 실행 파일 경로가 맞는지 확인하기 위해서였습니다. 아무래도 디렉토리까지 밖에 안 써주신 것 같습니다. cgi의 인터프리터 지정은 정확하게 해주어야 합니다. /home/alex/python 이게 파일인지 실행 파일인지 확인해보십시오. 정확한 경로를 모르면 which python으로 python 경로를 찾아보거나 명시적으로 경로를 지정하는 대신 #!/usr/bin/env python 를 써보십시오.


Q. 알려주신데로 which python 이라고 치니 /usr/bin/python 으로 나오더군요. 그리고 chmod +x moin.cgi 하고, 제가 설치한 위치인 /var/www/html/moin/에서
실행을 시키니 아래와 같은 결과가 나오네요. 무슨 문제인가요? 일전에.. py. pyl 화일을 지우라는 얘기가 있어서 지웠는데 그것때문인가요?!

[root@devmaster moin]# ./moin.cgi
Traceback (most recent call last):
  File "./moin.cgi", line 14, in ?
    from MoinMoin import cgimain
  File "MoinMoin/cgimain.py", line 21, in ?
    from MoinMoin import version, wikiutil
  File "MoinMoin/wikiutil.py", line 12, in ?
    from MoinMoin import config, user, version, webapi
  File "MoinMoin/user.py", line 12, in ?
    from MoinMoin import config, i18n, util, webapi
  File "MoinMoin/webapi/__init__.py", line 17, in ?
    raise NotImplementedError("Unsupported web interface")
NotImplementedError: Unsupported web interface


A.
webapi/init.py에서
# load the appropriate interface here
if os.environ.get('GATEWAY_INTERFACE') == 'CGI/1.1':
    from cgiMoin import *
else:
    raise NotImplementedError("Unsupported web interface")
부분을
# load the appropriate interface here
#if os.environ.get('GATEWAY_INTERFACE') == 'CGI/1.1':
from cgiMoin import *
#else:
#    raise NotImplementedError("Unsupported web interface")
으로 바꾸십시오.

Q. 1. ./moin.cgi를 실행시키면 spam이란 메시지가 뜹니다. 여기까지는 해결했습니다. 그런데, localhost에서 mozila를 이용하여
페이지를 열어보면 승인되지 않았다는 메시지가 뜹니다. 내부 config에서 제가 잘못 세팅을 한건가요? 아니면, cafe24나 이런
웹호스팅을 받아야지 만이 볼 수 있는것인가요?
spam이 출력되면 아마도 맞게 실행이 되는 걸겁니다. moin.cgi말고 저 위에 적어둔 test.cgi를 실행하려고 해도 승인되지 않았다는 메시지가 뜨나요?

2. 제가 config 화일 및 path를 제대로 세팅해서 테스트 한것인지 확인해보기 위해서 질문드립니다.
apache 세팅에서 localhost로 바로 가도록 해둔 path는 /var/www/html/이고 html 및에 test.txt를 만들면..
http://localhost/test.txt 하면 볼 수 있도록 되어있어서.. html 및으로 moin 폴더를 생성해서 실행해보고 있습니다.
모인모인 설치에 나와있는데로 하면 물리적인 실제 디렉토리는 /var/www/html/moin 이겠고요, 가상은 http://localhost/moin/index.html 이라는 형태로 하도록 디렉토리를 세팅하였습니다. 그리고, gz 화일을 풀었을때 moin 폴더안에 MoinMoin, data, img 폴더 및 moin.cgi, moin_config.py, default.css, index.html 그리고 두개의 아이콘이 있어 별다르게 폴더는 바꾸지 않고 언급된 화일들의 내용만 수정해서 ./moin.cgi를 실행시켜 놓은 상태입니다. 어떤 부분이 문제가 있는것인가요?
글 만으로는 특별히 문제될 게 없어보이는데, moin.cgi의 내용과 moin_config.py의 내용을 여기에 올려봐주십시오. (내용이 길겠지만 보고 지우면 될테니까요)



/var/www/html/moin/ 밑에 MoinMoin 디렉토리, data 디렉토리가 있다면 맞게 한 것 같습니다.
url_prefix는 쉘 상의 경로를 말하는 것이 아니라 말그대로 URL 앞에 붙게 되는 주소이므로 잘못 쓰였지만, 실행에 영향을 끼치는 정도는 아닙니다. 그냥 이미지 경로가 틀리게 되니까 안 나올 뿐이지요. (옳게 한다면, "http://localhost/moin" 또는 "/moin").

설정에 문제는 없어보이므로 Q1에 달아놓은 리플대로 test.cgi가 제대로 실행되는지 확인해보십시오.


tset.cgi를 ./tset.cgi로 실행 시키면
Content-Type: text/html

This is test
라는 메시지가 뜨네요.

아파치 에러 로그를 살펴보십시오. 아마도 /var/log 밑에 있지 않을까 합니다.

Q. 앗.. 말씀하신대로.. 찾아보니 /var/log/httpd/error_log에서 찾았습니다. 이전것들이 잔뜩이여서,
우선은 쉘에서 ./moin.cgi 와 ./test.cgi를 실해해 보았고 그리고 client에서 localhost/moin/moin.cgi를 실행 해보았습니다.
쉘에서는 말씀드렸던 대로 spam 문자열과.. this is test 라는 메시지를 받았는데.. clinet에서는 에러표시만 뜨더군요.
그리고, localhost 자체에서 http://localhost/moin/moin.cgi를 실행 시키니.. 그제서야 error_log에 메시지가 뜨네요.
이전에 cgi가 제대로 설정이 된건지 의문시 했는데 그거 같은데 에러 메시지는 다음과 같습니다.
[Thu Jun 17 09:46:54 2004] [error] [client 203.239.173.68] Options ExecCGI is off in this directory: /var/www/html/moin/moin.cgi
[Thu Jun 17 09:46:54 2004] [error] [client 203.239.173.68] unable to include potential exec "include/top.html" in parsed file var/www/error/HTTP_FORBIDDEN.html.var
[Thu Jun 17 09:46:54 2004] [error] [client 203.239.173.68] unable to include potential exec "include/bottom.html" in parsed file var/www/error/HTTP_FORBIDDEN.html.var
이네요. 보면 첫줄에서 문제가 해결될 수있는것 같은데. 제가 지금은 viewcvs를 사용하고 있어서 아래처럼 바꾸어 놨는데..
아 그리고 처음에 cgi가 설치를 해야하는것인줄 알고.. cgiwrap 이라는 프로그램을 설치했습니다. 설치 위치를 /usr/local/apache/htdocs/cgi-bin/로 맞춰놓았는데 한번 보시고 옵션에서 EexcCGI를 ON 할수 있는 방법에 대해서 조언부탁드립니다. (힉.. 참고로 아래는 httpd.conf 파일의 일부분인데 제가 이것저것 하던중 cgi 관련된 부분인것 같아서 설정을 변경해 보았던 부분이여서 올렸습니다.)

#
ScriptAlias /cgi-bin/ "/usr/local/apache/htdocs/cgi-bin/"
<Directory "/var/www/icons">
    Options Indexes MultiViews
    AllowOverride None
    Order allow,deny
    Allow from all
</Directory>

#
# This should be changed to the ServerRoot/manual/.  The alias provides
# the manual, even if you choose to move your DocumentRoot.  You may comment
# this out if you do not care for the documentation.
#
Alias /manual "/var/www/manual"

<Directory "/var/www/manual">
    Options Indexes FollowSymLinks MultiViews
    AllowOverride None
    Order allow,deny
    Allow from all
</Directory>

<IfModule mod_dav_fs.c>
    # Location of the WebDAV lock database.
    DAVLockDB /var/lib/dav/lockdb
</IfModule>

#
# ScriptAlias: This controls which directories contain server scripts.
# ScriptAliases are essentially the same as Aliases, except that
# documents in the realname directory are treated as applications and
# run by the server when requested rather than as documents sent to the client.
# The same rules about trailing "/" apply to ScriptAlias directives as to
# Alias.
#
ScriptAlias /cgi-bin/ "/usr/local/apache/htdocs/cgi-bin/"

<IfModule mod_cgid.c>
#
# Additional to mod_cgid.c settings, mod_cgid has Scriptsock <path>
# for setting UNIX socket for communicating with cgid.
#
Scriptsock            run/httpd.cgid
</IfModule>

#
# "/var/www/cgi-bin" should be changed to whatever your ScriptAliased
# CGI directory exists, if you have that configured.
#
<Directory "/usr/local/viewcvs-0.9.2/">
    AllowOverride None
    Options Indexes FollowSymLinks ExecCGI
    Order allow,deny
    Allow from all
</Directory>

http://localhost/moin/test.cgi 도 실행이 안되겠군요. cgi-wrap은 잘은 모르지만 보안성을 높이기 위해 설치하는 것 같던데, 그럴 경우 설치하는 방법이 좀 달라지는 것 같습니다. 써보지 않아서 잘 모르지만. 아파치 설정에 대해서도 잘은 모르지만, 노스모크의 경우 다음과 같이 되어있습니다.

<Directory "/home/no-smok/public_html">

#
# This may also be "None", "All", or any combination of "Indexes",
# "Includes", "FollowSymLinks", "ExecCGI", or "MultiViews".
#
# Note that "MultiViews" must be named *explicitly* --- "Options All"
# doesn't give it to you.
#
    #SetHandler fastcgi-script
    Options Indexes Includes FollowSymLinks +ExecCGI

#
# This controls which options the .htaccess files in directories can
# override. Can also be "All", or any combination of "Options", "FileInfo",
# "AuthConfig", and "Limit"
#
    AllowOverride All

#
# Controls who can get stuff from this server.
#
    Order allow,deny
    Allow from all
</Directory>

Q. 올려주신 부분이 보니 httpd.conf 파일의 내용이여서 제가 사용을 해보았습니다.
제것에선 위에 남겨주신 부분에서 Options 부분과 AllowOverride 부분이 틀려있었습니다.
Option은 Options Indexes FollowSymLinks로 되어있어서 똑같이 바꿨으나, httpd를 restart 할때 에러가 나더군요. 그래서
Options Indexes ExecCGI로 바꾸었고, AllOverride는 None 에서 All로 설정을 변경하였습니다. 그랬더니만.. HTTP 500 -내부서버오류라고 뜨는군요.
물론 쉘에서는 spam이라는 문자는 계속 나타납니다. 이궁.. 위에 이미 질문하신 분들중에 보면 500 에러가 떳을때 어찌하였다는 방법은 없는데..

위의 httpd.conf 일부분 올려주신 분 우선 고맙게 말씀드리며 수고스러우시겠지만.. httpd.conf 파일의 내용을 올려주시거나 아니면..
이 글 보신 분이시라면 좀 귀찮으시더라도 httpd.conf 파일을 제 메일로 좀 부탁드리겠습니다. 설정을 이것저것 비교해 보고 수정해 볼까해서 그럽니다.
미리 감사말씀드리겠습니다.

글쿠.. 혹.. 500 에러를 처리하신 분들 있으시면 명쾌한 해답 부탁드리겠습니다. :) - alex(yslee@mirero.co.kr)

Q : 윈도우 2003 서버에서 설치 하신분중, 혹시 과정중 CGI 오류 HTTP 헤더의 완전한 집합을 반환하지 못함으로써 지정한 CGI 응용 프로그램이 제대로 작동하지 않습니다 를 만나고 해결하신 적이 있나요?

Q : 디자인 변경은 어떻게 하는건가요? 다른 건 상관없지만 인덱스, 도움말, 찾기, 대문이 있는 테이블의 수정방법을 알고싶습니다. 세로로 제법 길더라구요. 이것저것 건드려봐도 go버튼만 바뀌는군요. 어느 파일을 수정해야 할까요?
A. : CSS 문법을 아신다면, default.css를 변경하시면 됩니다. 만약 테이블의 위치를 바꾸실 것이 아니라면 moin_config.py에 있는 navi_bar 정의를 바꾸시면 고쳐집니다. 저도 이 두 곳만 변경하여 고쳐서 사용하고 있습니다. --규선이

Q. '''
IIS와 노스모크모인모인을 연결해서 사용중인데요.
페이지를 편집하고 Save Changes 를 눌렀을 때 속도가 다릅니다.(물론 후자가 느리지요.) 같은 컴퓨터인데도 말이지요. 어떤 문제일까요? (네트웍 카드를 지나가는데 문제가 있나...) os 는 win2000 adv server 입니다. (리눅스에 붙이고 싶지만 회사컴이라...) --커널0

errlog를 한번 열어보세요. 발생한 예외 같은게 기록되어 있을지도 모르겠습니다.
정확한 문제는 editlog파일에 작성자의 IP addr 로 호스트 네임을 가져오려는 시도를 하다가 exception이 발생해서 느려지는 것이었습니다. (내부 망의 DNS가 이상해서 -_-;) 관련 부분 (editlog.py)을 주석화 하니 괜찮아 지는군요. --커널0

Q.
안녕하세요. 다름이 아니라..
위키에 안타까운 점은 글 쓰는 위키문법을 좀 알아야 한다는 게 걸리잖아요
현재 백과사전 싸이트 중에 위키로 만들어진
위키페디아 (http://wikipedia.com) 의 경우에 보면은
문법을 모르더라도 위지윅 에디터로 쉽게 작성할 수 있게 해 놓았더라구요
음 흉내내 보고 싶은데;;
모니위키를 사용하려는데요 (설치 후에 이쁜 테마까지는 만들었지만 아직 공개는;;)

혹시나 미니위니(http://miniwini.com)
의 위쯔님이 만드신 에디터(http://miniwini.com/miniwinis/bbs/index.php?bid=share&m=clip&mode=read&id=3012&p=1)
를 적용시킬 수 있을까요?
(지금 상당히 삽질은 해 보고 있지만 꽤나 어렵네요...)
지금까지 사용해 보던 위지윅 에디터중에 단연 최고라고 생각되기에 ;;;

가능할까요?

Q.
안녕하세요. 윈도우 IIS에서 설치하였는데.
윈도우 에러가 나네요? 혹시 뭐가 부족해서 그런지 알수 있을까요?
설치는 제대로 된거 같은데..설정이 부족한듯 보입니다만...죄송합니다..
에러를 어떻게 설명할지 몰라..링크겁니다.


Q.
노스모크모인모인 설치했는데요.. 업로드파일 버튼 누르면 Unknown action 이라고만 나옵니다!! 왜그러죠? --이준
A.
NoMoR0.1_20021108.tar.gz 를 윈도우즈 환경에서 설치하신 분들중에
UploadFile시 Unkown action이라고 나타나시는 분들은 다음을 변경해 보십시요..

UploadFile.py 에서
import cgi, string, os, sys
import posixpath, ntpath, macpath
from MoinMoin import config, user, webapi, wikiutil
from MoinMoin.Page import Page

dospath=ntpath
loadtextauto = 1                       # 1=read file at once
MAX_LENGTH=15*1024*1024

이렇게 변경 해주니 잘 동작 하는군요. --이준

같은 방법으로 해결했습니다. 리눅스도 같은 방법으로 해결하면 됩니다. 아마도 파이썬 버전이 바뀌면서 생긴 현상인듯 합니다. 파이썬 2.4입니다.


  • History 기능은 있는건가요-ㅅ-? 또 있다면 '여기'서는 어떻게 써먹어야 하나요? -
    파란아이가 있습니다.

Q.
  • 모인모인을 설치하여 사용하다가, 몇일 전 해킹을 당해서 최근에 복구를 시켰습니다. moin_config.py와 moin.cgi정도만 새로 복사해 넣어서 일단 모인모인은 잘 돌아가는 듯 합니다. 그런데 링크 생성에 문제가 있더군요.
    [모인모인] 이라고 쓰면 모인모인에 대한 링크가 생겨야 하는데, 링크 없이 말그대로 [모인모인]이라고 표현이 됩니다.

    이번에 새로 안 사실인데(혹은 잘못 안 사실일수도 있는데)
    ["모인모인"] 이렇게 링크를 시킬 수도 있더군요

    이것은 링크가 잘 되어서 지금 현재 필요한 부분만 바꾸어서 쓰고 있습니다. 도움 부탁드립니다. - rnblue



"; if (isset($options[timer])) print $menu.$banner."
".$options[timer]->Write()."
"; else print $menu.$banner."
".$timer; ?> # # ?>