MediaWiki: различия между версиями

Материал из Ай да Linux Wiki
Перейти к навигации Перейти к поиску
(Новая страница: «== Установка MediaWiki == Установка крайне проста: скачиваем последнюю версию с официального са...»)
 
 
(не показаны 3 промежуточные версии этого же участника)
Строка 9: Строка 9:
 
После установки хорошо бы ознакомиться с [http://www.mediawiki.org/wiki/Manual:System_administration/ru задачами администратора MediaWiki], где сказано что ещё можно доделать.
 
После установки хорошо бы ознакомиться с [http://www.mediawiki.org/wiki/Manual:System_administration/ru задачами администратора MediaWiki], где сказано что ещё можно доделать.
  
== Как сделать (кратко) ==
+
== Как настроить (кратко) ==
  
 
Хорошие краткие инструкции (ЧаВО или FAQ) есть на официальном сайте MediaWiki как на [http://www.mediawiki.org/wiki/Manual:FAQ/ru русском языке], так и на [http://www.mediawiki.org/wiki/Manual:FAQ английском].
 
Хорошие краткие инструкции (ЧаВО или FAQ) есть на официальном сайте MediaWiki как на [http://www.mediawiki.org/wiki/Manual:FAQ/ru русском языке], так и на [http://www.mediawiki.org/wiki/Manual:FAQ английском].
 
  
 
=== Запрещаем редактирование не авторизованным пользователям: ===
 
=== Запрещаем редактирование не авторизованным пользователям: ===
<pre>
+
<source lang="bash">
 
$wgGroupPermissions['*']['createaccount'] = true;
 
$wgGroupPermissions['*']['createaccount'] = true;
 
$wgGroupPermissions['*']['read'] = true;
 
$wgGroupPermissions['*']['read'] = true;
Строка 21: Строка 20:
 
$wgGroupPermissions['*']['createpage'] = false;
 
$wgGroupPermissions['*']['createpage'] = false;
 
$wgGroupPermissions['*']['createtalk'] = false;
 
$wgGroupPermissions['*']['createtalk'] = false;
</pre>
+
</source>
 
 
  
 
=== Делаем ссылки короткими ===
 
=== Делаем ссылки короткими ===
  
 
По умолчанию ссылки выглядят так: <nowiki>http://domain.ru/wiki/index.php?title=article</nowiki>. Чтобы сделать их такими же короткими и наглядными, как в Википедии, есть [http://www.mediawiki.org/wiki/Manual:Short_URL много способов]. Один из них - это добавить в '''LocalSettings.php''':<br>  
 
По умолчанию ссылки выглядят так: <nowiki>http://domain.ru/wiki/index.php?title=article</nowiki>. Чтобы сделать их такими же короткими и наглядными, как в Википедии, есть [http://www.mediawiki.org/wiki/Manual:Short_URL много способов]. Один из них - это добавить в '''LocalSettings.php''':<br>  
<pre>$wgScriptPath  = "/w";   
+
<source lang="bash">$wgScriptPath  = "/w";   
 
$wgArticlePath  = "/wiki/$1";
 
$wgArticlePath  = "/wiki/$1";
 
$wgUsePathInfo  = true;
 
$wgUsePathInfo  = true;
</pre>  
+
</source>
  
 
где '''$wgScriptPath''' - каталог установки вики-сайта, а '''$wgArticlePath''' - виртуальный каталог,&nbsp;который нужно будет указать в URL при обращении к статье, имя не должно совпадать с реальным каталогом.
 
где '''$wgScriptPath''' - каталог установки вики-сайта, а '''$wgArticlePath''' - виртуальный каталог,&nbsp;который нужно будет указать в URL при обращении к статье, имя не должно совпадать с реальным каталогом.
  
 
Затем, в корневом каталоге сайта (т.е. рядом с каталогом "w") нужно создать файл '''.htaccess''':<br>  
 
Затем, в корневом каталоге сайта (т.е. рядом с каталогом "w") нужно создать файл '''.htaccess''':<br>  
<pre>RewriteEngine On
+
<source lang="bash">RewriteEngine On
 
RewriteRule ^wiki/(.*)$ /w/index.php?title=$1 [PT,L,QSA]
 
RewriteRule ^wiki/(.*)$ /w/index.php?title=$1 [PT,L,QSA]
 
RewriteRule ^wiki/*$ /w/index.php [L,QSA]
 
RewriteRule ^wiki/*$ /w/index.php [L,QSA]
 
RewriteRule ^/*$ /w/index.php [L,QSA]
 
RewriteRule ^/*$ /w/index.php [L,QSA]
</pre>  
+
</source>  
  
 
Для лучшего понимания этого кода можно подробней ознакомиться с [http://www.shtogrin.com/library/web/mod_rewrite/doc/RewriteRule/ синтаксисом дерективы RewriteRule].
 
Для лучшего понимания этого кода можно подробней ознакомиться с [http://www.shtogrin.com/library/web/mod_rewrite/doc/RewriteRule/ синтаксисом дерективы RewriteRule].
Строка 45: Строка 43:
 
Если на сервере установлено несклько виртуальных хостов, то нужно ещё добавить&nbsp; настройку виртуального хоста в секцию '''&lt;VirtualHost&gt;''':  
 
Если на сервере установлено несклько виртуальных хостов, то нужно ещё добавить&nbsp; настройку виртуального хоста в секцию '''&lt;VirtualHost&gt;''':  
  
<pre>RewriteEngine On
+
<source lang="bash">RewriteEngine On
RewriteOptions Inherit
+
RewriteOptions Inherit</source>
</pre>  
+
 
  
 
и подключить модуль rewrite, после чего перезагрузить сервер. В Debian это делается следующим образом:  
 
и подключить модуль rewrite, после чего перезагрузить сервер. В Debian это делается следующим образом:  
<pre>ln -s /etc/apache2/mods-available/rewrite.load /etc/apache2/mods-enabled
+
<source lang="bash">ln -s /etc/apache2/mods-available/rewrite.load /etc/apache2/mods-enabled
 
/etc/init.d/apache2 restart
 
/etc/init.d/apache2 restart
</pre>
+
</source>
  
 
=== Добавляем логотип ===
 
=== Добавляем логотип ===
  
 
Картинку не более 135х135 пикселей с прозрачным фоном загружаем в папку images и добавляем в '''LocalSettings.php''':<br>  
 
Картинку не более 135х135 пикселей с прозрачным фоном загружаем в папку images и добавляем в '''LocalSettings.php''':<br>  
<pre>$wgLogo = “{$wgScriptPath}/images/logofinal.png”;</pre>
+
<source lang="bash">$wgLogo = “{$wgScriptPath}/images/logofinal.png”;</source>
<br>
 
  
 
=== '''Меняем favicon''' ===
 
=== '''Меняем favicon''' ===
Строка 67: Строка 64:
 
* положить как обычно в корневой каталог сайта, т.е. на одном уровне с каталогом "w/" или  
 
* положить как обычно в корневой каталог сайта, т.е. на одном уровне с каталогом "w/" или  
 
* скопировать изображение в папку images и добавить в '''LocalSettings.php''':
 
* скопировать изображение в папку images и добавить в '''LocalSettings.php''':
$wgFavicon = "$wgScriptPath/images/favicon.ico";
+
<source lang="bash">$wgFavicon = "$wgScriptPath/images/favicon.ico";</source>
  
 
=== Настраиваем навигационную панель (слева) ===
 
=== Настраиваем навигационную панель (слева) ===
Строка 75: Строка 72:
 
'''Синтаксис:'''
 
'''Синтаксис:'''
  
<pre>
+
<source lang="bash">
 
* <название блока 1>
 
* <название блока 1>
 
** <ссылка на статью 1>|<отображаемый текст 1>
 
** <ссылка на статью 1>|<отображаемый текст 1>
Строка 81: Строка 78:
 
* <название блока 2>
 
* <название блока 2>
 
** <ссылка на статью 3>|<отображаемый текст 3>
 
** <ссылка на статью 3>|<отображаемый текст 3>
** <ссылка на статью 4>|<отображаемый текст 4>
+
** <ссылка на статью 4>|<отображаемый текст 4></source>
</pre>  
 
  
 
'''Пример:'''
 
'''Пример:'''
<pre>
+
<source lang="bash">
 
* navigation
 
* navigation
 
** mainpage|Начальная
 
** mainpage|Начальная
Строка 99: Строка 95:
 
* SEARCH
 
* SEARCH
 
* TOOLBOX
 
* TOOLBOX
</pre>
+
</source>
 
 
  
 
=== Добавляем слева ссылки на другие вики===
 
=== Добавляем слева ссылки на другие вики===
  
 
В случае многоязыковых проектов достаточно добавить в статью  
 
В случае многоязыковых проектов достаточно добавить в статью  
<pre>[[lang:Имя статьи]]</pre>
+
<source lang="bash">[[lang:Имя статьи]]</source>
  
 
где '''lang''' - префикс языка. См. файл '''languages/Names.php'''
 
где '''lang''' - префикс языка. См. файл '''languages/Names.php'''
Строка 112: Строка 107:
  
 
Например, в таблице ссылок интервики создали ссылку '''my-wiki''', тогда в Names.php добавляем строчку (в рамках объявления массива):
 
Например, в таблице ссылок интервики создали ссылку '''my-wiki''', тогда в Names.php добавляем строчку (в рамках объявления массива):
'my-wiki' => 'My Wiki',  # Link to my wiki
+
<source lang="bash">'my-wiki' => 'My Wiki',  # Link to my wiki</source>
  
 
Теперь, в статью можно поместить строку:
 
Теперь, в статью можно поместить строку:
<pre>[[my-wiki:Имя статьи]]</pre>
+
<source lang="bash">[[my-wiki:Имя статьи]]</source>
  
 
Подробней читать на [http://www.mediawiki.org/wiki/Manual:Interwiki/ru офф. сайте].
 
Подробней читать на [http://www.mediawiki.org/wiki/Manual:Interwiki/ru офф. сайте].
Строка 127: Строка 122:
 
Пароль любого пользователя можно поменять SQL командой:
 
Пароль любого пользователя можно поменять SQL командой:
  
UPDATE user SET user_password = MD5(CONCAT(user_id, '-', MD5('Новый_Пароль'))) WHERE user_name = 'Имя_Пользователя';
+
<source lang="mysql">UPDATE user SET user_password = MD5(CONCAT(user_id, '-', MD5('Новый_Пароль'))) WHERE user_name = 'Имя_Пользователя';</source>
  
 
===Разрешаем включать страницы из других вики===
 
===Разрешаем включать страницы из других вики===
Строка 133: Строка 128:
 
Чтобы включить страницу или шаблон из другой вики, она должна быть описана в таблице интервики ссылок и в LocalSettings.php нужно добавить параметр [http://www.mediawiki.org/wiki/Manual:$wgEnableScaryTranscluding $wgEnableScaryTranscluding]:
 
Чтобы включить страницу или шаблон из другой вики, она должна быть описана в таблице интервики ссылок и в LocalSettings.php нужно добавить параметр [http://www.mediawiki.org/wiki/Manual:$wgEnableScaryTranscluding $wgEnableScaryTranscluding]:
  
  $wgEnableScaryTranscluding = true;
+
  <source lang="bash">$wgEnableScaryTranscluding = true;</source>
  
 
:'''!''' В версии '''MediaWiki 16.2''' при попытке подключить внешний шаблон <nowiki>{{WikiName:Template:TemplateName}}</nowiki> PHP выдаёт ошибку:
 
:'''!''' В версии '''MediaWiki 16.2''' при попытке подключить внешний шаблон <nowiki>{{WikiName:Template:TemplateName}}</nowiki> PHP выдаёт ошибку:
Строка 247: Строка 242:
  
 
По умолчанию в движке MediaWiki определён только один класс таблиц wikitable.  
 
По умолчанию в движке MediaWiki определён только один класс таблиц wikitable.  
 
 
* Чтобы определить свои классы нужно отредактировать файл <tt>skins/common/shared.css</tt>. Вставьте в любое место приведённый справа код.
 
* Чтобы определить свои классы нужно отредактировать файл <tt>skins/common/shared.css</tt>. Вставьте в любое место приведённый справа код.
 
 
 
Пример классов таблиц:
 
Пример классов таблиц:
 
 
{| class=frame  
 
{| class=frame  
 
|-  
 
|-  
Строка 295: Строка 286:
 
| F || Б || 11
 
| F || Б || 11
 
|}
 
|}
 
  
 
|-
 
|-
Строка 372: Строка 362:
 
|}
 
|}
 
|}
 
|}
 
  
 
* Можно добавить возможность [http://www.mediawiki.org/wiki/Manual:Collapsible_tables сворачивать таблицы]. В официальной инструкции рекомендуется создать в вики страницы '''Common.js''' и '''Common.css''', но в случае вики семьи такое решение не подойдёт, так действует только на одну вики, поэтому я добавил код в конец следующих файлов в каталоге <tt>skins/common/</tt>:
 
* Можно добавить возможность [http://www.mediawiki.org/wiki/Manual:Collapsible_tables сворачивать таблицы]. В официальной инструкции рекомендуется создать в вики страницы '''Common.js''' и '''Common.css''', но в случае вики семьи такое решение не подойдёт, так действует только на одну вики, поэтому я добавил код в конец следующих файлов в каталоге <tt>skins/common/</tt>:
 
** код для Common.js добавил в <tt>ajax.js</tt>
 
** код для Common.js добавил в <tt>ajax.js</tt>
 
** код для Common.css добавил в <tt>shared.css</tt>
 
** код для Common.css добавил в <tt>shared.css</tt>
 +
 +
Скопируйте и вставте следующий код в [[MediaWiki:Common.js]] и [[MediaWiki:Common.css]]:
 +
 +
{|class="frame collapsible collapsed"
 +
! код для Common.js
 +
|-
 +
|
 +
<syntaxhighlight lang=javascript>
 +
/** Collapsible tables *********************************************************
 +
*
 +
*  Description: Allows tables to be collapsed, showing only the header. See
 +
*              http://www.mediawiki.org/wiki/Manual:Collapsible_tables.
 +
*  Maintainers: [[en:User:R. Koot]]
 +
*/
 +
 +
var autoCollapse = 2;
 +
var collapseCaption = 'hide';
 +
var expandCaption = 'show';
 +
 +
function collapseTable( tableIndex ) {
 +
    var Button = document.getElementById( 'collapseButton' + tableIndex );
 +
    var Table = document.getElementById( 'collapsibleTable' + tableIndex );
 +
 +
    if ( !Table || !Button ) {
 +
        return false;
 +
    }
 +
 +
    var Rows = Table.rows;
 +
 +
    if ( Button.firstChild.data == collapseCaption ) {
 +
        for ( var i = 1; i < Rows.length; i++ ) {
 +
            Rows[i].style.display = 'none';
 +
        }
 +
        Button.firstChild.data = expandCaption;
 +
    } else {
 +
        for ( var i = 1; i < Rows.length; i++ ) {
 +
            Rows[i].style.display = Rows[0].style.display;
 +
        }
 +
        Button.firstChild.data = collapseCaption;
 +
    }
 +
}
 +
 +
function createCollapseButtons() {
 +
    var tableIndex = 0;
 +
    var NavigationBoxes = new Object();
 +
    var Tables = document.getElementsByTagName( 'table' );
 +
 +
    for ( var i = 0; i < Tables.length; i++ ) {
 +
        if ( hasClass( Tables[i], 'collapsible' ) ) {
 +
 +
            /* only add button and increment count if there is a header row to work with */
 +
            var HeaderRow = Tables[i].getElementsByTagName( 'tr' )[0];
 +
            if ( !HeaderRow ) {
 +
                continue;
 +
            }
 +
            var Header = HeaderRow.getElementsByTagName( 'th' )[0];
 +
            if ( !Header ) {
 +
                continue;
 +
            }
 +
 +
            NavigationBoxes[tableIndex] = Tables[i];
 +
            Tables[i].setAttribute( 'id', 'collapsibleTable' + tableIndex );
 +
 +
            var Button = document.createElement( 'span' );
 +
            var ButtonLink = document.createElement( 'a' );
 +
            var ButtonText = document.createTextNode( collapseCaption );
 +
 +
            Button.className = 'collapseButton'; // Styles are declared in [[MediaWiki:Common.css]]
 +
 +
            ButtonLink.style.color = Header.style.color;
 +
            ButtonLink.setAttribute( 'id', 'collapseButton' + tableIndex );
 +
            ButtonLink.setAttribute( 'href', "javascript:collapseTable(" + tableIndex + ");" );
 +
            ButtonLink.appendChild( ButtonText );
 +
 +
            Button.appendChild( document.createTextNode( '[' ) );
 +
            Button.appendChild( ButtonLink );
 +
            Button.appendChild( document.createTextNode( ']' ) );
 +
 +
            Header.insertBefore( Button, Header.childNodes[0] );
 +
            tableIndex++;
 +
        }
 +
    }
 +
 +
    for ( var i = 0;  i < tableIndex; i++ ) {
 +
        if ( hasClass( NavigationBoxes[i], 'collapsed' ) || ( tableIndex >= autoCollapse && hasClass( NavigationBoxes[i], 'autocollapse' ) ) ) {
 +
            collapseTable( i );
 +
        } else if ( hasClass( NavigationBoxes[i], 'innercollapse' ) ) {
 +
            var element = NavigationBoxes[i];
 +
            while ( element = element.parentNode ) {
 +
                if ( hasClass( element, 'outercollapse' ) ) {
 +
                    collapseTable( i );
 +
                    break;
 +
                }
 +
            }
 +
        }
 +
    }
 +
}
 +
 +
addOnloadHook( createCollapseButtons );
 +
 +
/** Test if an element has a certain class **************************************
 +
*
 +
* Description: Uses regular expressions and caching for better performance.
 +
* Maintainers: [[User:Mike Dillon]], [[User:R. Koot]], [[User:SG]]
 +
*/
 +
 +
var hasClass = ( function() {
 +
    var reCache = {};
 +
    return function( element, className ) {
 +
        return ( reCache[className] ? reCache[className] : ( reCache[className] = new RegExp( "(?:\\s|^)" + className + "(?:\\s|$)" ) ) ).test( element.className );
 +
    };
 +
})();
 +
</syntaxhighlight>
 +
|}
 +
{|class="frame collapsible collapsed"
 +
! код для Common.css
 +
|-
 +
|
 +
<syntaxhighlight lang=css>
 +
table.collapsed tr.collapsible {
 +
    display: none;
 +
}
 +
 +
.collapseButton {        /* 'show'/'hide' buttons created dynamically by the        */
 +
    float: right;        /* CollapsibleTables JavaScript in [[MediaWiki:Common.js]] */
 +
    font-weight: normal;    /* are styled here so they can be customised.          */
 +
    text-align: right;
 +
    width: auto;
 +
}
 +
</syntaxhighlight>
 +
|}
  
 
== Добавление расширений ==
 
== Добавление расширений ==
Строка 385: Строка 505:
 
# копируются в свой подкаталог в каталоге extensions. Список расширений можно узнать из [http://www.mediawiki.org/wiki/Extension_Matrix официального списка].
 
# копируются в свой подкаталог в каталоге extensions. Список расширений можно узнать из [http://www.mediawiki.org/wiki/Extension_Matrix официального списка].
 
# в '''LocalSettings.php''' добавляется строка:
 
# в '''LocalSettings.php''' добавляется строка:
<pre>
+
<source lang="bash">
 
require_once( "$IP/extensions/Каталог_Расширения/Главный_Файл_Расширения.php" );
 
require_once( "$IP/extensions/Каталог_Расширения/Главный_Файл_Расширения.php" );
</pre>
+
</source>
 
 
  
 
'''Некоторые полезные расширения'''
 
'''Некоторые полезные расширения'''
  
 
* [http://www.mediawiki.org/wiki/Extension:FCKeditor_%28Official%29 FCKeditor] - визуальный (WYSIWYG) редактор. У этого расширения можно обновить сам [http://ckeditor.com/download редактор]. Подключаем:
 
* [http://www.mediawiki.org/wiki/Extension:FCKeditor_%28Official%29 FCKeditor] - визуальный (WYSIWYG) редактор. У этого расширения можно обновить сам [http://ckeditor.com/download редактор]. Подключаем:
<pre>
+
<source lang="bash">
 
require_once( "$IP/extensions/FCKeditor/FCKeditor.php" );
 
require_once( "$IP/extensions/FCKeditor/FCKeditor.php" );
</pre>
+
</source>
  
 
* [http://www.mediawiki.org/wiki/Extension:Cite/Cite.php Cite.php] - добавляет поддержку тэгов '''<nowiki><ref></nowiki>''' и '''<nowiki><references /></nowiki>''', что позволяет использовать в тексте статьи сноски. Подключаем:
 
* [http://www.mediawiki.org/wiki/Extension:Cite/Cite.php Cite.php] - добавляет поддержку тэгов '''<nowiki><ref></nowiki>''' и '''<nowiki><references /></nowiki>''', что позволяет использовать в тексте статьи сноски. Подключаем:
<pre>
+
<source lang="bash">
 
require_once( "$IP/extensions/Cite/Cite.php" );
 
require_once( "$IP/extensions/Cite/Cite.php" );
</pre>
+
</source>
  
 
* [http://www.mediawiki.org/wiki/Extension:ParserFunctions/ru ParserFunctions] - позволяет использовать тэги: '''<nowiki>#expr: #if: #ifeq: #ifexist: #ifexpr: #switch: #time: #rel2abs: #titleparts: #iferror:</nowiki>'''. На Википедии можно почитать как использовать [http://ru.wikipedia.org/wiki/Википедия:Функции_парсера функции парсера]. Устанавливать лучше из репозитория Subversion (скачать [http://subversion.apache.org/packages.html#windows клиент]):
 
* [http://www.mediawiki.org/wiki/Extension:ParserFunctions/ru ParserFunctions] - позволяет использовать тэги: '''<nowiki>#expr: #if: #ifeq: #ifexist: #ifexpr: #switch: #time: #rel2abs: #titleparts: #iferror:</nowiki>'''. На Википедии можно почитать как использовать [http://ru.wikipedia.org/wiki/Википедия:Функции_парсера функции парсера]. Устанавливать лучше из репозитория Subversion (скачать [http://subversion.apache.org/packages.html#windows клиент]):
<pre>
+
<source lang="bash">
 
cd extensions/
 
cd extensions/
 
svn co http://svn.wikimedia.org/svnroot/mediawiki/trunk/extensions/ParserFunctions
 
svn co http://svn.wikimedia.org/svnroot/mediawiki/trunk/extensions/ParserFunctions
</pre>
+
</source>
  
 
* [http://www.mediawiki.org/wiki/Extension:SyntaxHighlight_GeSHi SyntaxHighlight GeSHi] - подсветка синтаксиса программного кода, позволяет использовать тэги '''<nowiki><syntaxhighlight> и <source></nowiki>'''. Это расширенная версия [http://www.mediawiki.org/wiki/Extension:Geshi GeSHi]
 
* [http://www.mediawiki.org/wiki/Extension:SyntaxHighlight_GeSHi SyntaxHighlight GeSHi] - подсветка синтаксиса программного кода, позволяет использовать тэги '''<nowiki><syntaxhighlight> и <source></nowiki>'''. Это расширенная версия [http://www.mediawiki.org/wiki/Extension:Geshi GeSHi]
  
<pre>
+
<source lang="bash">
 
cd extensions/
 
cd extensions/
 
svn co  svn co http://svn.wikimedia.org/svnroot/mediawiki/trunk/extensions/SyntaxHighlight_GeSHi
 
svn co  svn co http://svn.wikimedia.org/svnroot/mediawiki/trunk/extensions/SyntaxHighlight_GeSHi
</pre>
+
</source>
  
 
Подключаем:
 
Подключаем:
Строка 468: Строка 587:
  
 
*Для '''SQL''' дампа выполняем:
 
*Для '''SQL''' дампа выполняем:
<pre>
+
<source lang="mysql">
 
mysqldump -h $SERVER -u $USER -p$PASSWORD --default-character-set=$CHARSET $DATABASE -c \
 
mysqldump -h $SERVER -u $USER -p$PASSWORD --default-character-set=$CHARSET $DATABASE -c \
 
| /bin/gzip -9 > ~/backup/wiki-$(date '+%a').sql.gz
 
| /bin/gzip -9 > ~/backup/wiki-$(date '+%a').sql.gz
</pre>
+
</source>
  
 
:параметры '''$USER''', '''$PASSWORD''' и '''$DATABASE''' берём из LocalSettings.php
 
:параметры '''$USER''', '''$PASSWORD''' и '''$DATABASE''' берём из LocalSettings.php
:<pre>cat ./LocalSettings.php  | grep wgDB</pre>
+
:<source lang="bash">cat ./LocalSettings.php  | grep wgDB</source>
  
 
:параметр '''--default-character-set=$CHARSET''' нужен, если возникли проблемы с кодировкой (подробней см. статью выше)
 
:параметр '''--default-character-set=$CHARSET''' нужен, если возникли проблемы с кодировкой (подробней см. статью выше)
Строка 481: Строка 600:
 
:<pre>mysqldump: Got error: 2002: Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2) when trying to connect</pre>
 
:<pre>mysqldump: Got error: 2002: Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2) when trying to connect</pre>
  
 +
*Для '''XML''' дампа используем скрипт [http://www.mediawiki.org/wiki/Manual:DumpBackup.php dumpBackup.php], расположенный в каталоге '''maintenance''':
 +
<source lang="bash">
 +
php maintenance\dumpBackup.php --full > full.xml</source>
  
*Для '''XML''' дампа используем скрипт [http://www.mediawiki.org/wiki/Manual:DumpBackup.php dumpBackup.php], расположенный в каталоге '''maintenance''':
 
<pre>
 
php maintenance\dumpBackup.php --full > full.xml
 
</pre>
 
 
Список параметров dumpBackup.php можно получить, вызвав его без параметров, однако, в исходном коде этого скрипта есть ещё несколько недокументированных опций.
 
Список параметров dumpBackup.php можно получить, вызвав его без параметров, однако, в исходном коде этого скрипта есть ещё несколько недокументированных опций.
 
  
 
== Редактировние статей ==
 
== Редактировние статей ==
  
Об этом можно подробно узнать из [[Справка:Справка по редактированию|Справки по редактированию]].
+
Об этом можно подробно узнать из [[Справка:Содержание|Справки по редактированию]].
 
 
== Поиск в Firefox по своей вики ==
 
 
 
В Firefox с помощью шаблона '''%s''' и "Краткого имени" (keyword) в закладке можно настроить быстрый доступ к любому сайту.
 
 
 
Отрываем ''Закладки - Управление закладками'' (Bookmark/Manage bookmarks), создаём отдельную папку для быстрого поиска, скажем "Быстрый поиск"; создаём новую закладку, где указываем:
 
 
 
* '''Имя:''' Поиск по СисадминВики
 
* '''Адрес:''' <nowiki>http://sysadminwiki.ru/wiki/%s</nowiki>
 
* '''Краткое имя:''' св
 
 
 
Обратите внимание, что краткое имя может быть и на русском языке.
 
 
 
Теперь в адресной строке набираем: "св MediaWiki" и попадаем на эту страницу.
 
 
 
Если наберём просто "св", то попадём на начальную страницу сайта.
 
  
 
== Уменьшение нагрузки ==
 
== Уменьшение нагрузки ==
Строка 513: Строка 614:
 
Полезно запретить поисковым роботам индексировать все служебные страницы, а ограничить их только статьями. Для этого редактируем файл '''robots.txt''' в корне сайта:
 
Полезно запретить поисковым роботам индексировать все служебные страницы, а ограничить их только статьями. Для этого редактируем файл '''robots.txt''' в корне сайта:
  
User-agent: *
+
<source lang="bash">User-agent: *
Disallow: /w/
+
Disallow: /w/</source>
  
 
В случае [[MediaWiki/Wiki_family_(farm)|вики семьи]] (фермы), в корневой каталог сайта кладём:
 
В случае [[MediaWiki/Wiki_family_(farm)|вики семьи]] (фермы), в корневой каталог сайта кладём:
  
User-agent: *
+
<source lang="bash"> User-agent: *
 
  Disallow: /w/
 
  Disallow: /w/
 
  Disallow: /ru/w-
 
  Disallow: /ru/w-
 
  Disallow: /en/w-
 
  Disallow: /en/w-
 
+
</source>
 
а в языковые подкаталоги:
 
а в языковые подкаталоги:
  
User-agent: *
+
<source lang="bash"> User-agent: *
 
  Disallow: /w/
 
  Disallow: /w/
  Disallow: /w-
+
  Disallow: /w-</source>
  
 
Подробнее см. на [http://www.mediawiki.org/wiki/Robots.txt официальном сайте]
 
Подробнее см. на [http://www.mediawiki.org/wiki/Robots.txt официальном сайте]
 
== Wiki family - Несколько вики в одном проекте ==
 
 
По этой теме читайте отдельную статью [[MediaWiki/Wiki_family_(farm)]]
 
  
 
==Дополнительные настройки==
 
==Дополнительные настройки==
Строка 547: Строка 644:
 
* http://meta.wikimedia.org/wiki/Помощь:Содержание
 
* http://meta.wikimedia.org/wiki/Помощь:Содержание
 
* http://ru.wikibooks.org/wiki/Вики - небольшой Викиучебник
 
* http://ru.wikibooks.org/wiki/Вики - небольшой Викиучебник
 
  
 
'''Советы по настройке:'''
 
'''Советы по настройке:'''
Строка 553: Строка 649:
 
* http://docs.altlinux.org/archive/4.1/school_server/mediawiki/index.html
 
* http://docs.altlinux.org/archive/4.1/school_server/mediawiki/index.html
 
* http://homo-creativus.info/tag/mediawiki/
 
* http://homo-creativus.info/tag/mediawiki/
 
  
 
'''Справочники:'''
 
'''Справочники:'''
 
* http://www.wikireality.ru/wiki/Настройки_конфигурации_MediaWiki_(по_алфавиту) - описание всех параметров LocalSettings.php на русском языке
 
* http://www.wikireality.ru/wiki/Настройки_конфигурации_MediaWiki_(по_алфавиту) - описание всех параметров LocalSettings.php на русском языке
 
  
 
'''Скины:'''
 
'''Скины:'''
Строка 567: Строка 661:
 
* Сайты со скинами
 
* Сайты со скинами
 
** http://mediawiki2u.com/
 
** http://mediawiki2u.com/
 
  
 
'''Утилиты:'''
 
'''Утилиты:'''

Текущая версия на 16:20, 16 марта 2012

Установка MediaWiki

Установка крайне проста: скачиваем последнюю версию с официального сайта http://www.mediawiki.org и распаковываем в нужный каталог сайта (например /var/www/site/w/); далее настраиваем через веб-интерфейс. Точка входа http://domain.ru/w/config/

Подробно об установке можно узнать из официальной инструкции, и ещё одна здесь.

Вики движок лучше не размещать в корне сайта. Почему, кратко объяснено в спец. статье.

После установки хорошо бы ознакомиться с задачами администратора MediaWiki, где сказано что ещё можно доделать.

Как настроить (кратко)

Хорошие краткие инструкции (ЧаВО или FAQ) есть на официальном сайте MediaWiki как на русском языке, так и на английском.

Запрещаем редактирование не авторизованным пользователям:

$wgGroupPermissions['*']['createaccount'] = true;
$wgGroupPermissions['*']['read'] = true;
$wgGroupPermissions['*']['edit'] = false;
$wgGroupPermissions['*']['createpage'] = false;
$wgGroupPermissions['*']['createtalk'] = false;

Делаем ссылки короткими

По умолчанию ссылки выглядят так: http://domain.ru/wiki/index.php?title=article. Чтобы сделать их такими же короткими и наглядными, как в Википедии, есть много способов. Один из них - это добавить в LocalSettings.php:

$wgScriptPath   = "/w";  
$wgArticlePath  = "/wiki/$1";
$wgUsePathInfo  = true;

где $wgScriptPath - каталог установки вики-сайта, а $wgArticlePath - виртуальный каталог, который нужно будет указать в URL при обращении к статье, имя не должно совпадать с реальным каталогом.

Затем, в корневом каталоге сайта (т.е. рядом с каталогом "w") нужно создать файл .htaccess:

RewriteEngine On
RewriteRule ^wiki/(.*)$ /w/index.php?title=$1 [PT,L,QSA]
RewriteRule ^wiki/*$ /w/index.php [L,QSA]
RewriteRule ^/*$ /w/index.php [L,QSA]

Для лучшего понимания этого кода можно подробней ознакомиться с синтаксисом дерективы RewriteRule.

Если на сервере установлено несклько виртуальных хостов, то нужно ещё добавить  настройку виртуального хоста в секцию <VirtualHost>:

RewriteEngine On
RewriteOptions Inherit


и подключить модуль rewrite, после чего перезагрузить сервер. В Debian это делается следующим образом:

ln -s /etc/apache2/mods-available/rewrite.load /etc/apache2/mods-enabled
/etc/init.d/apache2 restart

Добавляем логотип

Картинку не более 135х135 пикселей с прозрачным фоном загружаем в папку images и добавляем в LocalSettings.php:

$wgLogo ={$wgScriptPath}/images/logofinal.png”;

Меняем favicon

Это изображение появляется возле адреса страницы в адресной строке сайта, а также в закладках. Его размер должен быть либо 16x16 либо 32x32 пикселей. Не все браузеры поддерживают формат favicon отличный от ico, подробней читайте на http://en.wikipedia.org/wiki/Favicon#Browser_support

Чтобы добавить favicon.ico можно

  • положить как обычно в корневой каталог сайта, т.е. на одном уровне с каталогом "w/" или
  • скопировать изображение в папку images и добавить в LocalSettings.php:
$wgFavicon = "$wgScriptPath/images/favicon.ico";

Настраиваем навигационную панель (слева)

Создаём страницу MediaWiki:Sidebar, где описываем содержание навигационной панели.

Синтаксис:

* <название блока 1>
** <ссылка на статью 1>|<отображаемый текст 1>
** <ссылка на статью 2>|<отображаемый текст 2>
* <название блока 2>
** <ссылка на статью 3>|<отображаемый текст 3>
** <ссылка на статью 4>|<отображаемый текст 4>

Пример:

* navigation
** mainpage|Начальная
** Служебная:AllPages|Все статьи
** Служебная:Categories|Все категории
** portal-url|Сообщество
** helppage|help
* Популярное
** Служебная:PopularPages|Статьи
** Служебная:MostLinkedCategories|Категории
** recentchanges-url|recentchanges
** randompage-url|randompage
* SEARCH
* TOOLBOX

Добавляем слева ссылки на другие вики

В случае многоязыковых проектов достаточно добавить в статью

[[lang:Имя статьи]]

где lang - префикс языка. См. файл languages/Names.php

В случае, если нужно добавить ссылку на любой другой сайт, нужно создать интервики ссылку (см. ниже) и с таким же именем запись в languages/Names.php

Например, в таблице ссылок интервики создали ссылку my-wiki, тогда в Names.php добавляем строчку (в рамках объявления массива):

'my-wiki' => 'My Wiki',  # Link to my wiki

Теперь, в статью можно поместить строку:

[[my-wiki:Имя статьи]]

Подробней читать на офф. сайте.

Меняем права пользователей

Права пользователя можно поменять на Special:Userrights. Подробно описано в официальном руководстве.

Меняем пароль пользователя

Пароль любого пользователя можно поменять SQL командой:

UPDATE user SET user_password = MD5(CONCAT(user_id, '-', MD5('Новый_Пароль'))) WHERE user_name = 'Имя_Пользователя';

Разрешаем включать страницы из других вики

Чтобы включить страницу или шаблон из другой вики, она должна быть описана в таблице интервики ссылок и в LocalSettings.php нужно добавить параметр $wgEnableScaryTranscluding:

$wgEnableScaryTranscluding = true;
! В версии MediaWiki 16.2 при попытке подключить внешний шаблон {{WikiName:Template:TemplateName}} PHP выдаёт ошибку:
PHP Fatal error:  Cannot redeclare class HttpRequest in /local_path_to_site/w/includes/HttpFunctions.php on line 122

Разрешаем загружать файлы

# Позволяем загружать файлы
$wgEnableUploads = true;

# Определяем макс. размер файла
$wgMaxUploadSize = 5000000; 

# Отключаем проверку расширения файла
$wgCheckFileExtensions = false;
$wgStrictFileExtensions = false;

Последние два параметра разрешают загружать все файлы (что не безопасно). Если их не указывать, то по умолчанию будут разрешены только изображения.

Чтобы самостоятельно задать тип файлов указываем:

$wgFileExtensions = array('png', 'gif', 'jpg', 'jpeg', 'svg', 'pdf', 'doc', 'docx', 'xls', 'xlsx','ods','odg','odt');

Для того, чтобы файлы могли быть загруженными, должен быть настроен и сам PHP.

Подробней см. официальную документацию.

Добавляем классы таблиц

По умолчанию в движке MediaWiki определён только один класс таблиц wikitable.

  • Чтобы определить свои классы нужно отредактировать файл skins/common/shared.css. Вставьте в любое место приведённый справа код.

Пример классов таблиц:

вид
wikitable
Заголовок 1 Заголовок 2
Ячейка 1*1 Ячейка 2*1
Ячейка 1*2 Ячейка 2*2
Ячейка 1*3 Ячейка 2*3
standard
Заголовок 1 Заголовок 2
1 Ячейка 2 Ячейка
2 Ячейка 1 Ячейка
3 Ячейка 3 Ячейка
frame
Латиница Кириллица Цифры
D Г 3
E Щ 2
F Б 11
код
{| class="wikitable"
|-
!Заголовок 1||Заголовок 2 
|-
|Ячейка 1*1||Ячейка 2*1
|-
|Ячейка 1*2||Ячейка 2*2
|-
|Ячейка 1*3||Ячейка 2*3
|}
{| class="standard sortable"
|-
!Заголовок 1||Заголовок 2 
|-
| 1 Ячейка || 2 Ячейка
|-
| 2 Ячейка || 1 Ячейка 
|-
| 3 Ячейка || 3 Ячейка
|}
{| class="frame sortable"
|-
!Латиница||Кириллица||class="unsortable"|Цифры
|-
| D || Г || 3 
|-
| E || Щ || 2
|-
| F || Б || 11
|}
широкие
wide
Заголовок 1 Заголовок 2
Ячейка 1*1 Ячейка 2*1
Ячейка 1*2 Ячейка 2*2
Ячейка 1*3 Ячейка 2*3
wide-frame
Заголовок 1 Заголовок 2
Ячейка 1*1 Ячейка 2*1
Ячейка 1*2 Ячейка 2*2
Ячейка 1*3 Ячейка 2*3
  • Можно добавить возможность сворачивать таблицы. В официальной инструкции рекомендуется создать в вики страницы Common.js и Common.css, но в случае вики семьи такое решение не подойдёт, так действует только на одну вики, поэтому я добавил код в конец следующих файлов в каталоге skins/common/:
    • код для Common.js добавил в ajax.js
    • код для Common.css добавил в shared.css

Скопируйте и вставте следующий код в MediaWiki:Common.js и MediaWiki:Common.css:

Добавление расширений

Список всех уже установленных расширений можно увидеть на странице Special:Version а в руссифицированных версиях также Служебная:Version

Все расширения (extensions) устанавливаются в MediaWiki одинаково:

  1. копируются в свой подкаталог в каталоге extensions. Список расширений можно узнать из официального списка.
  2. в LocalSettings.php добавляется строка:
require_once( "$IP/extensions/Каталог_Расширения/Главный_Файл_Расширения.php" );

Некоторые полезные расширения

  • FCKeditor - визуальный (WYSIWYG) редактор. У этого расширения можно обновить сам редактор. Подключаем:
require_once( "$IP/extensions/FCKeditor/FCKeditor.php" );
  • Cite.php - добавляет поддержку тэгов <ref> и <references />, что позволяет использовать в тексте статьи сноски. Подключаем:
require_once( "$IP/extensions/Cite/Cite.php" );
  • ParserFunctions - позволяет использовать тэги: #expr: #if: #ifeq: #ifexist: #ifexpr: #switch: #time: #rel2abs: #titleparts: #iferror:. На Википедии можно почитать как использовать функции парсера. Устанавливать лучше из репозитория Subversion (скачать клиент):
cd extensions/
svn co http://svn.wikimedia.org/svnroot/mediawiki/trunk/extensions/ParserFunctions
  • SyntaxHighlight GeSHi - подсветка синтаксиса программного кода, позволяет использовать тэги <syntaxhighlight> и <source>. Это расширенная версия GeSHi
cd extensions/
svn co  svn co http://svn.wikimedia.org/svnroot/mediawiki/trunk/extensions/SyntaxHighlight_GeSHi

Подключаем:

require_once("$IP/extensions/SyntaxHighlight_GeSHi/SyntaxHighlight_GeSHi.php");

Параметры:

    • lang="??": Определяет язык программировария, сказывается на самой подсветке
    • line="GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS": Как нумеровать линии (по умолчанию никак)
    • line start="??": Какой номер у первой строки, используется вместе с line
    • highlight="??": Какую линию подсветить, не зависит от line start
    • enclose="??": В какой контейнер поместить блок. Принимает значения "pre" (по умолчанию), "div", "none".
    • strict: Присутствие этого параметра указывает, что нужно использовать режим strict.
  • CategoryTree - добавляет более удобную навигацию по категориям. Позволяет использовать тэг <categorytree>

Копируем в каталог расширений и подключаем:

require_once("$IP/extensions/CategoryTree/CategoryTree.php");
  • Collection - даёт возможность создавать книги в формате PDF из статей сайта.

! Требует чтобы PHP поддерживал cURL ! Возможно потребуется доуставить.

Копируем в каталог расширений и подключаем:

require_once("$IP/extensions/Collection/Collection.php");

Чтобы дать пользователям возможность сохранять и делиться своими книгами с другими, добавьте в Localsettings.php:

$wgGroupPermissions['user']['collectionsaveasuserpage'] = true;
$wgGroupPermissions['user']['collectionsaveascommunitypage'] = true;

С настройками по умолчанию книги будут генерироваться на сервере разработчика этого расширения.

  • CharInsert - быстрое добавление любых символов или шаблонных тегов. Ниже окна редактирования размещается дополнительная панель инструментов.

Резервное копирование

Чтобы узнать, как скачать дампы базы данных со статьями Википедии, см. статью Википедии

Для создания собственного дампа локального сайта, использующего MediaWiki, есть подробная инструкция.

Если кратко, то полная резервная копия - это дамп из СУБД (у меня MySQL) в виде SQL выражений, а частичная в виде xml файла. Особенности последней в том, что она не зависит от структуры базы данных и может быть перенесена, например, на нувую версию MediaWiki с изменнённой структурой БД, но в xml не выгружаются информация о логинаx пользователей, журналы и метаданные изображений.

  • Для SQL дампа выполняем:
mysqldump -h $SERVER -u $USER -p$PASSWORD --default-character-set=$CHARSET $DATABASE -c \
| /bin/gzip -9 > ~/backup/wiki-$(date '+%a').sql.gz
параметры $USER, $PASSWORD и $DATABASE берём из LocalSettings.php
cat ./LocalSettings.php  | grep wgDB
параметр --default-character-set=$CHARSET нужен, если возникли проблемы с кодировкой (подробней см. статью выше)
параметр -h $SERVER нужен если подключаемся не через сокет, иначе получим ошибку:
mysqldump: Got error: 2002: Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2) when trying to connect
  • Для XML дампа используем скрипт dumpBackup.php, расположенный в каталоге maintenance:
php maintenance\dumpBackup.php --full > full.xml

Список параметров dumpBackup.php можно получить, вызвав его без параметров, однако, в исходном коде этого скрипта есть ещё несколько недокументированных опций.

Редактировние статей

Об этом можно подробно узнать из Справки по редактированию.

Уменьшение нагрузки

Полезно запретить поисковым роботам индексировать все служебные страницы, а ограничить их только статьями. Для этого редактируем файл robots.txt в корне сайта:

User-agent: *
Disallow: /w/

В случае вики семьи (фермы), в корневой каталог сайта кладём:

 User-agent: *
 Disallow: /w/
 Disallow: /ru/w-
 Disallow: /en/w-

а в языковые подкаталоги:

 User-agent: *
 Disallow: /w/
 Disallow: /w-

Подробнее см. на официальном сайте

Дополнительные настройки

  • Интервики (interwiki) - это ссылки, оформленные как внутренние ссылки с использованием специального префикса, но ведущие на страницы других проектов. Интервики-ссылки позволяют сделать ссылку на страницы других вики-проектов, например Википедии, Викиучебника, Викиновостей и т.д., или, к примеру, на разделы вашего вики-проекта на разных языках.
  • Tagline - можно изменить подпись "Материал из НазваниеВики".

Полезные ссылки

Документация:

Советы по настройке:

Справочники:

Скины:

Утилиты:

Описание движка MediaWiki: