Справка:Содержание — различия между версиями

Материал из wiki.tlib.ru
Перейти к: навигация, поиск
(Апгрейд движка)
 
(не показаны 38 промежуточных версий 3 участников)
Строка 2: Строка 2:
 
# Скачиваем новую версию движка.
 
# Скачиваем новую версию движка.
 
# Делаем на http-сервере копию папки с сайтом
 
# Делаем на http-сервере копию папки с сайтом
# Делаем на sql-сервере копию базы данных сайта
+
# Делаем на sql-сервере копию базы данных сайта. Не забываем дать права движку на эту БД.
# Копируем новую версию движка поверх копии сайта и запускаем апгрейд базы данных (из папки maintenance выполняем команду php update.php)
+
# Копируем новую версию движка поверх копии сайта  
# По очереди проверяем расширения и включаем их (работоспособность сайта, можно проверить, сделав временно под него виртуальный хост с записью его имени в /etc/hosts на своем терминале).
+
# В LocalSettings.php копии сайта прописываем вместо оригинальной бд её копию.
 +
# Запускаем апгрейд базы данных (из папки maintenance выполняем команду php update.php)
 +
# По очереди проверяем расширения и включаем их (работоспособность сайта можно проверить, сделав временно под него виртуальный хост с записью его имени в /etc/hosts на своем терминале).
 
# Переключаем сайт на новый движок
 
# Переключаем сайт на новый движок
 +
 +
==Подробная инструкция по апгрейду==
 +
# Сайт wiki.tlib.ru крутится на Mediawiki. Находится он в директории /var/www/mediawiki. Если забыл/не знал - смотри /etc/httpd.conf (искать нужный виртуальный хост и смотреть значение директивы Directory). Название базы указано в файле /var/www/Mediawiki/LocalSettings.php.
 +
# Новая версия Mediawiki обычно лежит по адресу http://www.mediawiki.org/wiki/Download Распаковка tar.gz-архива: <pre>tar xzf имя-архива.tar.gz</pre>
 +
# Для копирования папки можно применить следующую команду <pre>cp -r имя-папки имя-копии-папки</pre>
 +
# Для копирования базы данных можно применить следующие команды:
 +
> mysqldump -u db_user_name -h db_server_host -P db_server_port --password="db_user_password" db_name >wikitlib.sql
 +
> mysql -u user_name -p
 +
  % create database copyofwikitlibdb;
 +
  % GRANT ALL PRIVILEGES ON copyofwikitlibdb.* TO db_user_name@'localhost' identified by 'db_user_password';
 +
  % quit
 +
> mysql -u root -p copy_of_db < wikitlib.sql
 +
Есть и другие варианты, Ренат, см. инструкцию в Exchange.
 +
# В LocalSettings.php находим и правим след. строчку: <pre>$wgDBname          = "ИМЯ БАЗЫ ДАННЫХ";</pre> подставляем сюда имя копии базы данных. Проверяем, что пользователь $wgDBuser имеет к ней доступ.
 +
# Копируем файлы нового движка поверх копии сайта. Заходим в папку копии сайта / maintenance. Запускаем update.php для апдейта схемы БД.
 +
cp -r mediawiki-1.18 copy_of_wiki_tlib_folder
 +
cd /maintenance
 +
php update.php
 +
# Заходим на сайт. Если сайт упал, то заходим в LocalSettings.php и по очереди отключаем расширения. В конфиге это все строчки вида <pre>require_once("$IP/extensions/Cite/Cite.php");</pre>. Чтобы отключить расширение, нужно закомментировать строчку, например, так:<pre>//require_once("$IP/extensions/Cite/Cite.php");</pre>
 +
Находим комбинацию расширений, при которой сайт не падает. Лучше всего заходить при этом на страницы, где эти расширения применены, или в песочницу. Проверяем загрузку файлов. Проверяем создание нового пользователя.
 +
 +
===Перечень установленных расширений===
 +
<table border='1'>
 +
<tr><th>Расширение</th><th>Смысл</th></tr>
 +
<tr><td>ParserFunctions</td><td>Добавляет условные операторы к викитексту</td></tr>
 +
<tr><td>MediaFunctions</td><td>adds several parser functions to MediaWiki which provide access to properties and metadata of various media files in both local and remote repositories</td></tr>
 +
<tr><td>Variable</td><td>allows you to define a variable on a page, use it later in that same page or included templates, change its value, possibly to a value given by an expression in terms of the old value, etc.</td></tr>
 +
<tr><td>swf</td><td>Вставка swf-роликов</td></tr>
 +
<tr><td>PostForm</td><td>Отображение и отправка форм с сайта</td></tr>
 +
<tr><td>Popup</td><td>Вставка картинки - ссылки на попап с увеличенным изображением</td></tr>
 +
<tr><td>GalleryTable</td><td>Публикация картинок в виде галереи</td></tr>
 +
<tr><td>ImageReference</td><td>Картинка-ссылка (устаревший функционал) - нужно включать три файла: extensions/ImageLinkPF.php,ImageReference/ImageReference.php и  ImageReference/IRef</td></tr>
 +
<tr><td>Deleteuser</td><td>Спецстраница для удаления участников</td></tr>
 +
<tr><td>Cite</td><td>Добавляет теги <ref[ name=id]> и <references/> для сносок</td></tr>
 +
<tr><td>Lockdown</td><td>Права групп на пространства имен. <br />$wgGroupPermissions['*']['edit'] = true;<br />
 +
$wgNamespacePermissionLockdown['*']['edit'] = array('user');<br />
 +
$wgNamespacePermissionLockdown[NS_TALK]['edit'] = array('*');</td></tr>
 +
<tr><td>ConfirmEdit</td><td>Простая реализация CAPTCHA</td></tr>
 +
<tr><td>Google Maps</td><td>Нужно указывать GoogleMapsKey и дефолтные координаты в конфиге</td></tr>
 +
<tr><td>SimpleAntiSpam</td><td>Добавляет на форму простую проверку на спам и ботов</td></tr>
 +
</table>
 +
 +
Из установленных расширений ConfirmEdit и GoogleMaps в версии 1.17 конфликтуют, поэтому функциональность ConfirmEdit урезана. Это значит, что это расширение не вызывается при попытке сохранить исправленную страницу.
 +
Чтобы урезать функционал, нужно найти и исправить в файле /extensions/ConfirmEdit/ConfirmEdit.php следующий кусок кода:
 +
 +
<pre>
 +
$wgCaptchaTriggers = array();
 +
$wgCaptchaTriggers['edit']          = false; // Would check on every edit
 +
$wgCaptchaTriggers['create'] = false; // Check on page creation.
 +
$wgCaptchaTriggers['sendemail']    = false; // Special:Emailuser
 +
$wgCaptchaTriggers['addurl']        = false;  // Check on edits that add URLs
 +
$wgCaptchaTriggers['createaccount'] = true;  // Special:Userlogin&type=signup
 +
$wgCaptchaTriggers['badlogin']      = true;  // Special:Userlogin after failure
 +
</pre>
 +
 +
Также в настоящий момент не работает расширение одновременной загрузки нескольких файлов - MultipleUpload.
  
 
==Изменения, вносимые в движок==
 
==Изменения, вносимые в движок==
Строка 20: Строка 78:
 
  $text = strlen( trim( $oldtext ) ) > 0 ? "{$subject}{$text}\n\n{$oldtext}" : "{$subject}{$text}";
 
  $text = strlen( trim( $oldtext ) ) > 0 ? "{$subject}{$text}\n\n{$oldtext}" : "{$subject}{$text}";
 
  }
 
  }
 +
 +
==Особенности перехода с версии 1.17 на версию 1.18==
 +
# В LocatlSettings.php меняет тип кэширования с CACHE_ACCEL на CACHE_ANYTHING
 +
# Комментируем расширения MediaFunctions.php, DeleteUser.php, SimpleAntiSpam.php, GoogleMaps.php.
 +
# В файле /includes/ProfilerStub.php комментируем функции wfProfileIn и wfProfileOut.
 +
# В файле includes/upload/UploadBase.php комментируем 560-565 строчки (проверку на наличие дупликатов в архиве)
 +
# Если на линукс-машине вдруг не установлен apc, устанавливаем его так:
 +
<pre>
 +
yum groupinstall "Development Tools"
 +
yum install pcre_devel
 +
yum install php-devel
 +
pecl install apc
 +
</pre>
 +
При установке apc (последняя команда) будут запрошены установки. Можно их выбрать по умолчанию (т.е. все время жать Enter)

Текущая версия на 13:53, 8 июля 2013

Содержание

[править] Апгрейд движка

  1. Скачиваем новую версию движка.
  2. Делаем на http-сервере копию папки с сайтом
  3. Делаем на sql-сервере копию базы данных сайта. Не забываем дать права движку на эту БД.
  4. Копируем новую версию движка поверх копии сайта
  5. В LocalSettings.php копии сайта прописываем вместо оригинальной бд её копию.
  6. Запускаем апгрейд базы данных (из папки maintenance выполняем команду php update.php)
  7. По очереди проверяем расширения и включаем их (работоспособность сайта можно проверить, сделав временно под него виртуальный хост с записью его имени в /etc/hosts на своем терминале).
  8. Переключаем сайт на новый движок

[править] Подробная инструкция по апгрейду

  1. Сайт wiki.tlib.ru крутится на Mediawiki. Находится он в директории /var/www/mediawiki. Если забыл/не знал - смотри /etc/httpd.conf (искать нужный виртуальный хост и смотреть значение директивы Directory). Название базы указано в файле /var/www/Mediawiki/LocalSettings.php.
  2. Новая версия Mediawiki обычно лежит по адресу http://www.mediawiki.org/wiki/Download Распаковка tar.gz-архива:
    tar xzf имя-архива.tar.gz
  3. Для копирования папки можно применить следующую команду
    cp -r имя-папки имя-копии-папки
  4. Для копирования базы данных можно применить следующие команды:
> mysqldump -u db_user_name -h db_server_host -P db_server_port --password="db_user_password" db_name >wikitlib.sql
> mysql -u user_name -p
 % create database copyofwikitlibdb;
 % GRANT ALL PRIVILEGES ON copyofwikitlibdb.* TO db_user_name@'localhost' identified by 'db_user_password';
 % quit
> mysql -u root -p copy_of_db < wikitlib.sql 

Есть и другие варианты, Ренат, см. инструкцию в Exchange.

  1. В LocalSettings.php находим и правим след. строчку:
    $wgDBname           = "ИМЯ БАЗЫ ДАННЫХ";
    подставляем сюда имя копии базы данных. Проверяем, что пользователь $wgDBuser имеет к ней доступ.
  2. Копируем файлы нового движка поверх копии сайта. Заходим в папку копии сайта / maintenance. Запускаем update.php для апдейта схемы БД.
cp -r mediawiki-1.18 copy_of_wiki_tlib_folder
cd /maintenance
php update.php
  1. Заходим на сайт. Если сайт упал, то заходим в LocalSettings.php и по очереди отключаем расширения. В конфиге это все строчки вида
    require_once("$IP/extensions/Cite/Cite.php");
    . Чтобы отключить расширение, нужно закомментировать строчку, например, так:
    //require_once("$IP/extensions/Cite/Cite.php");

Находим комбинацию расширений, при которой сайт не падает. Лучше всего заходить при этом на страницы, где эти расширения применены, или в песочницу. Проверяем загрузку файлов. Проверяем создание нового пользователя.

[править] Перечень установленных расширений

РасширениеСмысл
ParserFunctionsДобавляет условные операторы к викитексту
MediaFunctionsadds several parser functions to MediaWiki which provide access to properties and metadata of various media files in both local and remote repositories
Variableallows you to define a variable on a page, use it later in that same page or included templates, change its value, possibly to a value given by an expression in terms of the old value, etc.
swfВставка swf-роликов
PostFormОтображение и отправка форм с сайта
PopupВставка картинки - ссылки на попап с увеличенным изображением
GalleryTableПубликация картинок в виде галереи
ImageReferenceКартинка-ссылка (устаревший функционал) - нужно включать три файла: extensions/ImageLinkPF.php,ImageReference/ImageReference.php и ImageReference/IRef
DeleteuserСпецстраница для удаления участников
CiteДобавляет теги <ref[ name=id]> и для сносок
LockdownПрава групп на пространства имен.
$wgGroupPermissions['*']['edit'] = true;

$wgNamespacePermissionLockdown['*']['edit'] = array('user');

$wgNamespacePermissionLockdown[NS_TALK]['edit'] = array('*');
ConfirmEditПростая реализация CAPTCHA
Google MapsНужно указывать GoogleMapsKey и дефолтные координаты в конфиге
SimpleAntiSpamДобавляет на форму простую проверку на спам и ботов

Из установленных расширений ConfirmEdit и GoogleMaps в версии 1.17 конфликтуют, поэтому функциональность ConfirmEdit урезана. Это значит, что это расширение не вызывается при попытке сохранить исправленную страницу. Чтобы урезать функционал, нужно найти и исправить в файле /extensions/ConfirmEdit/ConfirmEdit.php следующий кусок кода:

$wgCaptchaTriggers = array();
$wgCaptchaTriggers['edit']          = false; // Would check on every edit
$wgCaptchaTriggers['create']		= false; // Check on page creation.
$wgCaptchaTriggers['sendemail']     = false; // Special:Emailuser
$wgCaptchaTriggers['addurl']        = false;  // Check on edits that add URLs
$wgCaptchaTriggers['createaccount'] = true;  // Special:Userlogin&type=signup
$wgCaptchaTriggers['badlogin']      = true;  // Special:Userlogin after failure

Также в настоящий момент не работает расширение одновременной загрузки нескольких файлов - MultipleUpload.

[править] Изменения, вносимые в движок

[править] Создание новой секции сверху страницы при нажатии на плюсик

В файле includes/Article.php нужно найти и поправить след. строчку:

if ( $section == 'new' ) {
$subject = $summary ? wfMsgForContent( 'newsectionheaderdefaultlevel', $summary ) . "\n\n" : ;
/* //закомментировать этот кусок кода
$text = strlen( trim( $oldtext ) ) > 0
? "{$oldtext}\n\n{$subject}{$text}"
: "{$subject}{$text}";
*/
//вместо него добавить нижнюю строчку
$text = strlen( trim( $oldtext ) ) > 0 ? "{$subject}{$text}\n\n{$oldtext}" : "{$subject}{$text}";
}

[править] Особенности перехода с версии 1.17 на версию 1.18

  1. В LocatlSettings.php меняет тип кэширования с CACHE_ACCEL на CACHE_ANYTHING
  2. Комментируем расширения MediaFunctions.php, DeleteUser.php, SimpleAntiSpam.php, GoogleMaps.php.
  3. В файле /includes/ProfilerStub.php комментируем функции wfProfileIn и wfProfileOut.
  4. В файле includes/upload/UploadBase.php комментируем 560-565 строчки (проверку на наличие дупликатов в архиве)
  5. Если на линукс-машине вдруг не установлен apc, устанавливаем его так:
yum groupinstall "Development Tools"
yum install pcre_devel
yum install php-devel
pecl install apc

При установке apc (последняя команда) будут запрошены установки. Можно их выбрать по умолчанию (т.е. все время жать Enter)

Персональные инструменты
Пространства имён

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