MediaWiki의 설치
Published by Nineye under weblog & wiki on November 19, 2009
회사에서, 연구소간 공유할 수 있는 위키를 만들게 되어서, 전세계적으로 가장 널리 알려진 Wikipedia의 근간이 된 MediaWiki를 설치하면서 수행한 일들을 정리한다.
문서의 순서는 필자가 MediaWiki를 설치하면서 수행한 일들을 시간 순서대로 나열 할 것이다. 참고로 MediaWiki의 홈페이지는 http://www.mediawiki.org 이다.
환경
OS : Linux Cent-OS 64
php 버전 : 5.1.6
mysql 버전 : Ver 14.12 Distrib 5.0.45
GD 버전 : bundled (2.0.28 compatible)
MediaWiki 버전 : 1.15.1
설치 권한 : 사용자 user1으로 설치
MediaWiki 소스 설치 위치 : /home/user1/www/wiki 아래에 설치 (아파치 설정에서 사용자의 홈디렉토리 위치를 public_html에서 www로 바꾼 경우)
MediaWiki DB 설치 위치 : mysql database “mediawiki” 에 설치한다. 그리고 mysql의 user1 계정에 권한을 준다.
Install
1. MediaWiki 홈페이지에서 다운로드 받는다.
http://www.mediawiki.org/wiki/Download 페이지를 띄워서 Latest releae 버전을 다운로드 받는다. 다운 받은 MediaWiki 압축 파일을 설치할 위치(/home/user1/www/)에 업로드 한다.
2. 압축된 MediaWiki 파일을 원하는 위치에 압축 해제한다.
# mediawiki-1.15.1.tar.gz 가 /home/user1/www/ 에 있을 경우 tar xvzf mediawiki-1.15.1.tar.gz mv mediawiki-1.15.1 wiki
3. MediaWiki 설정 전, 준비 작업을 한다.
1) mysql DB에 MediaWiki가 사용 할 정보를 만든다.
# MediaWiki 데이터를 담을 database를 만든다. mysql> create database mediawiki; # 생성한 "mediawiki" database에 grant ~ on 사이의 권한을 user1에게 부여한다. # user1이 mysql 에 등록되어 있지 않은 경우, user1을 생성한 후 권한을 부여한다. # user1이 mysql에 등록되어 있는 경우, 권한을 부여한다. mysql> grant create, select, insert, update, delete, alter, lock tables on mediawiki.* to 'user1'@'localhost' identified by 'password'; # MediaWiki에서 사용 할 DB가 다른 서버에 위치 할 경우, 위의 명령에서 'localhost' 를 해당 서버의 주소로 바꿔준다.
2) config 디렉토리 설정
MediaWiki를 웹페이지에서 설정하기 위해, /home/user1/www/wiki/config 디렉토리에, others에게 쓰기 권한을 부여한다. 쓰기 권한을 부여하지 않았다면, “Can’t write config file, aborting”의 오류 메세지가 설정 페이지에 나타난다.
cd /home/user1/www/wiki chmod 757 config
4. http://yourdomain/~user1/wiki/config/ 에 접속해서 MediaWiki를 설정한다.
1) 환경 체크 (Checking environment)
서버의 환경을 체크하여, MediaWiki를 설치할 수 있는 지 체크한다. MediaWiki가 정상적으로 동작하지 못할 수도 있는 환경이면 붉은 색 글자로 에러를 표시하나, 비정상적인 부분이 없다면 위와 같이 “You can install MediaWiki”를 표시한다. 참고로, Warnning이 뜰때도 있는데, 이는, MediaWiki의 메인 기능은 정상적으로 이용 가능하지만, 추가적인 기능은 이용할 수 없을지도 모른다는 것이다. 예를 들면, GD library가 설치되어 있지 않으면 다양한 이미지 변환 기능을 사용할 수 없다. 이럴 때 Warnnig이 뜬다. 서버의 관리자라면 MediaWiki가 필요로 하는 기능들을 서버에 다 설치하여 Warnning이 없도록 만든 후, 다시 환경 체크를 해서 정상적으로 통과 시키자.
2) 사이트 설정 (Site config)
- Wiki name : 위키의 명칭을 적는다. 이 명칭은 위키내에서 네임스페이스로도 사용되므로 되도록이면 짧고 공백없이 명명하도록 한다.
- Contact e-mail : 위키를 관리할 사람의 이메일이다.
- Language : 위키에서 표시할 언어이다. MediaWiki가 영문을 베이스로 하다보니, 영문을 선택하면 전체적으로 깔끔하지만, 한국어를 선택하면 좀 지저분해 보인다. 영문을 선택하더라도 한국어를 입력은 할 수 있다. 한국어를 선택하려면 “ko – 한국어”를 선택한다. 그리고 여기서 “en – English”를 선택해서 설치하고 나중에 위키 사용자 설정에서 다시 한국어로 바꾸지는 말자. 그러면 이상하게 꼬일 가능성이 많다. 예를 들면, 영문에서의 대문의 명칭은 “Main”이며, 한국어에서 대문의 명칭은 “대문”이다. 언어를 나중에 바꾸면 “대문”을 클릭해도 해당페이지가 없다고 나온다. 왜냐면 대문 페이지는 “Main”의 명칭으로 만들어져 있기 때문이다. 이런 문제가 페이지 명칭, 네임스페이스 명칭, 특수 페이지 명칭 등에 걸쳐 상당히 많이 존재한다.
- Copyright / license : 라이센스를 어떻게 표시할거냐는 건데… 필자는 그냥 “No license metadata”를 선택했다.
- Admin username, Password, Password confirm : 관리자로 사용 할 정보이다.
- Object caching : php에서 어떤 툴을 이용하여 object caching을 할 것이냐는 것인데, 이는 eAccelerator나 Turck MMCache등이 서버에 설치되어 있어야 한다. MediaWiki 설정 페이지에서는 이런 툴들이 설치되어 있는지 자동으로 감지해 주고 표시해 준다. 필자의 서버는 설치가 되어 있지 않기때문에 표시가 되지 않았다. 없으면 그냥 No caching을 선택해 주고, 있으면 있는 툴을 선택해 주자. 참고로 설명에 나와 있듯이, DBA는 No caching보다 더 느려서 테스트 용도로만 사용하니 선택하지 말자.
3) 이메일 설정 (E-mail, e-mail notification and authentication setup)
- E-mail features (global) : 모든 이메일 기능을 사용 가능하게 할 것인지, 아니면 사용 불가능하게 할 것인지 선택한다. 일반적인 설정은, 사용자끼리의 이메일은 그다지 많지 않고, 이메일 공지가 부하가 크기 때문에, 이 항목과 사용자끼리의 이메일은 활성화 시키고 이메일 공지는 비활성화 시키는 것으로 설정한다.
- User-to-user e-mail : 사용자끼리 이메일을 주고 받을 수 있게 할 것인지.
- E-mail notification about changes : 각종 토론 페이지나 주시 항목들의 변경을 이메일 공지로 알릴 것인지 선택.
- E-mail address authentications : 사용자 등록을 할 때, 이메일 인증을 하게 할 것인지 선택
4) 데이터베이스 설정 (Database config)
- Database type : 사용할 데이터베이스를 선택한다. 선택되는 데이터베이스는 서버에 설치되어 있어야 한다.
- Database host : 데이터베이스 접근 위치를 선택한다. 위키와 데이터베이스가 같은 서버에 있으면 “localhost”를 사용하고, 다른 서버에 있으면 데이터베이스가 있는 서버 도메인이나 IP주소를 적는다.
- Database name : 3.1) 단계에서 생성한 데이터베이스 명칭을 적어준다. 이 예제에서는 “mediawiki”라고 이름 지었다.
- DB 사용자 정보 : 3.1) 단계에서 “mediawiki” 데이터베이스로의 접근 권한을 준, 사용자 정보를 입력한다. 이 예제에서는 username – “user1″, password – “password” 였다.
- Superuser 정보 : 3.1) 단계에서 수동으로 데이터베이스를 만들어 주지 않았다면 이 설정으로 자동으로 만들게 할 수 있다. mysql서버에서 데이터베이스를 만들 수 있는 높은 권한을 가진 사용자 정보를 입력하자. 그정도의 권한이 없으면 3.1) 단계에서처럼 관리자에게 요청하여 수동으로 만들자.
- Database table prefix : MediaWiki에서 사용할 DB 테이블들의 접두어를 정한다. 필자의 경우는 “nmw_” (nineye media wiki) 라고 붙였다.
- Storage Engine : MyISAM은 디폴트 storage engine이며, 트랜젝션을 지원하지 않는다. InnoDB는 트랜젝션을 지원한다. 즉, MyISAM은 속도가 빠른 대신, 충돌이 발생할 가능성이 많기 때문에 위키를 혼자 사용할 때만 선택할 수 있다. InnoDB는 여러 사람이 위키를 동시에 이용해도 충돌이 발생하지 않는 대신, 속도가 느리다. 위키의 목적에 따라 설정하자. 단, MyISAM을 선택할 때는 반드시 혼자만 편집 가능하다는 것을 전제로 해야 한다.
- Database character set : 데이터베이스에서 사용할 문자 코드를 선택한다. 아래 설명에 보면 binary mode가 더 효율적이라고는 하는데, 필자는 귀찮아서 그냥 utf-8을 선택했다.
5) Install MediaWiki 버튼을 눌러서 설정을 적용 시킨다.
설명대로 설정을 했다면 위와 같이 “Installation successful!”이 뜰 것이다. 만약 에러가 발생하면 에러메세지를 읽고, 지시에 따라 다시 설정하자.
그리고 위 페이지에서 시키는 대로, config/LocalSettings.php 파일을 상위 디렉토리로 이동시키고 “chmod 600 LocalSettings.php”로 접근 권한을 설정해 주자. 이는, LocalSettings.php는 아파치가 생성한 파일이므로, 아파치를 제외한 그 누구도 이 파일에 접근하지 못하게 한다. 왜냐면 이 파일에는 위키를 설정한 사용자 정보가 암호까지 그대로 저장되어 있기 때문이다. 참고로 위처럼 권한을 변경하려면 관리자 권한이 있어야 한다.
5. http://yourdomain/~user1/wiki/ 로 접속하면 설치된 위키가 뜬다.
Extention
여기에서는 필자가 설치해 본 extention들을 적는다. 설명까지하면 너무 길기 때문에 간략하게 소개만 하고, 내용이 많은 경우 따로 링크를 건다.
- LiquidThreads
각 문서의 토론 페이지에서, 댓글 형식으로 글을 달 수 있게 함
- IssueTracker
맨티스와 비슷한 이슈 추적기이며, 문서 마다 이슈를 추적할 수 있게 되어 있고, 아주 심플하게 구성되어 있음
- SyntaxHighlight_GeSHi
WordPress의 SyntxHighlight와 같은 역할을 하며, 각종 코드를 코드 표현 방식에 맞게 표현해 줌
- Wiki2LaTeX
http://nineye.net/blog/archives/1355 여기 참조
결론
결론적으로는, MediaWiki 자체에는 문제가 거의 없었는데, extension들을 설치하다 보니 문제가 많았다. 우선, MediaWiki에서는, 등록된 각 extension들에 대해 사용자가 정확히 인지를 하지 못한다는 단점이 있었다. wordpress 사이트에서는 plugin들을 인기도에 따라서 정렬을 하고, 각 plugin들에 대해, 정해진 포맷대로 명확하게 설명을 해놓게 해서, plugin 사용자들이 뛰어난 기능의, 문제없는 plugin을 쉽게 선택할 수 있었다. 하지만 MediaWiki에서는 아무리 뒤져봐도 좋은 품질의 extension대로 정리해 놓은 곳이 없었다.
사용자들이 직접 만드는 plugin이나 extension에게 가장 중요한 것은 그것들의 품질이다. 품질을 평가하는 시스템이 없다면 사용자들은 수많은 plugin들을 설치해서 사용하기전까지는 어떤 plugin이 가장 좋은 지 알 수 없다. 이런 기본적인 부분도 소홀히 한 MediaWiki가 이해가 되지 않았다.
어쨌든 MediaWiki 자체는 정말 뛰어난 위키 툴인 것 같다.