MediaWiki
Mediawiki에 대한 전반적인 사항을 정리한다.
위키피디아에서 사용된 대규모 사용자를 위한 위키 서비스 이다.
- 홈페이지 : http://www.mediawiki.org/
- 다운로드 : http://www.mediawiki.org/wiki/Download
- Extentions 다운로드 : http://www.mediawiki.org/wiki/Extension_Matrix, http://www.mediawiki.org/wiki/Special:AllPages/Extension:
- 라이센스 : GPL v3
- 플랫폼 : PHP
목차
CentOS에 MediaWiki 1.23.3 설치
- 사전 준비 사항
- CentOS 설치
- MySQL 설치
- Apache HTTP Server 설치
- PHP 설치
- 다운로드 사이트에서 mediawiki-1.23.3.tar를 다운로드 받아 압축을 풉니다.
cd /nas/install wget http://releases.wikimedia.org/mediawiki/1.23/mediawiki-1.23.3.tar.gz tar xvzf mediawiki-1.23.3.tar.gz chown -R apache:apache mediawiki-1.23.3 mv mediawiki-1.23.3 wiki mv wiki /nas/www/ossnode101/public_html yum install ImageMagick ImageMagick-devel
- http://ossnode101.ossbiz.co.kr/wiki 사이트에 접속하여 설치를 합니다.
- "Fatal exception of type MWException" 오류 발생시
- vi LocalSettings.php
### require_once( "$IP/extensions/LocalisationUpdate/LocalisationUpdate.php" );
설치 가이드
아래 설치 가이드는 Windows Server 2003을 기준으로 작성한 것 입니다. 설치 환경이 틀릴 경우에는 별도의 주석을 달아 주세요.
설치전 사전 준비 사항
- MySql Tools for 5.0 설치
- phpMyAdmin 설치 (옵션 사항으로 필요시 설치)
- PHP에 GD 확장팩 설치
- PHP에 GetText 확장팩 설치
- PHP에 IMAP 확장팩 설치
- PHP에 mysql, mysqli 확장팩 설치
Mediawiki용 DB 설정
- MySQL에 Mediawiki에서 사용할 Schmea를 등록한다.
- MySQL Administrator에 root 관리자로 로그인 한다.
- 좌측 상단 창에서 "Catalogs"를 선택한다.
- 좌측 하단의 "Schemata" 창에서 우측 마우스를 누른다.
- "Create New Schema" 메뉴를 선택하여 Schema를 생성한다.
- Schema 생성화면에서 "Schema name"으로 "mediawikidb"를 입력한다.
- MySQL에 Mediawiki에서 사용할 사용자를 등록한다.
- 좌측 상단 창에서 "User Administration"을 선택한다.
- 좌측 하단의 "Users Accounts" 창에서 우측 마우스를 누른다.
- "Add new user" 메뉴를 선택하여 사용자를 생성한다.
- "User Information" 탭에서 "MySQL User"("mediawiki"), "Password", "Confirm Password" 등을 등록한다.
- MySQL에 Mediawiki에서 사용할 사용자의 권한을 설정한다.
- "Schema Privileges" 탭에서 사용자가 사용할 Schema("mediawikidb")를 선택한다.
- "Available Privileges"의 모든 권한을 "Assigned Privileges"로 이동한다.
- "Apply changes" 버튼을 눌려 등록된 정보를 저장한다.
- MySQL Query Browser에 접속한다.
- 사용자의 MySQL 데이터베이스 접속 정보를 추가한다.
- 우측의 "Schemata" 탭에서 "mysql"을 더블 클릭하여 선택한다.
- grant all privileges on mediawikidb.* to mediawiki@localhost identified by '암호'; (사용자에게 Schmea에 대한 권한을 추가)
- flush privileges; (위 명령을 통해 설정한 권한을 데이터베이스에 반영)
- select host, user, password from user order by user, host; (사용자의 접속 정보 확인)
- MySQL Query Browser가 아니라 DOS 창에서 접속 정보를 추가하는 방법
mysql -uroot -pxxx mysql grant all privileges on mediawikidb.* to mediawiki@localhost identified by '암호'; flush privileges; select host, user, password from user order by user, host; exit
Mediawiki 설치
- %APACHE_HOME%/conf/httpd.conf 파일에 mediawiki 관련 정보를 추가하고 Apache를 재기동 한다.
- Windows Vista의 경우 관리자로 실행하여 수정한다.
<Directory /> Options FollowSymLinks AllowOverride None # Order deny,allow (이 라인을 주석으로 막는다) # Deny from all (이 라인을 주석으로 막는다) </Directory> ###----------------------------------------------- ### mediawiki 설정, Document Root가 d:/www 일 경우 Alias /mediawiki d:/www/mediawiki <Directory "/mediawiki"> Order allow,deny Allow from all </Directory>
- http://www.mediawiki.org/wiki/Download에서 "mediawiki-1.11.2.tar.gz"를 다운로드 한다.
- http://localhost/mediawiki/에 화면에서 "setup the wiki"를 클릭하여 설정을 시작한다.
- Mediawiki의 환경 설정 화면에서 필요한 정보를 입력하여 사용자 환경을 설정 한다.
- Wiki name : jopenbusiness
- Contact e-mail : admin@jopenbusiness.com
- Language : ko - 한국어
- Copyright/license : No license metadata
- Shared memory caching : No caching
- Superuser accoutn : 사용하지 않음
- Database table prefix : jopen
- Storage Engine : InnoDB
- Database character set : Experimental MySQL 4.1/5.0 UTF-8
- 설정을 완료하면 설정 입력한 값이 %MEDIAWIKI_HOME%/config/LocalSettings.php 파일에 저장된다.
- Mediawiki 환경 설정을 완료한다.
- %MEDIAWIKI_HOME%/config/LocalSettings.php 파일을 %MEDIAWIKI_HOME%로 복사하고 %MEDIAWIKI_HOME%/config 디렉토리를 삭제한다.
- 이제 http://localhost/mediawiki로 접속하여 사용합니다.
- %MEDIAWIKI_HOME%/config/LocalSettings.php 파일에 TimeZone을 설정한다.
$wgLocaltimezone="Asia/Seoul"; $wgLocalTZoffset=+540;
Mediawiki에서 ImageMagick를 사용하도록 설정
- ImageMagick 6.3.9 Q16을 설치한다.
#--- Ubuntu에서 설치 apt-get install imagemagick
- %MEDIAWIKI_HOME%/LocalSettings.php 파일에 다음 사항을 반영한다.
$wgEnableUploads = true; $wgUseImageResize = true; $wgUseImageMagick = true; $wgImageMagickConvertCommand = "d:/OpenBiz/31_application/ImageMagick639/convert"; $wgHashedUploadDirectory = true;
- %MEDIAWIKI_HOME%/images 디렉토리 아래 다음 이름의 디렉토리를 추가한다.
- archive
- thumb
- temp
- deleted
CentOS에서 ImageMagick 설정
- ImageMagick 설치
- CentOS 5.5에서는 ImageMagick 6.2.8 가 설치됩니다.
yum install ImageMagick ImageMagick-devel
- vi /etc/php.d/imagick.ini
extension=imagick.so
- php -m | PHP에 설치된 모듈 목록 보기
Mediawiki에서 hMail Server를 사용하도록 설정
- hMail Server 4.4.1을 설치한다.
- %PHP_HOME%/php.ini 파일을 수정한다.
SMTP = mail.jopenbusiness.com smtp_port = 25 date.timezone = Asia/Seoul
- %MEDIAWIKI_HOME%/LocalSettings.php 파일을 수정한다.
$wgEmergencyContact = "admin@jopenbusiness.com"; $wgPasswordSender = "admin@jopenbusiness.com"; $wgEmailAuthentication = true;
MediaWiki Extentions 설치
WYSIWYG-CKeditor 설치
- 전제 사항
- MediaWiki가 설치된 폴더 : /cloudnas/www/html/mediawiki/
- 설치 작업용 임시 폴더 : /cloudnas/install/
- 백업 폴더 : /cloudnas/backup/
- WYSIWYG-CKeditor 설치
cd /cloudnas/install wget [https://github.com/Mediawiki-wysiwyg/WYSIWYG-CKeditor/archive/CKeditor_v4.zip https://github.com/Mediawiki-wysiwyg/WYSIWYG-CKeditor/archive/CKeditor_v4.zip] mv CKeditor_v4 CKeditor_v4.zip unzip CKeditor_v4.zip chown -R apache:apache WYSIWYG-CKeditor-CKeditor_v4 cd WYSIWYG-CKeditor-CKeditor_v4 mv * /cloudnas/www/html/mediawiki/extensions
- vi /cloudnas/www/html/mediawiki/LocalSettings.php
require_once( "$IP/extensions/WYSIWYG/WYSIWYG.php" ); $wgGroupPermissions['registered_users']['wysiwyg']=true; $wgGroupPermissions['*']['wysiwyg'] = true; //Everyone can use (if can edit)... $wgDefaultUserOptions['cke_show'] = 'richeditor'; //Enable CKEditor $wgDefaultUserOptions['riched_use_toggle'] = false; //Editor can toggle CKEditor/WikiText $wgDefaultUserOptions['riched_start_disabled'] = false; //Important!!! else bug... $wgDefaultUserOptions['riched_toggle_remember_state'] = true; //working/bug? $wgDefaultUserOptions['riched_use_popup'] = false; //Deprecated $wgFCKEditorExcludedNamespaces[] = NS_MEDIAWIKI; $wgFCKEditorExcludedNamespaces[] = NS_TEMPLATE; require_once( "$IP/extensions/WikiEditor/WikiEditor.php" ); $wgDefaultUserOptions['usebetatoolbar'] = 1; $wgDefaultUserOptions['usebetatoolbar-cgd'] = 1; $wgDefaultUserOptions['wikieditor-preview'] = 0; $wgDefaultUserOptions['wikieditor-publish'] = 0; $wgLocalisationUpdateDirectory = "$IP/cache"; ### enableSemantics( ); ### include_once( "$IP/extensions/SemanticForms/SemanticForms.php" ); ### $wgFCKEditorExcludedNamespaces[] = SF_NS_FORM; ### $wgFCKEditorExcludedNamespaces[] = SMW_NS_PROPERTY
- 서비스 재기동
service httpd restart
- 참고 문서
FCKeditor extension by Mafs
FCKeditor를 미디어위키에서 사용할 수 있도록 한다. 단 미디어위키의 일부 문법만 지원이 되므로 이를 확인하고 사용하여야 한다.
- FCKeditor 다운로드 사이트에서 FCKeditor_2.6.3b.zip을 다운로드 한다.
- FCKeditor_2.6.3b.zip의 압축을 풀어 $MEDIAWIKI_HOME 디렉토리 아래 FCKeditor 디렉토리에 복사한다.
- 첨부된 압축 파일을 풀어 다음 위치에 복사한다.
- fck_image.html 파일을 $MEDIAWIKI_HOME/FCKeditor/editor/dialog/fck_image.html 로 복사한다.
- fck_image.js 파일을 $MEDIAWIKI_HOME/FCKeditor/editor/dialog/fck_image/fck_image.js 로 복사한다.
- FCKeditor.php 파일을 $MEDIAWIKI_HOME/extension/FCKeditor.php 로 복사한다.
- 첨부된 압축 파일을 풀어 다음과 같이 파일을 수정한다.
- fckconfig.js 파일의 내용을 $MEDIAWIKI_HOME/FCKeditor/fckconfig.js 파일의 끝에 복사한다.
- FCKConfig.mwScriptPath 값을 $MEDIAWIKI_HOME/LocalSettings.php 파일에 있는 $wgScriptPath 값을 참고하여 수정한다.
- LocalSettings.php 파일의 내용을 $MEDIAWIKI_HOME/LocalSettings.php 파일의 끝에 복사한다.
- http://www.jopenbusiness.com/mediawiki/FCKeditor/_samples/default.html로 정상적으로 설치되었는지 확인한다.
- $MEDIAWIKI_HOME/LocalSettings.php에서 $wgFCKUseEditor를 true로 설정하여 Mediawiki가 FCKeditor를 디폴트 에디터로 사용하도록 한다.
- Magic Word : USE_EDITOR
VisualEditor
MediaWiki의 편집 화면에서 시각화된 도구를 사용하기 위해서는 VisualEditor Extension을 사용 한다.
다운로드 사이트로부터 원하는 버전을 다운로드 한다.
cd ${HOME_MEDIAWIKI} cd extensions # wget https://extdist.wmflabs.org/dist/extensions/VisualEditor-REL1_33-8c9c37e.tar.gz tar -xzf VisualEditor-REL1_33-8c9c37e.tar.gz cd .. vi LocalSettings.php wfLoadExtension( 'VisualEditor' ); $wgDefaultUserOptions['visualeditor-enable'] = 1; $wgHiddenPrefs[] = 'visualeditor-enable'; $wgVirtualRestConfig['modules']['parsoid'] = array( 'url' => 'http://127.0.0.1:8000', 'domain' => 'www.jopenbusiness.com', 'prefix' => 'www.jopenbusiness.com' );
VisualEditor 사용을 위해서 Parsoid를 구성 한다.
#--- Default 서비스 설치 위치 : /opt/parsoid/ git clone --recursive https://gerrit.wikimedia.org/r/mediawiki/services/parsoid/deploygit clone --recursive https://gerrit.wikimedia.org/r/mediawiki/services/parsoid/deploy git clone https://gerrit.wikimedia.org/r/mediawiki/services/parsoid cd parsoid npm install cp config.example.yaml config.yaml cp localsettings.example.js localsettings.js vi config.yaml mwApis - # This is the only required parameter uri: 'http://www.jopenbusiness.com/mediawiki/api.php' domain: 'www.jopenbusiness.com' vi localsettings.js exports.setup = function(parsoidConfig) { parsoidConfig.setMwApi({ uri: 'http://www.jopenbusiness.com/mediawiki/api.php', prefix : 'www.jopenbusiness.com', domain : 'www.jopenbusiness.com', }); }; node bin/server.js # systemctl restart parsoid
Upgrade 가이드
MediaWiki 1.3.4로 업그레이드
- MySQL에서 mediawiki Database를 백업 한다.
- 백업 : mysqldump --user=아이디 --password=암호 DB명 > DatabaseBackup.sql
- 복구 : mysql --user=아이디 --password=암호 -D DB명 < DatabaseBackup.sql
- mediawiki 파일 및 설정을 백업 한다.
- $MEDIAWIKI_HOME/images 폴더
- $MEDIAWIKI_HOME/LocalSettings.php 파일
- $MEDIAWIKI_HOME/AdminSettings.php 파일
- 다운로드 사이트에서 최신 버전의 "mediawiki-1.13.4.tar.gz" 파일을 다운로드 한다.
- 압축을 풀어 기존에 MediaWiki가 설치되어 있는 폴더로 복사 한다.
- $MEDIAWIKI_HOME/AdminSettings.php 파일을 설정 한다.
- $MEDIAWIKI_HOME/AdminSettings.php 파일이 없으면 *$MEDIAWIKI_HOME/AdminSettings.sample 파일을 복사하여 AdminSettings.php 파일을 작성 한다.
$wgDBadminuser = 'DB 사용자 아이디'; $wgDBadminpassword = 'DB 사용자 암호';
- Dos 창에서 아래와 같이 upgrade 명령을 실행 한다.
cd $MEDIAWIKI_HOME/maintenance php update.php --aconf ../AdminSettings.php
- Upgrade가 끝난 후 $MEDIAWIKI_HOME/AdminSettings.php 파일이 필요 없으면 삭제 한다.
- 이전 MediaWiki에서 Customize한 사항을 반영 한다.
- 참고 문헌
Upgrade from 1.20.5 to 1.23.3
- 전제 사항
- MediaWiki가 설치된 폴더 : /cloudnas/www/html/mediawiki/
- 설치 작업용 임시 폴더 : /cloudnas/install/
- 백업 폴더 : /cloudnas/backup/
- MediaWiki 1.23.3 설치 요구 사항
- MediaWiki 버전 확인
- Mediawiki 백업
service httpd stop cd /cloudnas/www/html tar cvf /cloudnas/backup/mediawiki_1205.tar mediawiki /usr/bin/mysqldump -umediawiki -pdemo1234 mediawikidb > /cloudnas/backup/mediawiki_1205.sql service httpd start
- Mediawiki Upgrade
service httpd stop cd /cloudnas/install wget http://releases.wikimedia.org/mediawiki/1.23/mediawiki-1.23.3.tar.gz tar xvfz mediawiki-1.23.3.tar.gz mv mediawiki-1.23.3 mediawiki chown -R apache:apache mediawiki tar cvf mediawiki.tar mediawiki cd /cloudnas/www/html tar xvf /cloudnas/install/mediawiki.tar cd mediawiki/maintenance php update.php service httpd start
- MediaWiki 버전 확인
- 참고 문헌
사용자 가이드
좌측 메뉴 수정
미디어위키(mediawiki)를 사용하면서 제일 먼저 하게 되는 것이 좌측 메뉴에 자신만의 메뉴를 추가하는 것 이다. 여기에 미디어위키의 화면과 메뉴를 수정하는 방법을 정리한다. (Sidebar 등 영어의 해석이 잘 안되어 이해하기 쉽게 그냥 내가 아는 용어로 정리를 하고 있다. 정확한 용어를 아는 사람이 있다면 이를 수정해 줄 것을 바란다.)
- 미디어위키의 화면 구성
- 미디어위키는 다양한 스킨을 사용하여 화면의 형태를 바꿀 수 있다. 디폴트로 제공되는 스킨은 MonoBook으로 "오픈소스 비즈니스 컨설팅" 위키 페이지도 디폴트 스킨인 MonoBook을 사용하여 구성되어 있다. 스킨마다 화면의 구성이 틀리므로 여기서는 모노북(MonoBook)을 기준으로 설명을 한다.
- 화면은 최상단에 "상단 메뉴"가 있고 좌측에 "좌측 메뉴"가 있고 우측에 페이지의 내용이 표시되는 "본문"이 있다.
- 상단 메뉴
- 로그인을 하면 "내 사용자 문서", "내 사용자 토론", "사용자 환경 설정", "주시문서 목록", "내 기여 목록", "로그아웃" 메뉴가 표시된다.
- 좌측 메뉴
- 기본적으로 박스 형태로 표시되는 좌측 메뉴와 찾기, 도구모음이 표시된다.
- 본문
- 본문은 문서의 내용이 표시되는 부분인데 각 문서마다 상단에 "문서 메뉴"가 있다. "문서 메뉴"에는 "문서", "토론", "편집", "역사", "보호", "삭제", "이동", "주시" 메뉴가 있다.
- 미디어위키 스킨(Skin)
- 미디어위키에서 사용자로 로그인한 후 상단의 "사용자 환경 설정" 메뉴를 선택하면 아래와 같이 스킨을 선택할 수 있는 화면이 표시된다. 다시 말하면 개인별로 다양한 스킨을 선택하여 사용할 수 있다.
- 스킨은 기본적으로 $MEDIAWIKI_HOME//skins 디렉토리에 MonoBook.php 파일과 같은 형태로 저장이 되므로 해당 파일을 수정하여 화면에 표시되는 형태를 변경할 수 있다.
- 미디어위키 사이드바 (MonoBook 스킨을 기준으로 설명)
- 미디어위키의 사이드바는 4개의 요소로 구성되어 있다.
- 미디어위키 로고
- 좌측 메뉴 (Heading과 Link로 구성)
- 찾기
- 도구모음
- 미디어위키 로고
- $MEDIAWIKI_HOME/LocalSettings.php 파일에서 wgLogo 변수에 로고에 사용할 URL을 등록한다.
$wgLogo="";
- 좌측 메뉴 (Heading과 Link로 구성), 도움말
- 자신의 미디어위키에서 http://www.jopenbusiness.com/mediawiki/index.php/MediaWiki:Sidebar 페이지를 수정하여 메뉴를 구성할 수 있다.
- 여기서 mediawiki는 저의 미디어위키에서 준 이름이므로 실제 사용할 URL은 mediawiki 대신 자신이 설정한 정보를 입력하세요.
- 좌측 메뉴 Customize 사례
*navigation **mainpage|accueil **Special:Recentchanges|Recent changes *new heading **portal-url|Forums **http://www.mediawiki.org |MediaWiki home
- 찾기
- 도구모음, 도움말
- 도구모음을 수정하기 위해서는 MediaWiki:Common.js (전체 사용자에게 적용)를 수정하거나 Special:Mypage/monobook.js (특정 사용자에게 적요, pnuskgh로 로그인한 사용자의 경우 Mypage대신 pnuskgh를 사용)를 아래와 같이 수정한다.
function ModifySidebar(action, section, name, link) { try { switch (section) { case "languages": var target = "p-lang"; break; case "toolbox": var target = "p-tb"; break; case "navigation": var target = "p-navigation"; break; default: var target = "p-" + section; break; } if (action == "add") { var node = document.getElementById(target) .getElementsByTagName('div')[0] .getElementsByTagName('ul')[0]; var aNode = document.createElement('a'); var liNode = document.createElement('li'); aNode.appendChild(document.createTextNode(name)); aNode.setAttribute('href', link); liNode.appendChild(aNode); liNode.className='plainlinks'; node.appendChild(liNode); } if (action == "remove") { var list = document.getElementById(target) .getElementsByTagName('div')[0] .getElementsByTagName('ul')[0]; var listelements = list.getElementsByTagName('li'); for (var i = 0; i < listelements.length; i++) { if (listelements[i].getElementsByTagName('a')[0].innerHTML == name || listelements[i].getElementsByTagName('a')[0].href == link) { list.removeChild(listelements[i]); } } } } catch(e) { // lets just ignore what's happened return; } } function CustomizeModificationsOfSidebar() { //adds Special:CategoryTree to toolbox ModifySidebar("add", "toolbox", "CategoryTree", "http://en.wikipedia.org/wiki/Special:CategoryTree"); //removes Special:Upload from toolbox ModifySidebar("remove", "toolbox", "Upload file", "http://en.wikipedia.org/wiki/Special:Upload"); } addOnloadHook(CustomizeModificationsOfSidebar);
- 도구모음에 링크의 추가 또는 삭제
- CustomizeModificationsOfSidebar() 함수에서 ModifySidebar("action", "section", "name", "link"); 함수를 사용하여 링크를 추가하거나 삭제한다.
parameter | value |
action | add. 링크를 추가함, remove. 링크를 삭제함 |
section | 링크를 추가/삭제할 섹션 명 (navigation, toolbox, languages, 기타 사용자가 추가한 섹션명), 도구모음에 링크를 추가/삭제하기 위해서는 toolbox를 사용하세요. |
name | 링크 이름 |
link | 링크 이름을 선택하였을 때 표시할 화면의 URL |
- 화면을 다양한 방법으로 수정하기 위해서 위 JavaScript 페이지(MediaWiki:Common.js, Special:Mypage/monobook.js)에 다양한 코드를 추가하여 수정할 수 있다.
모노북(MonoBook) 구조
$MEDIAWIKI_HOME/skins/MonoBook.php 가 기본 Skin 페이지 이다.
- CSS
- /mediawiki/skins/common/shared.css
- /mediawiki/skins/monobook/main.css
- /mediawiki/skins/common/commonPrint.css
- MediaWiki:Common.css
- MediaWiki:Monobook.css
- JavaScript
- /mediawiki/skins/common/wikibits.js
- MediaWiki:Common.js MediaWiki:Common.js, MediaWiki:Monobook.js MediaWiki:Monobook.js, [Special:Mypage/monobook.js Special:Mypage/monobook.js]]
- /mediawiki/skins/common/ajax.js
- /mediawiki/skins/common/ajaxwatch.js
- 페이지
<div id="p-cactions" class="portlet"> <div class="pBody"> 여기에 페이지 상단의 메뉴가 표시됨 </div> </div> <div id="content"> <div id="bodyContent"> <div id="contentSub"></div> <div id="jump-to-nav"></div> 여기에 페이지 본문이 표시됨 <div class="printfooter"></div> <div class="visualClear"></div> </div> </div>
- 최상단의 개인 메뉴
<div class="portlet" id="p-personal"> <div class="pBody"> 여기에 최상단의 개인 메뉴가 표시됨 </div> </div>
- 좌측 사이드 바
- 로고
<div class="portlet" id="p-logo"> 여기에 로고가 표시됨 </div>
- 좌측 메뉴
- MediaWiki:Sidebar를 파싱하여 표시됨
<div class='portlet' id='p-여기에 이름 지정'> <div class='pBody'> 여기에 메뉴가 표시됨 </div> </div>
- 찾기
<div id="p-search" class="portlet"> <div id="searchBody" class="pBody"> 여기에 검색창이 표시됨 </div> </div>
- 도구모음
<div class="portlet" id="p-tb"> <div class="pBody"> 여기에 도구모음이 표시됨 </div> </div>
- 최하단 footer
<div id="footer"> 여기에 최하단의 footer가 표시됨 </div>
기타 정보
- 시작 화면을 Mediawiki로 변경한다.
- %APACHE_HOME%/htdocs/index.html 파일을 다음과 같이 수정한다.
<html> <head> <meta http-equiv=content-type content="text/html; charset=UTF-8"> <meta http-equiv="refresh" content="1;url=http://www.jopenbusiness.com/mediawiki/"> <title>오픈소스 비즈니스 컨설팅</title> </head> <body> </body> </html>
- Mediawiki의 사이트명을 한글로 변경한다.
- 편집기의 기능을 사용하여 %MEDIAWIKI_HOME%/config/LocalSettings.php 파일을 UTF-8 형태로 변경하여 저장한다.
- LocalSettings.php에서 다음과 같이 변경하고자 하는 사이트 명으로 변경한다.
$wgSitename = "오픈소스 비즈니스 컨설팅";
- Upload 파일의 사이즈 제한을 변경한다.
- %PHP_HOME/php.ini 파일의 다음 정보를 수정한다.
post_max_size = 50M upload_max_filesize = 50M
- Mediawiki에서 첨부할 수 있는 파일의 확장자를 추가한다.
- Default로 허용되는 첨부파일의 확장자 : png, gif, jpg, and jpeg
- %MEDIAWIKI_HOME%/config/LocalSettings.php 파일에 다음을 추가한다.
- 단 require_once( "$IP/includes/DefaultSettings.php" ); 라인 아래에 추가해야 한다.
$wgUploadFile = true; $wgFileExtensions[] = "zip"; $wgFileExtensions[] = "pdf"; $wgFileExtensions[] = "doc"; $wgFileExtensions[] = "ppt"; $wgFileExtensions[] = "xls"; $wgFileExtensions[] = "docx"; $wgFileExtensions[] = "pptx"; $wgFileExtensions[] = "xlsx";
- Mediawiki Monobook에 적용할 CSS를 수정한다.
http://www.jopenbusiness.com/mediawiki/index.php/MediaWiki:Monobook.css
- 외부 링크를 새창에서 띄운다.
- %MEDIAWIKI_HOME%/includes/Linker.php에서 다음을 수정한다.
function getExternalLinkAttributes( $link, $text, $class= ) { ...... $r .= " target=\"_blank\""; //--- 이 라인을 추가한다. return $r; }
- 미디어위키 화면 구성 및 호출 URL
- 미디어위키는 기본적으로 스킨을 가지고 있는데 디폴트로 사용되는 스킨은 /skins/MonoBook.php 입니다.
- 그리고 MonoBook.php를 우선 급히 살펴보니 프레임으로 나뉘어져 있지 않고 하나의 페이지로 되어 있습니다
- 문서(TestDoc)의 URL을 저의 위키 URL을 기준으로 사용 예를 들어 보겠습니다.
조회시 : http://www.jopenbusiness.com/mediawiki/index.php/TestDoc 또는 http://www.jopenbusiness.com/mediawiki/index.php?title=TestDoc --> TextDoc 라는 페이지가 기존에 있을 경우에는 해당 페이지가 표시됨 --> TextDoc 라는 페이지가 기존에 없을 경우에는 페이지가 없다고 알리고 페이지 작성 링크가 표시됨
수정시 : http://www.jopenbusiness.com/mediawiki/index.php?title=TestDoc&action=edit --> TextDoc 라는 페이지가 기존에 있을 경우에는 해당 페이지 수정 화면이 표시됨 --> TextDoc 라는 페이지가 기존에 없을 경우에는 해당 페이지가 없다고 알리고 페이지 작성 화면이 표시됨
관리자 가이드
한글 설정
vi LocalSettings.php
$wgLanguageCode = "ko"; $wgShellLocale = "ko_KR.utf8";
Email 설정
권한 설정
Mediawiki에서 권한을 설정하기 위해서는 다음과 같은 절차에 따라 권한을 지정한다.
- 사용자 지정 권한 그룹을 생성하고 권한을 할당한다.
- 관리자로 로그인하여 사용자에게 권한 그룹을 할당한다.
- 권한을 설정하기 위해 $MEDIAWIKI_HOME/includes/DefaultSettings.php에서 권한 그룹을 생성한다.
- "$wgGroupPermissions['newGroup']['right'] = boolean;"의 형식으로 선언하여 권한 그룹(newGroup)을 생성하여 권한(right)을 지정한다.
- '*' 그룹은 모든 사용자에 적용되며 'user' 그룹은 로그인한 사용자에 적용되는 예약된 그룹명이다.
- 참조 : http://www.mediawiki.org/wiki/Help:User_rights/ko
$wgGroupPermissions['newGroup']['bot'] = true; $wgGroupPermissions['newGroup']['block'] = true; $wgGroupPermissions['newGroup']['delete'] = true;
- newGroup 라는 권한 그룹을 만들어 권한(bot, block, delete)을 지정한다.
- 미디어위키에 관리자로 로그인하여 사용자에게 권한 그룹을 할당한다.
- 관리자 아이디로 로그인한다.
- 도구모음에서 "특수 문서 목록" (Special:SpecialPages)을 선택한다.
- 맨 하단에 관리자에게만 표시되는 메뉴인 "사용자 권한 관리"를 선택한다.
- "사용자 이름"에 권한을 변경할 사용자의 아이디를 입력하고 "사용자 그룹 편집" 버튼을 클릭한다.
- "현재 권한"과 "가능한 권한"이 표시되는 곳에 새로 추가한 권한 그룹(newGroup)이 표시되는 것을 확인할 수 있다.
- 이동을 원하는 권한을 선택한 후 "사용자 권한 저장" 버튼을 클릭하면 선택된 권한이 이동되어 저장된다.
이상과 같이 권한 그룹을 DefaultSettings.php에 추가하고 관리자로 로그인하여 사용자에게 권한 그룹을 할당함으로써 권한을 설정할 수 있다.
설정 정보
/home/www/mediawiki/LocalSettings.php에 다음을 설정할 수 있다.
- 외부 이미지를 위키에 표시 한다.
$wgAllowExternalImages = true;
- 완전한 HTML 사용 허용
$wgRawHtml = true;
버전 확인
Mediawiki 구조
- 서비스 호출 parameter
- title : MediaWiki_1.11.2 (페이지명)
- action : view, edit, ...
- require_once( './includes/WebStart.php' ); # Initialise common code
- require_once( './StartProfiler.php' ); # Start profiler
- require_once( dirname(__FILE__).'/includes/ProfilerStub.php' );
- require_once( './includes/Defines.php' ); # Load up some global defines.
- require_once( './LocalSettings.php' );
- require_once( "$IP/includes/DefaultSettings.php" );
- require_once("extensions/FCKeditor.php");
- require_once( './includes/OutputHandler.php' );
- require_once( './includes/Setup.php' );
- require_once( "includes/Wiki.php" ); # Initialize MediaWiki base class
- require_once( $IP . '/includes/AjaxDispatcher.php' );
- $wgArticle = $mediaWiki->initialize ( $wgTitle, $wgOut, $wgUser, $wgRequest );
- $this->initializeSpecialCases( $title, $output, $request )
- $title->getInterwiki() : $output->redirect( $url );
- $targetUrl = $title->getFullURL() : $output->redirect( $targetUrl, '301');
- SpecialPage::executePath( $title );
- $this->initializeArticle( $title, $request )
- $article = $this->articleFromTitle( $title );
- $article->loadPageData($article->pageDataFromTitle($dbr, $title));
- $target = $article->followRedirect();
- $rarticle->loadPageData($rarticle->pageDataFromTitle($dbr,$target));
- $this->performAction( $output, $article, $title, $user, $request );
- $output->redirect( $article );
Database 구조
- 사용자 관련
- user
- watchlist
- external_user
- user_properties
- user_groups
- user_former_groups
- user_newtalk
- ipblocks
- 페이지
- page : 페이지
- archive : 삭제된 페이지
- revision : "역사"
- text : "역사"에 history로 기록된 페이지
- recentchanges : "최근 수정 문서"
- page_restrictions
- page_props
- protected_titles
- category
- categorylinks
- searchindex
- redirect
- templatelinks
- iwlinks
- langlinks
- externallinks
- pagelinks
- 파일
- filearchive
- image
- imagelinks
- oldimage
- uploadstash
- 통계 및 로그
- site_stats
- logging
- log_search
- hitcounter
- 리소스로더
- msg_resource
- msg_resource_links
- module_deps
- 태그
- change_tag
- tag_summary
- valid_tag
- 캐시 관련
- objectcache
- config
- i10n_cache
- transcache
- querycache
- querycahce_info
- querycachetwo
- 파서 캐시
- testitem
- testrun
- 기타
- trackbacks
- job
- updatelog
- interwiki
Database 데이터 정리
- 삭제된 문서 삭제
select count(*) from jopenarchive; truncate jopenarchive; select count(*) from jopenarchive;
- "최근 수정 문서" 목록 삭제
select count(*) from jopenrecentchanges; delete from jopenrecentchanges; commit; select count(*) from jopenrecentchanges;
- "역사" 목록 삭제
- 맨 마지막 rev_id를 제외한 레코드 삭제
select count(*) from jopenrevision; create table zztemp select rev_page, max(rev_id) as rev_id from jopenrevision group by rev_page; select max(page_id) from jopenpage; delete from jopenrevision where 0 <= rev_page and rev_page < 1000 and rev_id not in (select rev_id from zztemp); commit; delete from jopenrevision where 4000 <= rev_page and rev_page < 5000 and rev_id not in (select rev_id from zztemp); commit; select count(*) from jopenrevision; drop table zztemp;
- "역사"와 관련된 문서 삭제
- revision 테이블에 없는 rev_text_id에 해당하는 문서 삭제
select count(*) from jopentext; delete from jopentext where 0 <= old_id and old_id < 100000 and old_id not in (select rev_text_id from jopenrevision); commit; delete from jopentext where 700000 <= old_id and old_id < 800000 and old_id not in (select rev_text_id from jopenrevision); commit; select count(*) from jopenrevision;
- 사용자 페이지 삭제
delete from jopenpage where page_namespace = 2;
Google AdSense 코드 추가
vi includes/OutputPage.php
$pieces[] = "<script async src=\"//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js\"></script>\n<script>\n(adsbygoogle = window.adsbygoogle || []).push({\ngoogle_ad_client: \"ca-pub-1498049923305655\",\nenable_page_level_ads: true\n});\n</script>\n"; $pieces[] = Html::closeElement( 'head' ); #--- 이 라인 앞에 추가할 것
현안 문제점
- Mediawiki에서 한글 파일 업로드시 오류가 발생하고 있다.
- 검색을 통해 고수의 의견을 청취하려고 했는데 제대로 된 해결책이 없었다.
- URL에서 %nn 형태가 아니라 바로 한글을 사용하는 것도 검토해야 겠다.
- 문자셋과 인코딩에 Java로 프로그램 할 때 필요한 encoding 문제를 해결하는 것을 정리해 두었는데 여기에 PHP도 추가로 정리를 해야 겠다.
- $MEDIAWIKI_HOME/include/SpecialUpload.php
434 line : 실제 파일 업로드 처리 $status = $this->mLocalFile->upload( $this->mTempPath, $this->mComment, $pageText, File::DELETE_SOURCE, $this->mFileProps ); 328 line : mLocalFile이 선언된 위치 $this->mLocalFile = wfLocalFile( $nt );
- 참고 문헌 : utf8 한글화일 첨부-추가