Mediawiki에 대한 전반적인 사항을 정리한다.
위키피디아에서 사용된 대규모 사용자를 위한 위키 서비스 이다.


CentOS에 MediaWiki 1.23.3 설치



- 사전 준비 사항

- [CentOS](CentOS.md) 설치
- [MySQL](MySQL.md) 설치
- [Apache HTTP Server](Apache HTTP Server.md) 설치
- [PHP](PHP 5.2.5.md) 설치

- 다운로드 사이트에서 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을 기준으로 작성한 것 입니다. 설치 환경이 틀릴 경우에는 별도의 주석을 달아 주세요.
### 설치전 사전 준비 사항 {{wamp 준비}}
### Mediawiki용 DB 설정 {{MySQL DB 설정|Mediawiki|mediawikidb|mediawiki}} ### Mediawiki 설치 {{Apache 접속 설정|mediawiki}}
- http://www.mediawiki.org/wiki/Download에서 "mediawiki-1.11.2.tar.gz"를 다운로드 한다.
- 다운로드한 파일의 압축을 풀어 "d:/www/mediawiki1112" 로 복사합니다.
![다운로드](img/Mediawiki1112_install_01.png)
- http://localhost/mediawiki/에 화면에서 "setup the wiki"를 클릭하여 설정을 시작한다.
- 아이디와 암호를 물을 경우 아이디("Admin")과 암호를 입력한다.
![환경 설정 초기 화면](img/Mediawiki1112_install_11.png)
- 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
![환경 설정](img/Mediawiki1112_install_12.png) - 설정을 완료하면 설정 입력한 값이 %MEDIAWIKI_HOME%/config/LocalSettings.php 파일에 저장된다.

- Mediawiki 환경 설정을 완료한다.
![환경 설정 완료](img/Mediawiki1112_install_13.png)
- %MEDIAWIKI_HOME%/config/LocalSettings.php 파일을 %MEDIAWIKI_HOME%로 복사하고 %MEDIAWIKI_HOME%/config 디렉토리를 삭제한다.
- 이제 http://localhost/mediawiki로 접속하여 사용합니다.

- %MEDIAWIKI_HOME%/config/LocalSettings.php 파일에 [TimeZone](http://www.theprojects.org/dev/zone.txt)을 설정한다.

$wgLocaltimezone="Asia/Seoul"; $wgLocalTZoffset=+540;


### Mediawiki에서 ImageMagick를 사용하도록 설정 - [ImageMagick 6.3.9 Q16](ImageMagick 6.3.9.md)을 설치한다.

#--- 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 디렉토리 아래 다음 이름의 디렉토리를 추가한다.
1. archive
1. thumb
1. temp
1. deleted

### CentOS에서 ImageMagick 설정 - ImageMagick 설치
- CentOS 5.5에서는 ImageMagick 6.2.8 가 설치됩니다.
{{code |margin-left:30px; |yum install ImageMagick ImageMagick-devel }}
- vi /etc/php.d/imagick.ini
{{code |margin-left:30px; |extension=imagick.so }}
- php -m | PHP에 설치된 모듈 목록 보기

### Mediawiki에서 hMail Server를 사용하도록 설정 - [hMail Server 4.4.1](hMail Server 4.4.1.md)을 설치한다.

- %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']('wysiwyg'.md)=true;
    $wgGroupPermissions['*']['wysiwyg']('wysiwyg'.md) = true;          //Everyone can use (if can edit)...
    $wgDefaultUserOptions['cke_show']('cke_show'.md) = 'richeditor';    //Enable CKEditor
    $wgDefaultUserOptions['riched_use_toggle']('riched_use_toggle'.md) = false;  //Editor can toggle CKEditor/WikiText
    $wgDefaultUserOptions['riched_start_disabled']('riched_start_disabled'.md) = false; //Important!!! else bug...
    $wgDefaultUserOptions['riched_toggle_remember_state']('riched_toggle_remember_state'.md) = true; //working/bug?
    $wgDefaultUserOptions['riched_use_popup']('riched_use_popup'.md) = false;   //Deprecated
    
    $wgFCKEditorExcludedNamespaces[](.md) = NS_MEDIAWIKI; $wgFCKEditorExcludedNamespaces[](.md) = NS_TEMPLATE;
    require_once( "$IP/extensions/WikiEditor/WikiEditor.php" );
    $wgDefaultUserOptions['usebetatoolbar']('usebetatoolbar'.md) = 1; $wgDefaultUserOptions['usebetatoolbar-cgd']('usebetatoolbar-cgd'.md) = 1; $wgDefaultUserOptions['wikieditor-preview']('wikieditor-preview'.md) = 0; $wgDefaultUserOptions['wikieditor-publish']('wikieditor-publish'.md) = 0; $wgLocalisationUpdateDirectory = "$IP/cache";
    1. ## enableSemantics( );
    1. ## include_once( "$IP/extensions/SemanticForms/SemanticForms.php" );

    1. ## $wgFCKEditorExcludedNamespaces[](.md) = SF_NS_FORM;
    1. ## $wgFCKEditorExcludedNamespaces[](.md) = SMW_NS_PROPERTY
    - 서비스 재기동
    service httpd restart
    
    - 참고 문서

    - 설치 가이드 : https://github.com/Mediawiki-wysiwyg/WYSIWYG-CKeditor

    ### FCKeditor extension by Mafs FCKeditor를 미디어위키에서 사용할 수 있도록 한다. 단 미디어위키의 일부 문법만 지원이 되므로 이를 확인하고 사용하여야 한다.
    - [FCKeditor 다운로드 사이트](http://www.fckeditor.net/download)에서 FCKeditor_2.6.3b.zip을 다운로드 한다.
    ![설치 시작](img/Mediawiki_fckeditor_01.png)
    - 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

    - 참조 : [Extension:FCKeditor_(by_Mafs)](http://www.mediawiki.org/wiki/Extension:FCKeditor_(by_Mafs))
    - 참조 : [Extension:FCKeditor_(by_FCKeditor_and_Wikia)](http://www.mediawiki.org/wiki/Extension:FCKeditor_(by_FCKeditor_and_Wikia))

    ### VisualEditor
    MediaWiki의 편집 화면에서 시각화된 도구를 사용하기 위해서는 [VisualEditor Extension](https://www.mediawiki.org/wiki/Extension:VisualEditor)을 사용 한다.
    [다운로드 사이트](https://www.mediawiki.org/wiki/Special:ExtensionDistributor/VisualEditor)로부터 원하는 버전을 다운로드 한다.

    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](https://www.mediawiki.org/wiki/Parsoid/Setup)를 구성 한다.

    #--- 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 파일

    - [다운로드 사이트](http://www.mediawiki.org/wiki/Download)에서 최신 버전의 "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한 사항을 반영 한다.

    - 참고 문헌
    - [MediaWiki Upgrading](http://www.mediawiki.org/wiki/Manual:Upgrading)
    - [MediaWiki Upgrading (한글)](http://www.mediawiki.org/wiki/Manual:Upgrading/ko)
    - [MySQL_5.0.51 - 백업 및 복구](MySQL_5.0.51.md#백업 및 복구.md)

    ### Upgrade from 1.20.5 to 1.23.3 - 전제 사항
    - MediaWiki가 설치된 폴더 : /cloudnas/www/html/mediawiki/
    - 설치 작업용 임시 폴더 : /cloudnas/install/
    - 백업 폴더 : /cloudnas/backup/
    - MediaWiki 1.23.3 설치 요구 사항
    - [PHP](PHP.md) 5.3.2+
    - [MySQL](MySQL.md) 5.0.2+

    - MediaWiki 버전 확인
    - http://www.jopenbusiness.com/mediawiki/index.php/특수기능:버전

    - 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 버전 확인
    - http://www.jopenbusiness.com/mediawiki/index.php/특수:버전

    - 참고 문헌
    - [미디어위키 - 업그레이드, 2014.09](http://jmnote.com/wiki/%EB%AF%B8%EB%94%94%EC%96%B4%EC%9C%84%ED%82%A4_%EC%97%85%EA%B7%B8%EB%A0%88%EC%9D%B4%EB%93%9C)

    ## 사용자 가이드 ### 좌측 메뉴 수정 미디어위키(mediawiki)를 사용하면서 제일 먼저 하게 되는 것이 좌측 메뉴에 자신만의 메뉴를 추가하는 것 이다. 여기에 미디어위키의 화면과 메뉴를 수정하는 방법을 정리한다. (Sidebar 등 영어의 해석이 잘 안되어 이해하기 쉽게 그냥 내가 아는 용어로 정리를 하고 있다. 정확한 용어를 아는 사람이 있다면 이를 수정해 줄 것을 바란다.)

    - 미디어위키의 화면 구성
    미디어위키는 다양한 스킨을 사용하여 화면의 형태를 바꿀 수 있다. 디폴트로 제공되는 스킨은 MonoBook으로 "오픈소스 비즈니스 컨설팅" 위키 페이지도 디폴트 스킨인 MonoBook을 사용하여 구성되어 있다. 스킨마다 화면의 구성이 틀리므로 여기서는 모노북(MonoBook)을 기준으로 설명을 한다.
    화면은 최상단에 "상단 메뉴"가 있고 좌측에 "좌측 메뉴"가 있고 우측에 페이지의 내용이 표시되는 "본문"이 있다. - 상단 메뉴
    :로그인을 하면 "내 사용자 문서", "내 사용자 토론", "사용자 환경 설정", "주시문서 목록", "내 기여 목록", "로그아웃" 메뉴가 표시된다. - 좌측 메뉴
    :기본적으로 박스 형태로 표시되는 좌측 메뉴와 찾기, 도구모음이 표시된다. - 본문
    :본문은 문서의 내용이 표시되는 부분인데 각 문서마다 상단에 "문서 메뉴"가 있다. "문서 메뉴"에는 "문서", "토론", "편집", "역사", "보호", "삭제", "이동", "주시" 메뉴가 있다.

    - 미디어위키 스킨(Skin)
    - 미디어위키에서 사용자로 로그인한 후 상단의 "사용자 환경 설정" 메뉴를 선택하면 아래와 같이 스킨을 선택할 수 있는 화면이 표시된다. 다시 말하면 개인별로 다양한 스킨을 선택하여 사용할 수 있다.
    ![그림:Mediawiki_set_skin.png](img/Mediawiki_set_skin.png) - 스킨은 기본적으로 $MEDIAWIKI_HOME//skins 디렉토리에 MonoBook.php 파일과 같은 형태로 저장이 되므로 해당 파일을 수정하여 화면에 표시되는 형태를 변경할 수 있다.


    - 미디어위키 사이드바 (MonoBook 스킨을 기준으로 설명)
    미디어위키의 사이드바는 4개의 요소로 구성되어 있다. 1. 미디어위키 로고
    1. 좌측 메뉴 (Heading과 Link로 구성)
    1. 찾기
    1. 도구모음

    - 미디어위키 로고
    :$MEDIAWIKI_HOME/LocalSettings.php 파일에서 wgLogo 변수에 로고에 사용할 URL을 등록한다.

    $wgLogo="http://www.jopenbusiness.com/logo.jpg";


    - 좌측 메뉴 (Heading과 Link로 구성), [도움말](http://www.mediawiki.org/wiki/Manual:Interface/Sidebar.md#Customizing_the_sidebar)
    자신의 미디어위키에서 [http://www.jopenbusiness.com/mediawiki/index.php/MediaWiki:Sidebar](MediaWiki:Sidebar.md) 페이지를 수정하여 메뉴를 구성할 수 있다. :여기서 mediawiki는 저의 미디어위키에서 준 이름이므로 실제 사용할 URL은 mediawiki 대신 자신이 설정한 정보를 입력하세요. - 좌측 메뉴 Customize 사례

    navigation *mainpage|accueil *Special:Recentchanges|Recent changes *new heading *portal-url|Forums **http://www.mediawiki.org |MediaWiki home

        ![좌측 메뉴 사례](img/sidebar_02.png)
        - [MediaWiki:Sidebar](MediaWiki:Sidebar.md)의 구조
    - *Heading : 좌측 메뉴의 섹션을 구분하는 문자열(Heading)
    - **target|text : target. text를 눌렀을 때 이동할 페이지 URL, text. 화면에 표시할 문자열

    - 찾기

    - 도구모음, [도움말](http://www.mediawiki.org/wiki/Manual:Interface/Sidebar.md#content_of_sidebar_and_toolbox_.28javascript.29)
    - 도구모음을 수정하기 위해서는 [[MediaWiki:Common.js|MediaWiki:Common.js]] (전체 사용자에게 적용)를 수정하거나 [Special:Mypage/monobook.js](Special:Mypage/monobook.js.md) (특정 사용자에게 적요, 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(listelementsi); } } }
    } 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"); 함수를 사용하여 링크를 추가하거나 삭제한다. {| cellspacing="1" cellpadding="1" border="1" width="100%" |- | width="20%" align="center" |parameter | width="80%" align="center" |value |- |action |add. 링크를 추가함, remove. 링크를 삭제함 |- |section |링크를 추가/삭제할 섹션 명 (navigation, toolbox, languages, 기타 사용자가 추가한 섹션명), 도구모음에 링크를 추가/삭제하기 위해서는 toolbox를 사용하세요. |- |name |링크 이름 |- |link |링크 이름을 선택하였을 때 표시할 화면의 URL |}
    - 화면을 다양한 방법으로 수정하기 위해서 위 JavaScript 페이지([[MediaWiki:Common.js|MediaWiki:Common.js]], [Special:Mypage/monobook.js](Special:Mypage/monobook.js.md))에 다양한 코드를 추가하여 수정할 수 있다.

    ### 모노북(MonoBook) 구조 $MEDIAWIKI_HOME/skins/MonoBook.php 가 기본 Skin 페이지 이다.
    - CSS
    1. [/mediawiki/skins/common/shared.css](http://www.jopenbusiness.com/mediawiki/skins/common/shared.css)
    1. [/mediawiki/skins/monobook/main.css](http://www.jopenbusiness.com/mediawiki/skins/monobook/main.css)
    1. [/mediawiki/skins/common/commonPrint.css](http://www.jopenbusiness.com/mediawiki/skins/common/commonPrint.css)
    1. [MediaWiki:Common.css](MediaWiki:Common.css.md)
    1. [MediaWiki:Monobook.css](MediaWiki:Monobook.css.md)

    - JavaScript
    1. [/mediawiki/skins/common/wikibits.js](http://www.jopenbusiness.com/mediawiki/skins/common/wikibits.js)
    1. [[MediaWiki:Common.js MediaWiki:Common.js]], [MediaWiki:Monobook.js MediaWiki:Monobook.js]], [Special:Mypage/monobook.js Special:Mypage/monobook.js](MediaWiki:Monobook.js_MediaWiki:Monobook.js]],_[Special:Mypage/monobook.js_Special:Mypage/monobook.js.md)
    1. [/mediawiki/skins/common/ajax.js](http://www.jopenbusiness.com/mediawiki/skins/common/ajax.js)
    1. [/mediawiki/skins/common/ajaxwatch.js](http://www.jopenbusiness.com/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](MediaWiki:Sidebar.md)를 파싱하여 표시됨

    <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="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에서 hMail Server를 사용하도록 설정](HMail_Server_4.4.1.md#Mediawiki에서 hMail Server를 사용하도록 설정.md)

    ### 권한 설정 Mediawiki에서 권한을 설정하기 위해서는 다음과 같은 절차에 따라 권한을 지정한다. 1. 사용자 지정 권한 그룹을 생성하고 권한을 할당한다.
    1. 관리자로 로그인하여 사용자에게 권한 그룹을 할당한다.


    - 권한을 설정하기 위해 $MEDIAWIKI_HOME/includes/DefaultSettings.php에서 권한 그룹을 생성한다.
    - "$wgGroupPermissions['newGroup']['right']('right'.md) = 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)을 지정한다.
    
    - 미디어위키에 관리자로 로그인하여 사용자에게 권한 그룹을 할당한다.
    1. 관리자 아이디로 로그인한다.
    1. 도구모음에서 ["특수 문서 목록"](http://www.jopenbusiness.com/mediawiki/index.php/%ED%8A%B9%EC%88%98%EA%B8%B0%EB%8A%A5:Specialpages) (Special:SpecialPages)을 선택한다.
    1. 맨 하단에 관리자에게만 표시되는 메뉴인 "사용자 권한 관리"를 선택한다.
    1. "사용자 이름"에 권한을 변경할 사용자의 아이디를 입력하고 "사용자 그룹 편집" 버튼을 클릭한다.
    1. "현재 권한"과 "가능한 권한"이 표시되는 곳에 새로 추가한 권한 그룹(newGroup)이 표시되는 것을 확인할 수 있다.
    1. 이동을 원하는 권한을 선택한 후 "사용자 권한 저장" 버튼을 클릭하면 선택된 권한이 이동되어 저장된다.

    이상과 같이 권한 그룹을 DefaultSettings.php에 추가하고 관리자로 로그인하여 사용자에게 권한 그룹을 할당함으로써 권한을 설정할 수 있다.
    ### 설정 정보 /home/www/mediawiki/LocalSettings.php에 다음을 설정할 수 있다.
    - 외부 이미지를 위키에 표시 한다.

    $wgAllowExternalImages = true;


    - 완전한 HTML 사용 허용

    $wgRawHtml = true;


    ### 버전 확인 - http://www.jopenbusiness.com/mediawiki/index.php/특수기능:버전

    ### 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[] = "\n\n";
    
    $pieces[](.md) = Html::closeElement( 'head' );          #--- 이 라인 앞에 추가할 것

    ## 현안 문제점 - Mediawiki에서 한글 파일 업로드시 오류가 발생하고 있다.
    검색을 통해 고수의 의견을 청취하려고 했는데 제대로 된 해결책이 없었다. URL에서 %nn 형태가 아니라 바로 한글을 사용하는 것도 검토해야 겠다. [문자셋과 인코딩](문자셋과_인코딩.md)에 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 );

    ```


    참고 문헌



    - https://zetawiki.com/wiki/분류:미디어위키
    - [Google Analytics](Google Analytics.md)
    - [도움말](http://www.mediawiki.org/wiki/Help:Contents/ko)
    - [http://www.mediawiki.org/wiki/Manual:Configuration_settings/ko 설정] [[Category:오픈소스|Category:오픈소스]]
    [[Category:위키|Category:위키]]
    분류: [WebSite](분류_WebSite.md)
    공유하기