본문 바로가기

BUGboard

트러블슈팅 - MoinMoin 위키와 Python 버전 충돌 현상


BUG board 는 게임 개발용 PMS 기능을 일부 담당하고 있습니다.
그러다 보니, 기획자가 선호하는 Wiki 를 설치할 일이 종종 있는데,
이번에 PHP 기반이 아닌 Python 기반의 위키를 설치하다 겪은 이슈를 적어봅니다.


MoinMoin 위키는 매우 널리 쓰이는 유명한 위키 중 하나입니다.
설치 환경으로 Python 을 사용하고 있습니다.

MoinMoinWiki 홈페이지 >> http://moinmo.in/

MoinMoin 은 좋은 장점이 있는데, 자체적으로 웹서버를 구동할 수 있기 때문에,
BUG board 에서 사용하고 있는 APMSETUP 을 사용할 필요가 없다는 것입니다.
Python 을 다운받아 설치하고, 웹서버를 더블클릭하여 실행해 주면 그걸로 끝입니다.
기본으로 세팅되어 있는 Port 가 8080 이기 때문에, 아파치가 사용하는 80 포트와 충돌도 없습니다.

Python 홈페이지 >> http://www.python.org/



그런데 문제는, 보안이슈로 이렇게 웹서버를 두개(Apache, Python) 띄우는 것이 아니라,
80 포트 하나만을 사용 해야 하는 상황이 발생한 것입니다.

사용 포트를 변경하는 방법은 MoinMoinWiki 설치폴더에 있는
wikiserverconfig.py 파일에서 port 설정을 8080 에서 80 으로 바꾸면 되는데,
이 상태에서 MoinMoin 자체 웹서버를 실행해 버리면,
아파치 서버와 같은 포트를 사용하기 때문에, 나중에 올린 웹서버만 서비스 됩니다.
(즉, BUG board 는 사용할 수 없고, 위키만 사용할 수 있게 되는 것입니다)

관건은, 자체적으로 포함되어 있는 웹서버가 아니라
Apache CGI 로 구동을 하는 것입니다.

※ MoinMoinWiki 는 여러가지 방식의 구동을 지원하고 있어서,
   메인폴더 아래에 보면 아래와 같이 여러 파일들이 나열되어 있습니다.
    - moin
    - moin.ajp
    - moin.cgi
    - moin.fcgi
    - moin.scgi
    - moin.wsgi


APMSEUP 으로 별다른 설정없이 사용할 수 있는 것은 moin.cgi 인데,
이 방식에 대해 여러가지 방법으로 설정을 시도해 보았지만,
결국 첫 대문 페이지만 정상 출력되었고, 나머지 서브 페이지들은 사용을 할 수가 없었습니다.

※ CGI 사용과 관련하여 좀더 덧붙이자면,
    APMSETUP 7 에서 제공하는 Apache 는 2.2.14 버전으로서 (아파치도 파이썬 모듈 일부를 가지고 있습니다)
    mod_python.so 를 연동 시킬 경우, Python 2.5 버전을 설치하지 않으면 에러가 발생합니다.




그래서 대안으로 찾은 것이 WSGI 입니다.
WSGI 는 MoinMoin 에서도 공식적으로 가장 잘 구동할 수 있는 방식이라고 소개가 나와 있습니다.

WSGI 홈페이지 >> http://code.google.com/p/modwsgi/

Python 과의 호환이 가장 큰 문제였는데, WSGI 는 Python 2.6 부터 지원을 합니다.
mod_wsgi.so 최신버전은 Python 2.7 에 맞춰져 있으므로,
Python 역시 2.7 을 설치해야 합니다.
(Python 최신버전은 2.7.1 이지만, 여기서는 2.7 을 사용해야 합니다)

WSGI 2.7 다운로드 >> http://code.google.com/p/modwsgi/downloads/detail?name=mod_wsgi-win32-ap22py27-3.3.so
Python 2.7 다운로드 >> http://www.python.org/ftp/python/2.7/python-2.7.msi



Python 을 설치하고 나서,
APMSETUP Apache 에 있는 httpd.conf 파일을 열어 mod_wsgi 를 추가합니다.

LoadModule wsgi_module modules/mod_wsgi.so

※ 이 때, 앞서 사용하였던 mod_python.so 는 아파치 모듈에서 사용하지 않습니다. (버전이 맞지 않으니까요)

그리고, MoinMoin 의 최신버전은 1.9.3 이므로, Alias 도 아래와 같이 추가해 줍니다.

Alias /moin_static193 "C:/APM_Setup/htdocs/wiki/static_htdocs"

※ 이때, 경로 지정은 위키를 설치한 폴더를 지정해 주면 됩니다.

httpd-alias.conf 파일에는 아래와 같이 추가해 줍니다.

WSGIScriptAlias /wiki "C:/APM_Setup/htdocs/wiki/moin.wsgi"
<Directory "C:/APM_Setup/htdocs/wiki/moin.wsgi">
     Options all
     AllowOverride all
     Order deny,allow
     allow from all
</Directory>




이제 mod_wsgi.so 버전과 Python 버전이 일치하고 있고, Wiki 를 WSGI 로 구동하는 설정도 완료 되었습니다.
MoinMoinWiki 설치안내를 따라 위키 설치 경로를 지정하고 나면,
Apache 서버로 MoinMoin 위키를 사용할 수 있게 됩니다.