MediaWiki

Материал из RSU WiKi
(Различия между версиями)
Перейти к: навигация, поиск
(LDAP аутентификация)
(Аутентификация через AD)
 
(не показаны 12 промежуточных версий 3 участников)
Строка 59: Строка 59:
 
* http://fs.fsinf.at/wiki/SecurePages Confidential Information, most commonly passwords, should never be transmitted through a plain HTTP connection since an eavesdropper can easily intercept that information. Using HTTPS is a solution but adds an additional load to your servers (for the encryption) so you don't want to use https if you are on "normal" pages. This extension solves just that problem: It redirects the user to HTTPS on just some pages while redirecting to HTTP on any other page.
 
* http://fs.fsinf.at/wiki/SecurePages Confidential Information, most commonly passwords, should never be transmitted through a plain HTTP connection since an eavesdropper can easily intercept that information. Using HTTPS is a solution but adds an additional load to your servers (for the encryption) so you don't want to use https if you are on "normal" pages. This extension solves just that problem: It redirects the user to HTTPS on just some pages while redirecting to HTTP on any other page.
 
== LDAP аутентификация ==
 
== LDAP аутентификация ==
Для реализации LDAP аутетификации прежде всего надо скачать плагин gпо адресу  http://www.mediawiki.org/wiki/Extension:LDAP_Authentication. Следуйте указаниям разработчика плагина для его распаковки.
+
Для реализации LDAP аутентификации прежде всего надо скачать плагин по адресу  http://www.mediawiki.org/wiki/Extension:LDAP_Authentication. Следуйте указаниям разработчика плагина для его распаковки.
 
После его распаковки запустите update.php
 
После его распаковки запустите update.php
 
  # Run this from the top level of your MediaWiki installation directory
 
  # Run this from the top level of your MediaWiki installation directory
Строка 65: Строка 65:
 
Далее отредактируйте файл  $IP/LocalSettings.php
 
Далее отредактируйте файл  $IP/LocalSettings.php
  
=== Аутентификация через AD ===
+
Параметр $wgLDAPUseLocal отвечает за возможность аутентификации локальным пользователем. Если нужно такую аутентификацию включить, значение должно быть true. По умолчанию параметр имеет значение false.
Файл LocalSettings.php должен содержать следующие строки:
+
 
<pre>
 
<pre>
 +
#Enable LDAP authentification
 +
require_once( "$IP/extensions/LdapAuthentication/LdapAuthentication.php" );
 
$wgAuth = new LdapAuthenticationPlugin();
 
$wgAuth = new LdapAuthenticationPlugin();
$wgLDAPDomainNames = array('ADDOMAIN');
+
</pre>
$wgLDAPServerNames = array('ADDOMAIN' => 'controller1.addomain.com controller2.addomain.com');
+
 
$wgLDAPSearchStrings = array('ADDOMAIN' => 'ADDOMAIN\\USER-NAME');
+
=== Как включить аутентификацию через Active Directory? ===
$wgLDAPEncryptionType = array('ADDOMAIN' => 'clear');
+
* Статья Extension:LDAP Authentication/AD Configuration Examples<ref>http://www.mediawiki.org/wiki/Extension:LDAP_Authentication/AD_Configuration_Examples</ref>
 +
Чтобы включить аутентификацию через Microsoft Active Directory необходимо установить плагин Extension:LDAP Authentication/AD Configuration Examples<ref>http://www.mediawiki.org/wiki/Extension:LDAP_Authentication/AD_Configuration_Examples</ref> и добавить в Файл LocalSettings.php следующие строки:
 +
<pre>
 +
# Active Directory Authentificetion
 +
#In this example, we have an Active Directory (AD) server, and we will be doing straight binds to the directory
 +
require_once( "$IP/extensions/LdapAuthentication/LdapAuthentication.php" );
 +
$wgAuth = new LdapAuthenticationPlugin();
 +
$wgLDAPDomainNames = array('local.example.com');
 +
$wgLDAPServerNames = array('local.example.com' => 'local.example.com');
 +
$wgLDAPSearchStrings = array('local.example.com' => 'LOCAL\\USER-NAME');
 +
#$wgLDAPUseLocal=true;
 +
#$wgLDAPEncryptionType = array('local.example.com' => 'clear');
 +
$wgLDAPEncryptionType = array('local.example.com' => 'ssl');
 
$wgMinimalPasswordLength = 1;
 
$wgMinimalPasswordLength = 1;
$wgLDAPBaseDNs = array('ADDOMAIN' => 'dc=addomain,dc=com');
+
#If you want to be able to pull preferences
$wgLDAPLowerCaseUsername = array('ADDOMAIN' => true);
+
$wgLDAPBaseDNs = array('local.example.com' => 'OU=Сотрудники,DC=local,DC=example,DC=com');
$wgGroupPermissions['*']['createaccount'] = true;
+
$wgLDAPSearchAttributes = array('local.example.com' => 'sAMAccountName');
$wgLDAPDebug = 10;
+
#if your server doesn't allow anonymous searching (AD doesn't, normally)
 +
$wgLDAPProxyAgent =  array('local.example.com' => 'CN=wiki,OU=Служебные,DC=local,DC=example,DC=com');
 +
$wgLDAPProxyAgentPassword = array('local.example.com' => 'wiki_user_pwd');
 +
#other
 +
$wgLDAPLowerCaseUsername = array('local.example.com' => true);
 
$wgShowExceptionDetails = true;
 
$wgShowExceptionDetails = true;
 
</pre>
 
</pre>
  
=== Аутентификация через CommuniGate ===
+
Для включения лога отладки LDAP добавьте в LocalSettings.php нижеследующие строки. Файл будет лежать в корне wiki.example.com/debug.log:
 +
#LDAP Debug
 +
#$wgLDAPDebug = 3;
 +
#$wgDebugLogGroups["ldap"] = "debug.log";
 +
 
 +
=== Аутентификация через [[Communigate Pro]] ===
 +
В случае, если в качестве сервера LDAP используется [[Communigate Pro]], конфигурация должна выглядеть след. образом:
 
<pre>
 
<pre>
$wgAuth = new LdapAuthenticationPlugin();
 
 
$wgLDAPDomainNames = array('CGDomain');
 
$wgLDAPDomainNames = array('CGDomain');
 
$wgLDAPServerNames = array('CGDomain' => 'CGDomain.example.com');
 
$wgLDAPServerNames = array('CGDomain' => 'CGDomain.example.com');
Строка 89: Строка 111:
 
$wgLDAPEncryptionType = array('CGDomain' => 'clear');
 
$wgLDAPEncryptionType = array('CGDomain' => 'clear');
 
$wgMinimalPasswordLength = 1;
 
$wgMinimalPasswordLength = 1;
 +
$wgLDAPSearchAttributes = array('CGDomain'=>'uid');
 
$wgLDAPBaseDNs = array('CGDomain' => 'dc=example,dc=com');
 
$wgLDAPBaseDNs = array('CGDomain' => 'dc=example,dc=com');
 
$wgLDAPLowerCaseUsername = array('CGDomain' => true);
 
$wgLDAPLowerCaseUsername = array('CGDomain' => true);
Строка 188: Строка 211:
 
  $wgDefaultUserOptions['usebetatoolbar'] = 1;
 
  $wgDefaultUserOptions['usebetatoolbar'] = 1;
 
  $wgDefaultUserOptions['usebetatoolbar-cgd'] = 1;
 
  $wgDefaultUserOptions['usebetatoolbar-cgd'] = 1;
 +
 +
== Устранение неполадок ==
 +
=== "You have made too many recent login attempts" ===
 +
 +
Чтобы осуществить сброс заблокированных адресов перезагрузите web-серврер или процесс web-серврера, использующий PHP-FPM. <ref>http://www.mediawiki.org/wiki/Thread:Project:Support_desk/%22You_have_made_too_many_recent_login_attempts%22</ref>
  
 
== См. также ==
 
== См. также ==
Строка 198: Строка 226:
  
 
== Ссылки ==
 
== Ссылки ==
 +
<references />
 +
 
* http://www.mediawiki.org/wiki/Manual:FAQ
 
* http://www.mediawiki.org/wiki/Manual:FAQ
 
* http://www.mediawiki.org/wiki/Manual_talk:$wgGroupPermissions
 
* http://www.mediawiki.org/wiki/Manual_talk:$wgGroupPermissions

Текущая версия на 14:57, 14 июля 2014

Tower of babel.png外國 language!
В статье используется несколько языков. Необходимо использовать один. Совсем неплохо, если это будет русский.

Содержание

[править] Установка

Конфигурационный файл Nginx для работы с MediaWiki через fast-cgi модуль php5:

[править] Кеширование и производительность

[править] Загрузка дополнительных типов файлов

LocalSettings.php

# Разрешить дополнительно загружать следующие типы файлов:
$wgStrictFileExtensions = false;
$wgFileExtensions[] = 'doc';
$wgFileExtensions[] = 'xls';
$wgFileExtensions[] = 'pdf';
$wgFileExtensions[] = 'odt';
$wgFileExtensions[] = 'ods';

[править] Внешний вид

[править] Как поменять шрифт по-умолчанию

add the following to your MediaWiki:Common.css page (NOTE: MediaWiki:Common.css is a page ON THE WIKI, such as mywiki.com/wiki/MediaWiki:Common.css. It is NOT in the filesystem. Chances are it doesn't exist yet, so you need to create it)

body { font-family: "Century Gothic", Arial, sans-serif; }

[править] How do I change the logo?

The logo that appears in the top left of each page is determined by the $wgLogo configuration line in the LocalSettings.php file.

There are two ways to change the logo:

Upload a picture to your wiki using the normal file uploading interface. This allows the logo to be replaced easily, so you may want to protect the page if you use this method.

Then add the $wgLogo line to LocalSettings.php, for example:

$wgLogo = 'http://www.example.com/wiki/images/6/62/photoname.jpg';

Or upload an image to your server by other means (such as FTP). Add the $wgLogo line to LocalSettings.php, for example:

$wgLogo = "{$wgScriptPath}/photoname.jpg";

In this example, the photo is in the same folder as the LocalSettings.php file.

Attention.pngВНИМАНИЕ!
Do not simply overwrite the default logo installed with MediaWiki (/skins/common/images/wiki.png); this file will be overwritten when you upgrade.

Tip: The logo image should be 135 x 135 pixels.

[править] Дополнения

[править] LDAP аутентификация

Для реализации LDAP аутентификации прежде всего надо скачать плагин по адресу http://www.mediawiki.org/wiki/Extension:LDAP_Authentication. Следуйте указаниям разработчика плагина для его распаковки. После его распаковки запустите update.php

# Run this from the top level of your MediaWiki installation directory
php maintenance/update.php

Далее отредактируйте файл $IP/LocalSettings.php

Параметр $wgLDAPUseLocal отвечает за возможность аутентификации локальным пользователем. Если нужно такую аутентификацию включить, значение должно быть true. По умолчанию параметр имеет значение false.

#Enable LDAP authentification
require_once( "$IP/extensions/LdapAuthentication/LdapAuthentication.php" );
$wgAuth = new LdapAuthenticationPlugin();

[править] Как включить аутентификацию через Active Directory?

  • Статья Extension:LDAP Authentication/AD Configuration Examples[1]

Чтобы включить аутентификацию через Microsoft Active Directory необходимо установить плагин Extension:LDAP Authentication/AD Configuration Examples[2] и добавить в Файл LocalSettings.php следующие строки:

# Active Directory Authentificetion
#In this example, we have an Active Directory (AD) server, and we will be doing straight binds to the directory
require_once( "$IP/extensions/LdapAuthentication/LdapAuthentication.php" );
$wgAuth = new LdapAuthenticationPlugin();
$wgLDAPDomainNames = array('local.example.com');
$wgLDAPServerNames = array('local.example.com' => 'local.example.com');
$wgLDAPSearchStrings = array('local.example.com' => 'LOCAL\\USER-NAME');
#$wgLDAPUseLocal=true;
#$wgLDAPEncryptionType = array('local.example.com' => 'clear');
$wgLDAPEncryptionType = array('local.example.com' => 'ssl');
$wgMinimalPasswordLength = 1;
#If you want to be able to pull preferences
$wgLDAPBaseDNs = array('local.example.com' => 'OU=Сотрудники,DC=local,DC=example,DC=com');
$wgLDAPSearchAttributes = array('local.example.com' => 'sAMAccountName');
#if your server doesn't allow anonymous searching (AD doesn't, normally)
$wgLDAPProxyAgent =  array('local.example.com' => 'CN=wiki,OU=Служебные,DC=local,DC=example,DC=com');
$wgLDAPProxyAgentPassword = array('local.example.com' => 'wiki_user_pwd');
#other
$wgLDAPLowerCaseUsername = array('local.example.com' => true);
$wgShowExceptionDetails = true;

Для включения лога отладки LDAP добавьте в LocalSettings.php нижеследующие строки. Файл будет лежать в корне wiki.example.com/debug.log:

#LDAP Debug
#$wgLDAPDebug = 3;
#$wgDebugLogGroups["ldap"] = "debug.log";

[править] Аутентификация через Communigate Pro

В случае, если в качестве сервера LDAP используется Communigate Pro, конфигурация должна выглядеть след. образом:

$wgLDAPDomainNames = array('CGDomain');
$wgLDAPServerNames = array('CGDomain' => 'CGDomain.example.com');
$wgLDAPSearchStrings = array('CGDomain' => 'uid=USER-NAME, cn=example.com');
$wgLDAPEncryptionType = array('CGDomain' => 'clear');
$wgMinimalPasswordLength = 1;
$wgLDAPSearchAttributes = array('CGDomain'=>'uid');
$wgLDAPBaseDNs = array('CGDomain' => 'dc=example,dc=com');
$wgLDAPLowerCaseUsername = array('CGDomain' => true);
$wgGroupPermissions['*']['createaccount'] = true;
$wgLDAPDebug = 10;
$wgShowExceptionDetails = true;

[править] Боремся со спамом

[править] Средства Apache

Создаем файл .htaccess, который заблокирует досуп браузерам/скриптам с пустой строчкой User-agent

SetEnvIf User-Agent ^$ spammer=yes     # block blank user agents

Order allow,deny
allow from all           
deny from env=spammer

[править] Средства MediaWiki

Мы используем следующую конструкцию, добавляем следующие параметры в LocalSettings.php:

$wgGroupPermissions['*']['edit'] = false;                                       
$wgGroupPermissions['*']['createpage'] = false;                                 
                                                                                
$wgGroupPermissions['user']['move']            = false;                         
$wgGroupPermissions['user']['read']            = true;                          
$wgGroupPermissions['user']['edit']            = true;                         
$wgGroupPermissions['user']['createpage']      = true;                         
$wgGroupPermissions['user']['createtalk']      = true;                          
$wgGroupPermissions['user']['upload']          = true;                         
$wgGroupPermissions['user']['reupload']        = true;                         
$wgGroupPermissions['user']['reupload-shared'] = true;                         
$wgGroupPermissions['user']['minoredit']       = true;                         
$wgGroupPermissions['user']['purge']           = false;                         
                                                                                
$wgGroupPermissions['sysop']['edit'] = true;                                    
$wgGroupPermissions['sysop']['createpage'] = true;     

[править] Блокировки по ip-адресам

[править] Подтверждение адреса электронной почты для редактирвоания статей

$wgEnableEmail         = true; // enable the e-mail basic features
$wgEmailAuthentication = true; // require email authentication for using any email function (except password reminder which works independently from this setting)
$wgEmailConfirmToEdit  = true; // Require a confirmed address to edit pages

[править] Дополнение SpamBlackList

[править] Дополнение ConfirmEdit

Скачиваем и устанавливаем дополнение. Чтобы скачать версию для PHP4 необходимо обратиться к SVN:

svn checkout -r 21970 http://svn.wikimedia.org/svnroot/mediawiki/trunk/extensions/ConfirmEdit/

Чтобы обойти глюк с сообщениями плагина (на китайском) надо добавить следующую строчку в конец файла ConfirmEdit.i18n.php:

$wgConfirmEditMessages['last'] = $wgConfirmEditMessages['ru'];

[править] Дополнение ConfirmAccount

Решить проблему с бесконтрольной регистрацией пачек спам-аккаунтов можно при помощи расширения ConfirmAccount.

Установка и настройка достаточно проста:

  • Скачать последнюю версию расширения по ссылке и разархивировать в папке с расширениями: http://www.mediawiki.org/wiki/Special:ExtensionDistributor/ConfirmAccount
  • Добавить в конфигурационный файл LocalSettings.php строку require_once("$IP/extensions/ConfirmAccount/ConfirmAccount.php");
  • Запустить в консоли в папке с установленной вики следующую команду php maintenance/update.php

Если в процессе установки вылезет ошибка: The last attempted database query was: "CREATE INDEX acr_email_token ON `account_requests` (acr_email_token)" from within function "DatabaseBase::sourceFile( /srv/www/vhosts/wiki.rsu.edu.ru/extensions/ConfirmAccount/ConfirmAccount.sql )". Database returned error "1170: BLOB/TEXT column 'acr_email' used in key specification without a key length (localhost)"

Необходимо вручную из БД MediaWiki удалить таблицу account_requests и поправить файл extensions/ConfirmAccount/ConfirmAccount.sql следующим образом.

Находим строку:

CREATE UNIQUE INDEX /*i*/acr_email ON /*_*/account_requests (acr_email(255));

И переносим ее следом за строкой:

CREATE INDEX /*i*/acr_type_del_reg ON /*_*/account_requests (acr_type,acr_deleted,acr_registration);

Снова запускаем php maintenance/update.php

В системе появится страница Служебная:ConfirmAccounts на которой можно будет отклонять или подключать новых пользователей системы.

[править] Дополнение UsabilityInitiative

Скачиваем отсюда http://www.mediawiki.org/wiki/Special:ExtensionDistributor/UsabilityInitiative

// UsabilityInitiative/Vector require_once("$IP/extensions/UsabilityInitiative/Vector/Vector.php");
$wgVectorModules['collapsiblenav']['global'] = true; // Turns on collapsible sidebar navigation by default
$wgVectorModules['editwarning']['global'] = false; // Don't enable EditWarning globally
$wgVectorModules['editwarning']['user'] = true; // Allow users to enable EditWarning in their preferences
$wgVectorUseSimpleSearch = true; // Need this as well for SimpleSearch 
$wgDefaultSkin = 'vector'; // If you want to change the default skin for new users 
$wgVectorUseIconWatch = true; //Enable star icon to add/remove page from watchlist // UsabilityInitiative/WikiEditor
require_once("$IP/extensions/UsabilityInitiative/WikiEditor/WikiEditor.php");
$wgDefaultUserOptions['wikieditor-highlight'] = 0;
$wgDefaultUserOptions['wikieditor-preview'] = 1;
$wgDefaultUserOptions['wikieditor-publish'] = 0;
$wgDefaultUserOptions['usenavigabletoc'] = 0; 
$wgDefaultUserOptions['wikieditor-template-editor'] = 0;
$wgDefaultUserOptions['usebetatoolbar'] = 1;
$wgDefaultUserOptions['usebetatoolbar-cgd'] = 1;

[править] Устранение неполадок

[править] "You have made too many recent login attempts"

Чтобы осуществить сброс заблокированных адресов перезагрузите web-серврер или процесс web-серврера, использующий PHP-FPM. [3]

[править] См. также

[править] Ссылки

  1. http://www.mediawiki.org/wiki/Extension:LDAP_Authentication/AD_Configuration_Examples
  2. http://www.mediawiki.org/wiki/Extension:LDAP_Authentication/AD_Configuration_Examples
  3. http://www.mediawiki.org/wiki/Thread:Project:Support_desk/%22You_have_made_too_many_recent_login_attempts%22
Личные инструменты
Пространства имён

Варианты
Действия
Навигация
Инструменты